了解用于 Java 批处理应用程序的 JNDI
Understanding JNDI for use with Java Batch Applications
我花了几天时间阅读 JNDI 如何使用它,我有几个问题我不是 100% 清楚。
背景:
我想配置一些独立的 Java 批处理程序,它们将使用 JNDI 从 Web 服务器检索属性 (Tomcat 7)。通过阅读,我的理解是可以通过在 server.xml
中指定项目来实现
<GlobalNamingResources>....</GlobalNamingResources>
测试:
到目前为止,我对此的测试是创建概念验证类型设置。我在 GlobalNamingResorces 中配置了一个 Tomcat 服务器,其中包含以下 属性。
<Environment name="testProp" value="Hello GlobalNamingResources"
type="java.lang.String" override="false"/>
我创建了一个简单的 Java 程序,它试图从 tomcat 中检索此 属性。这是失败的 javax.naming.NoInitialContextException 异常。
public static void main(String[] args) {
Properties props = new Properties();
props.setProperty("java.naming.provider.url", "http://localhost:9080");
try {
InitialContext initCtx = new InitialContext(props);
Context envCtx = (Context) initCtx.lookup("java:comp/env");
Object object = envCtx.lookup("testProp");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
谁能告诉我我想做的事情是否可行?
我是否在正确的轨道上完成这项工作?
对于初始上下文创建,这是需要在我的 Java 批处理中还是位于服务器上的东西?
不确定在 Tomcat 中是否可以远程访问 JNDI。如果 this 是最新的,那么显然不是。问题 "Can I access Tomcat's JNDI remotely" 可能比询问 Java 批次更好(如果我理解正确的话);您可能会得到更快的回复。
但是...由于您已经在使用 Tomcat,您可能会对即将发布的 TomEE 版本感兴趣,该版本针对 EE 7 支持,包括 Java 批处理支持。另一种选择是我开发的产品 WebSphere Liberty。
我花了几天时间阅读 JNDI 如何使用它,我有几个问题我不是 100% 清楚。
背景:
我想配置一些独立的 Java 批处理程序,它们将使用 JNDI 从 Web 服务器检索属性 (Tomcat 7)。通过阅读,我的理解是可以通过在 server.xml
中指定项目来实现<GlobalNamingResources>....</GlobalNamingResources>
测试:
到目前为止,我对此的测试是创建概念验证类型设置。我在 GlobalNamingResorces 中配置了一个 Tomcat 服务器,其中包含以下 属性。
<Environment name="testProp" value="Hello GlobalNamingResources"
type="java.lang.String" override="false"/>
我创建了一个简单的 Java 程序,它试图从 tomcat 中检索此 属性。这是失败的 javax.naming.NoInitialContextException 异常。
public static void main(String[] args) {
Properties props = new Properties();
props.setProperty("java.naming.provider.url", "http://localhost:9080");
try {
InitialContext initCtx = new InitialContext(props);
Context envCtx = (Context) initCtx.lookup("java:comp/env");
Object object = envCtx.lookup("testProp");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
谁能告诉我我想做的事情是否可行?
我是否在正确的轨道上完成这项工作?
对于初始上下文创建,这是需要在我的 Java 批处理中还是位于服务器上的东西?
不确定在 Tomcat 中是否可以远程访问 JNDI。如果 this 是最新的,那么显然不是。问题 "Can I access Tomcat's JNDI remotely" 可能比询问 Java 批次更好(如果我理解正确的话);您可能会得到更快的回复。
但是...由于您已经在使用 Tomcat,您可能会对即将发布的 TomEE 版本感兴趣,该版本针对 EE 7 支持,包括 Java 批处理支持。另一种选择是我开发的产品 WebSphere Liberty。