我无法在Glassfish中获得一些基本的JNDI配置。
我认为应该是一个简单的任务:在运行时,确定特定属性是否设置为true。我认为这是JNDI的一个很好的应用程序,但似乎无法在app服务器和我的servlet代码之间获得正确的路径。
以下是我在Glassfish中配置属性的方法:
在我的servlet代码中,我试图通过以下方式查找值:
Boolean enabled = (Boolean) ctx.lookup("java:global/arizona/quartz_enabled");
除了这条道路,我还尝试了以下方法但没有成功:
我的应用程序名为“arizona”,但如果重要,则部署到根上下文。
我确信这只是一个简单的问题,可以找到适当的名称空间来到达该物业,但我觉得我只是在黑暗中试图找到它。有没有一种简单的方法来浏览Glassfish中的JNDI树?
答案 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;
工作正常。