我的 EJB 应用程序从 JNDI 中查找一些配置值。我希望能够更改这些值并让应用程序立即注意到,而无需重新启动服务器或执行任何其他操作来触发它重新配置自身。
我的理解是,我应该实现 javax.naming.event.ObjectChangeListener
,从 JNDI 中查找 EventContext
或 EventDirContext
,然后调用它的 addNamingListener
方法来注册我的 ObjectChangeListener
。
要查找 EventContext 或 EventDirContext,我试过这个,网上有无数示例建议我这样做:
InitialContext ctx = new InitialContext();
EventContext eventContext = (EventContext) ctx.lookup("");
但是,这给了我一个 ClassCastException
:
java.lang.ClassCastException: com.sun.enterprise.naming.impl.SerialContext cannot be cast to javax.naming.event.EventContext
当我尝试转换为 EventDirContext
时,我也遇到了同样的错误。
我试图查找我使用的确切 JNDI 名称,而不是“”,以及“java:”、“java:comp”和“java:comp/env”。这些都返回无法转换为我需要的任何事件上下文的对象。
我使用的 JNDI 实现只是普通的 Glassfish 3.1.1。
是否可以监听 JNDI 事件,或者我应该考虑完全不同的方法吗?感谢任何建议。
最佳答案
GlassFish 3.1.2 不支持 JNDI 事件。
关于java - 在 Glassfish 上监听 JNDI 的变化——如何查找 EventContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7268160/