了解JNDI以与Java Batch Applications一起使用

时间:2015-08-13 15:21:13

标签: java tomcat jndi

我花了几天时间阅读JNDI如何使用它,我有几个问题,我不是100%明确的。

背景:

我想配置一些独立的Java Batch程序,它们将使用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 Batch中还是位于服务器上的东西?

1 个答案:

答案 0 :(得分:1)

不确定在Tomcat中是否可以远程访问JNDI。如果this是最新的,那么显然不是。问题“我可以远程访问Tomcat的JNDI”可能是一个更好的问题,而不是询问Java Batch(如果我理解正确的话);你可能会得到更快的回复。

但是......因为您已经在使用Tomcat,所以您可能会对即将发布的TomEE版本感兴趣,该版本针对EE 7支持,包括Java Batch支持。另一种选择是我工作的产品,WebSphere Liberty