使用Websphere在Java中读取环境变量

loo*_*ire 12 java websphere

我对Websphere应用服务器7.0(WAS7)和环境变量的阅读有一点问题.

使用TomCat,我已将变量定义为

<Environment name="myVar" type="java.lang.String" value="myVarOnServeur"
Run Code Online (Sandbox Code Playgroud)

我在initialContext上查找了它:

Context ctx = new InitialContext();
String myVar = (String) ctx.lookup( "java:comp/env/myVar" );
Run Code Online (Sandbox Code Playgroud)

它的工作原理!

但是使用Websphere,我在GUI上定义了一个环境变量,但我无法在我的java代码中读取它.我有一个NamingException.

http://fullahead.org/work/stackoverflow/was-environment-variables.png

我该怎么做才能解决我的问题?

Kal*_*ian 8

在web.xml中定义

<env-entry>
   <env-entry-name>varName</env-entry-name>
   <env-entry-value>56</env-entry-value>
   <env-entry-type>java.lang.String</env-entry-type>
</env-entry>
Run Code Online (Sandbox Code Playgroud)

用java看

Context envEntryContext = (Context) new InitialContext().lookup("java:comp/env");
String mydata = (String)envEntryContext.lookup("varName");
Run Code Online (Sandbox Code Playgroud)


小智 5

您在看错地方。

您应该在“环境”->“命名”->“名称空间绑定”->“新建”中添加变量。

如果选择绑定类型字符串,“绑定标识符”和“名称空间中的名称...” myVar,则可以使用以下方法获取变量的值:

Context ctx = new InitialContext();
String myVar = (String) ctx.lookup( "cell/persistent/myVar" );
Run Code Online (Sandbox Code Playgroud)


Tha*_*age 5

在 WebSphere 上遵循此设置

在 WAS 上遵循上述设置,其中 name 是您的键,value 是您的属性值。在我的示例中,我使用了名称:测试值:这是测试值。设置此值后,重新启动应用程序服务器。在您的 Java 代码调用 System.getProperty("TEST") 其中 test 是您的属性的名称,该值将显示


use*_*421 -3

我没有看到任何内容表明这些条目可以通过 ctx.lookup( "java:comp/env/..." ); 读取

  • 这是一个有价值的评论,但很难说是一个答案。 (9认同)
  • 如果原始问题没有任何解决方案,我可以同意,但因为至少提出了两种解决方案,其中之一涉及问题中提出的方法。再说一遍,这不是答案。 (5认同)