Glassfish中的JNDI配置/查找

时间:2011-03-11 21:56:59

标签: java-ee jndi

我无法在Glassfish中获得一些基本的JNDI配置。

我认为应该是一个简单的任务:在运行时,确定特定属性是否设置为true。我认为这是JNDI的一个很好的应用程序,但似乎无法在app服务器和我的servlet代码之间获得正确的路径。

以下是我在Glassfish中配置属性的方法:

enter image description here

在我的servlet代码中,我试图通过以下方式查找值:

Boolean enabled = (Boolean) ctx.lookup("java:global/arizona/quartz_enabled");

除了这条道路,我还尝试了以下方法但没有成功:

  • 的java:全球/亚利桑那/亚利桑那/ quartz_enabled
  • 的java:模块/亚利桑那/ quartz_enabled
  • 的java:模块/亚利桑那/亚利桑那/ quartz_enabled

我的应用程序名为“arizona”,但如果重要,则部署到根上下文。

我确信这只是一个简单的问题,可以找到适当的名称空间来到达该物业,但我觉得我只是在黑暗中试图找到它。有没有一种简单的方法来浏览Glassfish中的JNDI树?

3 个答案:

答案 0 :(得分:4)

查找在服务器中创建的JNDI资源时,它的JNDI名称正是您在服务器上输入的名称。 IE:

Boolean enabled =(Boolean)ctx.lookup(“arizona”);

有关JNDI名称的约定以及有关如何查找所有内容的一些示例代码,请参阅此页:

http://www.javaworld.com/javaworld/jw-01-2000/jw-01-howto.html

答案 1 :(得分:1)

在类似的情况下,我只是放置一个断点,其中对象(在这种情况下为InitialContext)被实例化并在之后进行评估。 IntelliJ IDEA有nice evaluator,不确定其他可以说是劣等的IDE。

顺便说一句,所有Java EE绑定的正确前缀是java:comp/env/,例如java:comp/env/arizona/quartz_enabled

您可能还想查看this resource

答案 2 :(得分:1)

我无法使用javax.naming.InitialContext#lookup,但使用

注入资源
@Resource(name = "arizona/quartz_enabled")
private Boolean enabled;

工作正常。