我的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事件,还是应该考虑采用不同的方法?感谢任何建议。
答案 0 :(得分:0)
GlassFish 3.1.2中不支持JNDI事件。