1

我们正在将 JBOSS 从 4.0.3SP1 迁移到 Wildfly 10.1.0。我们的应用程序捆绑在单独的 sars 中,其中包含标准和动态 bean

我们收到由“java.lang.ClassNotFoundException:com.xxx.ccr.common.adapter.PEAdapterLCM”引起的“javax.management.ReflectionException:默认加载器存储库无法加载 MBean 类”异常。最后添加堆栈跟踪。PEAdapter 类是一个动态 MBean,存在于 /opt/coreservices/wildfly-10.1.0.Final/modules 下公共模块的其中一个 jar 中。

我们正在使用standalone-full.xml 来启动我们的 Wildfly 实例 (ccr2)

[root@puiqr710dev08 CCR]# ps -eaf|grep ccr2

xxxiq 28948 7529 21 15:17?00:07:10 /opt/Xxx/CCR/jre/bin/java -verbose:class -Ddss.port=31002 -DCONTAINER_UUID=14132c5860baba870160bac5d84e084a -Dlcm.host= xxx.xxxx.xxx.xxx -server -XX:NewRatio= 1 -XX:+UseG1GC -XX:+UseLargePages -XX:MaxGCPauseMillis=1000 -XX:GCTimeRatio=10 -XX:+DisableExplicitGC -Dsun.nio.ch.disableSystemWideOverlappingFileLockCheck=true -Ddss.thread_pool_size=24 -Xss250k -Xms256m -Xmx4096m -DUSE_DELAY1=60000 -DUSE_DELAY2=60000 -Dlog4j.configuration=file:/opt/Xxx/CCR/appserver/jboss-boot.log4j.properties -DLOG_FILE_PREFIX=DataProcessingJBoss_puiqdevdads07 -Ddss.message_lifetime=180 -Djava.awt.headless=true - Dorg.jboss.logging.Log4jService.catchSystemErr=false -classpath /opt/Xxx/CCR/jre/lib/tools.jar -jar /opt/coreservices/wildfly-10.1.0.Final/jboss-modules.jar -mp /选择/核心服务/wildfly-10.1.0。

· 我们在这个实例中部署了四个 sars。所有 sars 部署成功。· 我们将sars打包如下:

--lib (包含所有罐子)

--META-INF

|--jboss-deployment-structure.xml

|--jboss-service.xml

· 每个 sar 都包含一些标准 MBean 和少量动态 MBean。

· 我们在 jboss-services.xml 中定义了标准 MBean。它们被正确创建并且可以在 JConsole 中看到。

· 我们不能在 jboss-service.xml 中包含动态 MBean 的定义,因为它们的名称是在运行时构建的。

· 我们得到ClassNotFoundException 的PEAdapterLCM 是一个动态bean,我们得到所有动态MBean 的这个错误。

· 我们为 JBOSS 4.0.3SP1 中“server/lib”文件夹中的所有常见 jar 创建了模块。

我们尝试以下修复此错误但没有运气:

1) 将所有 sar 的内容打包在一个 sar 中并部署。

2) 在standalone-full.xml 中添加了一个包含动态MBean 的全局模块条目。

3) 在 jboss-service.xml 中添加了动态 MBean 的定义(只是看看这是否有什么不同)。通过这一更改,我们能够在 JConsole 中看到 MBean。但仍然得到同样的错误。

那么应该做些什么来解决这个错误。是否有任何更改 - 如何在 Wildfly 中实现和部署动态 MBean?

在 Wildfly 中有什么方法可以在启动 Wildfly 时明确提及 MBean 服务器类,就像在 JBOSS 4.0.3SP1 中使用“-Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl - Djboss.platform.mbeanserver -Dcom.sun.management.jmxremote"

这是完整的堆栈跟踪:

^[[0m^[[31m15:01:30,324 错误 [com.xxx.coreservice.lifecycle.jmx.PEController](MSC 服务线程 1-6)PEController 中的异常:PEControllerJmxJBossService 为 peID 14132c58609742440160974fe69307e0 启动::javax.management.ReflectionException : com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.createMBean(DefaultMBeanServerInterceptor.java:268) 处的默认加载器存储库无法加载 MBean 类) 在 com.sun.jmx.mbeanserver.JmxMBeanServer.createMBean(JmxMBeanServer.java:326) 在 com.avaya.lifecycle.jmx.agent 的 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.createMBean(DefaultMBeanServerInterceptor.java:206)。 com 上的 PEControllerJmx._start(PEControllerJmx.java:55)。xxx.coreservice.lifecycle.jmx.PEController.start(PEController.java:397) 在 com.xxx.coreservice.lifecycle.jmx.PEController.startAll(PEController.java:314) 在 com.xxx.coreservice.lifecycle.jmx。 PEController.startup(PEController.java:238) 在 com.xxx.coreservice.lifecycle.jmx.PEController.postRegister(PEController.java:700) 在 com.sun.jmx.mbeanserver.MBeanSupport.postRegister(MBeanSupport.java:182)在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.postRegister(DefaultMBeanServerInterceptor.java:1024) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:974) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject (DefaultMBeanServerInterceptor.java:900) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor。registerMBean(DefaultMBeanServerInterceptor.java:324) at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522) at org.jboss.as.jmx.PluggableMBeanServerImpl$TcclMBeanServer.registerMBean(PluggableMBeanServerImpl.java:1527) at org .jboss.as.jmx.PluggableMBeanServerImpl.registerMBean(PluggableMBeanServerImpl.java:871) 在 org.jboss.as.jmx.MBeanRegistrationService.start(MBeanRegistrationService.java:101) 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.startService (ServiceControllerImpl.java:1948) 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util。 concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 引起:java.lang.ClassNotFoundException: com.xxx.ccr.common.adapter.PEAdapterLCM 在 com.sun.jmx.mbeanserver.ClassLoaderRepositorySupport.loadClass( ClassLoaderRepositorySupport.java:232)

提前感谢您的帮助。

4

0 回答 0