使用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常量。 请参阅字符串绑定设置
在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”)