我熟悉Jboss 7 我正在编写一些应用程序来试用技术。
所以我想提供一些简单的监控服务,让我可以对商业方法做一些反击
我想通过jmx
和jndi
访问计数器
'柜台服务'是jmx bean的一部分。在jmx
注册期间,它也会在jndi context
中注册
然后它被用在一些拦截器中。
这里出现问题,当我想从jndi获得引用时,我得到了类转换异常。
java.lang.ClassCastException: com.cybercom.pl.jbmon.SystemMonitorService cannot be cast to com.cybercom.pl.jbmon.SystemMonitorService
我相信的原因是,类加载器是不同的。
在服务启动期间,它是:
ModuleClassLoader for Module "org.jboss.as.standalone:main" from local module loader @a4d593 ....
执行期间:
ModuleClassLoader for Module "deployment.jboss-mon-app.ear.jboss-mon-web.war:main" from Service Module Loader
JMX beans ,监控服务和拦截器存在于同一个ejb模块中。
我终于为此做了解决方法,而不是通过jndi我使用了jmx客户端(https://github.com/michaljedryszka/jboss-sample-monitoring/commit/dcc4f05a4d6d50e592f0517bfe0454033f8e3659)
但我仍然不知道如何使用jndi查找修复该CCE。
你能提出什么建议?
此致
答案 0 :(得分:0)
您可以尝试create and install JBoss module使用属于 JMX mbeans 的类。这将导致加载到同一个类加载器中以进行所有访问
必须将依赖项添加到应用程序中的新模块后,例如,您可以使用jboss-deployment-structure.xml
文件。