【问题标题】:Understanding JNDI for use with Java Batch Applications了解用于 Java 批处理应用程序的 JNDI
【发布时间】:2015-08-13 15:21:13
【问题描述】:

我花了几天时间阅读 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 中还是位于服务器上的东西?

【问题讨论】:

  • 不确定这在 Tomcat 中是否可行。

标签: java tomcat jndi


【解决方案1】:

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

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

【讨论】:

  • 是的,你是对的,这在 Tomcat 中是不可能的。我能够完成这项工作的唯一方法是使用替代服务器部署。我最终使用了Wildfly。 Tomcat 是首选,因为它是我们已经使用的服务器类型
  • 很高兴听到。我没有完全遵循版本控制,但我认为 TomEE 2.0.0 将包含 BatchEE(因此支持 Batch)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
  • 2020-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多