我的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事件,或者我是否应该考虑完全不同的方法?感谢您的建议。
发布于 2012-06-12 04:02:44
GlassFish 3.1.2不支持JNDI事件。
https://stackoverflow.com/questions/7268160
复制相似问题