[jboss-user] [Management, JMX/JBoss] - Class loader probelm

xaleyba do-not-reply at jboss.com
Mon Mar 12 04:53:25 EDT 2007


Hi

I've a simple service that I use to start a JMS ActiveMQ broker configured in this way:


  | 
  | <mbean code="com.xx.activemq.mbean.service.ActiveMQNetwork"
  | 	       name="jms.ActiveMQ:service=ActiveMQNetwork">
  |         <attribute name="PropertiesResource">remote-jndi.properties</attribute>
  |         <attribute name="MasterPropertiesResource">masterbroker.properties</attribute>
  |         <attribute name="SlavePropertiesResource">slavebroker.properties</attribute>
  |         <depends>jboss:service=Naming</depends>
  |         <depends>user:service=QuartzService,name=QuartzService</depends>
  |     </mbean>
  | 
  |     <!-- Proxy factory for MyService that will call target method on the target service -->
  |    <mbean code="org.jboss.invocation.jrmp.server.JRMPProxyFactory"
  |       name="jboss.jmx:type=adaptor,name=MyActiveMQNetworkInvokeTarget,protocol=jrmp,service=proxyFactory">
  |       <!-- Use the standard JRMPInvoker from conf/jboss-service.xxml -->
  |       <depends optional-attribute-name="InvokerName">jboss:service=invoker,type=jrmp</depends>
  |       <!-- The target MBean -->
  |       <depends optional-attribute-name="TargetName">jms.ActiveMQ:service=ActiveMQNetwork</depends>
  |       <!-- Where to bind the proxy factory -->
  |       <attribute name="JndiName">MyActiveMQNetworkInvokeTarget</attribute>
  |       <!-- Invoke target method instead of invoke(Invocation mi) -->
  |       <attribute name="InvokeTargetMethod">true</attribute>
  |       <!-- Comma-separated list of exported interfaces -->
  |       <attribute name="ExportedInterfaces">com.bs.activemq.mbean.service.ActiveMQNetworkMBean</attribute>
  |       <!-- client-side interceptors -->
  |       <attribute name="ClientInterceptors">
  |           <interceptors>
  |              <interceptor>org.jboss.proxy.ClientMethodInterceptor</interceptor>
  |              <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor>
  |              <interceptor>org.jboss.jmx.connector.invoker.client.InvokerAdaptorClientInterceptor</interceptor>
  |              <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
  |           </interceptors>
  |       </attribute>
  |    </mbean>
  | 
  | 

My application works very well till yesterday when I installed a new webapp that use Spring. As my JBoss service use Spring too, it started to generate problems.

So, I need to isolate class loading in my service and I did it adding the following to jboss-service.xml file:


  | 
  | <server>
  |         <loader-repository>
  |                 com.notifications.broker:loader=activemq-broker-service.sar
  |                 <loader-repository-config>java2ParentDelegation=false</loader-repository-config>
  |         </loader-repository>
  | 
  | 

It worked well to solve my Spring problem but now I've a new problem. I got the error:


  | 
  | 09:13:32,429 INFO  [NamingService] Started jndi bootstrap jnpPort=1099, rmiPort=1098, backlog=50, bindAddress=/0.0.0.0, Client SocketFactory=null, Server SocketFactory=org.jboss.net.sockets.DefaultSocketFactory at ad093076
  | 09:13:35,895 INFO  [ServiceConfigurator] Problem configuring service jboss.jmx:type=adaptor,name=MyActiveMQNetworkInvokeTarget,protocol=jrmp,service=proxyFactory
  | java.lang.IllegalArgumentException: Failed to find class: com.xx.activemq.mbean.service.ActiveMQNetworkMBean
  |         at org.jboss.util.propertyeditor.ClassArrayEditor.setAsText(ClassArrayEditor.java:38)
  |         at org.jboss.system.ServiceConfigurator.parseTextSerialData(ServiceConfigurator.java:541)
  |         at org.jboss.system.ServiceConfigurator.configure(ServiceConfigurator.java:311)
  |         at org.jboss.system.ServiceConfigurator.internalInstall(ServiceConfigurator.java:442)
  |         at org.jboss.system.ServiceConfigurator.install(ServiceConfigurator.java:153)
  |         at org.jboss.system.ServiceController.install(ServiceController.java:215)
  |         at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
  |         at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
  |         at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
  |         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
  |         at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
  |         at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
  |         at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
  |         at $Proxy4.install(Lorg.w3c.dom.Element;Ljavax.management.ObjectName;)Ljava.util.List;(Unknown Source)
  |         at org.jboss.deployment.SARDeployer.create(SARDeployer.java:232)
  |         at org.jboss.deployment.MainDeployer.create(MainDeployer.java:935)
  |         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:789)
  |         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:753)
  |         at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
  |         at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
  |         at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
  |         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
  |         at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:118)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
  |         at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
  | 
  | 
  | ----
  | 
  | --- MBeans waiting for other MBeans ---
  | ObjectName: jboss.jmx:type=adaptor,name=MyActiveMQNetworkInvokeTarget,protocol=jrmp,service=proxyFactory
  |   State: FAILED
  |   Reason: java.lang.IllegalArgumentException: Failed to find class: com.xx.activemq.mbean.service.ActiveMQNetworkMBean
  |   I Depend On:
  |     jboss:service=invoker,type=jrmp
  |     jms.ActiveMQ:service=ActiveMQNetwork
  | 
  | --- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
  | ObjectName: jboss.jmx:type=adaptor,name=MyActiveMQNetworkInvokeTarget,protocol=jrmp,service=proxyFactory
  |   State: FAILED
  |   Reason: java.lang.IllegalArgumentException: Failed to find class: com.xx.activemq.mbean.service.ActiveMQNetworkMBean
  |   I Depend On:
  |     jboss:service=invoker,type=jrmp
  |     jms.ActiveMQ:service=ActiveMQNetwork
  | 
  | 


I understand that proxyFactory could not load my service classes because class loaders isolation but, how could I solve it ?


Thanks in advance

C



View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4027083#4027083

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4027083



More information about the jboss-user mailing list