问题1
Is it possible to set the DocStorageLocation differently for both
applications?
我不认为这是可能的. Websphere的环境变量意味着服务器本身使用.变量只有三个可能的范围,即服务器,集群和节点.
例如,server1上的ORACLE_JDBC_DRIVER_PATH环境变量,node1作用域可用于node1上的JDBC提供程序(classPath = ${ORACLE_JDBC_DRIVER_PATH} /ojdbc14.jar).
问题是:“为什么我不能只为我的应用程序设置不同的值”?但我的猜测是,只要启动服务器,集群和节点,为已部署的应用程序覆盖此值就没有意义.
虽然我认为这是不可能的,但我仍然尝试过.但我没有设法覆盖为websphere服务器设置的环境变量.
问题2
Alternatively, is there another way of configuring multiple
applications running on the same server?
环境进入
您可以在web.xml部署描述符中添加一个环境条目,这是您可以查找的变量.
DocStorageLocation
java.lang.String
C:/DocStorage
然后测试,在java类中查找这个变量:
//TEST
Object l_test = null;
try {
Context l_ctx = new InitialContext();
l_test = l_ctx.lookup("java:comp/env/DocStorageLocation");
} catch (NamingException e1) {
// TODO
e1.printStackTrace();
}
.properties文件的URL ressource
您可以创建URL资源.它将链接到本地主机或任何服务器上的.properties文件集,因此可以根据环境将每个属性设置为不同的值.
例如,JNDI名称url / environmentJndiName在server1上具有值file:///server1/environment.properties,在server2上具有file:///server2/environment.properties.
然后在服务器1上,您可以在environment.properties文件中设置docStorageLocation = value1,在server2上设置docStorageLocation = value2.
在部署描述符web.xml中,ressource的引用将是相同的.您不必在java源代码中更改此引用:
url/environment
java.net.URL
Application
Shareable
然后使用此ressource来读取属性.
try {
Context l_ctx = new InitialContext();
URL l_url = (URL) l_ctx.lookup("java:comp/env/url/environment");
// New properties
Properties l_properties = new Properties();
// Load properties
this.loadProps(l_properties, l_url.getPath());
} catch (NamingException e1) {
// TODO
e1.printStackTrace();
} catch (IOException e) {
// TODO Bloc catch auto-généré
e.printStackTrace();
}
...
private void loadProps(final Properties p_properties, final String p_fileLocation)
throws IOException
{
// Open stream
BufferedInputStream l_is = new BufferedInputStream(
new FileInputStream(
new File(p_fileLocation)));
p_properties.load(l_is);
// Close stream
l_is.close();
}
您需要将web.xml的ressource引用url / environment绑定到在websphere服务器上为此ressource设置的JNDI名称url / environmentJndiName.使用websphere修改ibm-web-bnd.xml文件,使用glassfish修改sun-web.xml文件等.
谢谢
如果有更好的解决方案,或者它没有回答问题,请告诉我.我还在学习,但我一直在使用websphere一段时间 – 即使我更喜欢其他解决方案.谢谢, @ .