2012-07-31 112 views
0

在我的Groovy脚本我有这样的代码:如何将属性设置为可从Java代码执行的Groovy脚本?

def username = System.getenv()['USER'] 
def password = System.getenv()['PASS'] 

那是因为我不能使用这些信息作为参数传递给Groovy脚本,因为其他用户不应该知道这一点。当我运行这个脚本时,我在我的系统中设置了这个参数。现在我有一个问题。我有一个远程运行Groovy脚本的Java应用程序。有什么方法可以在Java代码中设置环境变量? (Here我发现这是不可能的)。或者是否有一些安全的方法将这些属性从Java发送到Groovy?

+0

你是什么意思由_“......哪些远程运行groovy脚本”_? Java如何运行groovy脚本?另外,在系统环境中设置用户名/密码意味着您一次只能运行一个用户? – 2012-07-31 10:21:55

+0

看这里:http://stackoverflow.com/questions/11155799/how-to-get-output-of-groovy-script-in-java我有这个代码的应用程序服务器上的web应用程序 – hudi 2012-07-31 10:24:08

+0

所以...你'那么,你只是在运行它... – 2012-07-31 10:31:13

回答

1

如果你推出由Runtime.exec(或类似)的最小公分母Groovy脚本,那么您可以在one of the overloaded methods指定环境:

与一个单独的进程中执行指定的字符串命令指定的环境。

...

envp - 字符串数组,其中的每个元素具有在格式名=值环境变量的设置,或者为null如果子进程应该继承当前进程的环境。

如果另一方面您在同一个Java进程中调用Groovy脚本,那么它将具有与正在运行的进程相同的属性。因此,在调用Groovy脚本之前调用System.setProperty("USER", xxx)将意味着您的Groovy逻辑可以看到该属性。


你应该注意的是,环境是操作系统级别的东西;该进程正在运行的操作系统的属性的度量。

如果您正在寻找应用程序级别的设置,那么您确实应该检查System.properties

+0

我尝试使用:System.setProperty然后调用这个变量:System.getenv()['USER'] 但没有成功 – hudi 2012-08-01 09:15:34

+0

@hudi - 只是注意到你正在检查应用程序设置的*环境*。这基本上不是正确的做法,您应该检查*系统属性*。 (环境基本上是“Windows如何设置的?”,这可以理解为不能被应用程序修改。) – 2012-08-01 09:40:24

+0

我不能使用systemProperty,因为在文章中我提到我的问题是写在那么这些可以用命令行设置为:-Dpropertyname = value我不想要的东西 – hudi 2012-08-01 09:57:59