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

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

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

<Environment name="myVar" type="java.lang.String" value="myVarOnServeur" 

我在initialContext上查找了它:

 Context ctx = new InitialContext(); String myVar = (String) ctx.lookup( "java:comp/env/myVar" ); 

它的工作原理!

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

http://sofzh.miximages.com/java/was-environment-variables.png

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

我没有看到任何说那些条目可以通过ctx.lookup读取(“java:comp / env / …”);

在web.xml中定义

  varName 56 java.lang.String  

用java看

 Context envEntryContext = (Context) new InitialContext().lookup("java:comp/env"); String mydata = (String)envEntryContext.lookup("varName"); 

您可以在web.xml文件中放置类似下面的内容,该文件应位于应用程序的WEB-INF目录中:

  myVar java.lang.String myVarOnServeur  

顺便说一下,这是一种标准语法,应该适用于所有应用程序服务器。 我正在将它与WebSphere,JBoss和WebLogic一起使用。 它可以像您在示例中一样完全查询。

如果您想要定义和管理自己的变量,请查看Environment-> Naming-> Name space bindings。 您可以将jndi名称绑定到String常量。 请参阅字符串绑定设置

在WebSphere上遵循此设置

在WAS上按照上面的设置,其中name是您的密钥,value是您的属性值。 在我的例子中,我使用Name:Test Value:这是测试值。 设置此值后,重新启动应用程序服务器。 在您的Java代码上调用System.getProperty(“TEST”),其中test是您的属性的名称,值将显示

您应该能够通过WebSphere的AdminOperations MBean解决这些问题:

 //sample code from WAS 7 Infocenter private String expandVariable(String s) throws javax.management.JMException { com.ibm.websphere.management.AdminService as = com.ibm.websphere.management.AdminServiceFactory.getAdminService(); String server = as.getProcessName(); String mBeanName = "*:*,type=AdminOperations,process=" + server; java.util.Set result = as.queryNames( new javax.management.ObjectName(mBeanName) , null); return (String) as.invoke((javax.management.ObjectName) result.iterator().next(), "expandVariable", new Object[]{"${"+s+"}"}, new String[]{"java.lang.String"}); } 

请参阅创建,编辑和删除WebSphere变量 。

你看错了地方。

您应该在Environment-> Naming-> Name space bindings-> New中添加变量。

如果选择Binding type String,“Binding identifier”和“Name in namespace …”myVar,您可以使用以下命令获取变量的值:

 Context ctx = new InitialContext(); String myVar = (String) ctx.lookup( "cell/persistent/myVar" ); 

Websphere 7.0 – 8.5

设置变量管理控制台—> Websphere应用服务器—–> Your_sever_name —> Java和进程管理—>进程定义 – > Java虚拟机 – >自定义属性

在Java System.getProperty中获取值(“Your_Variable”)