[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