监听 Glassfish 上 JNDI 的变化 ߝ如何查找EventContext?
我的 EJB 应用程序从 JNDI 查找一些配置值。我希望能够更改这些值并让应用程序立即注意到,而无需重新启动服务器或执行任何其他操作来触发它重新配置自身。
我的理解是,我应该实现 javax.naming.event.ObjectChangeListener
,从 JNDI 查找 EventContext
或 EventDirContext
,然后调用其 < code>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 事件,或者我应该考虑完全不同的方法?感谢任何建议。
My EJB application looks up some configuration values from JNDI. I would like to be able to change these values and have the application take notice immediately, without having to restart the server or do anything else to trigger it to reconfigure itself.
My understanding is that I should implement javax.naming.event.ObjectChangeListener
, look up an EventContext
or EventDirContext
from JNDI, and then call its addNamingListener
method to register my ObjectChangeListener
.
To look up the EventContext or EventDirContext, I've tried this, which numerable examples online advised me to:
InitialContext ctx = new InitialContext();
EventContext eventContext = (EventContext) ctx.lookup("");
However, this gives me a ClassCastException
:
java.lang.ClassCastException: com.sun.enterprise.naming.impl.SerialContext cannot be cast to javax.naming.event.EventContext
I also get the equivalent error when I try to cast to EventDirContext
.
Instead of "", I have tried to look up the exact JNDI names I use, as well as "java:", "java:comp", and "java:comp/env". These all return Objects which cannot be cast to any of the event contexts I need.
The JNDI implementation I use is just stock Glassfish 3.1.1.
Is it possible to listen for JNDI events, or should I consider a different approach altogether? Appreciate any suggestions.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
GlassFish 3.1.2 不支持 JNDI 事件。
JNDI event is not supported in GlassFish 3.1.2.