How to do a scoped deployment that contains aspects?
ovidiu.feodorov Jul 4, 2005 1:18 AMIs there any documentation on how to do a scoped .SAR deployment that contains aspects?
I am trying to do a scoped .sar deployment that contains in root a jms-aop.xml file and a modified version of jboss-remoting.jar. I deploy the SAR into a JBoss 4.0.2 instance that already contains the standard default/deploy/jboss-aop.deployer AOP deployer and AspectManager instances.
The aspects seem to load correctly, but when I am trying make a remote invocation on the scoped Connector, I get this:
19:04:52,546 DEBUG [ServerThread] failed to process invocation. java.lang.ClassNotFoundException: No ClassLoaders found for: org.jboss.remoting.InvokerLocator at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:198) at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:475) at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:377) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:219) at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:558) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324) at org.jboss.aop.metadata.SimpleMetaData.readExternal(SimpleMetaData.java:228) at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1686) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1644) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324) at org.jboss.aop.joinpoint.MethodInvocation.readExternal(MethodInvocation.java:232) at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1686) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1644) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324) at org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.read(SerializableUnMarshaller.java:73) at org.jboss.invocation.unified.marshall.InvocationUnMarshaller.read(InvocationUnMarshaller.java:32) at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:231) at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:277) at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:168)
It seems logical, the AOP deployment's UCL cannot load remoting classes, which are scoped.
So, in order to get this running, I tried to include everything AOP in the same class loading domain, but it doesn't work: AspectManager.instance().getContainer("myname") returns null.
This is my jboss-service.xml deployment descriptor:
<?xml version="1.0" encoding="UTF-8"?> <server> <loader-repository>jboss.messaging:name=loader-repository</loader-repository> <mbean code="org.jboss.jms.server.ServerPeer" name="jboss.messaging:service=ServerPeer" xmbean-dd="xmdesc/ServerPeer-xmbean.xml"> <depends optional-attribute-name="Connector">jboss.messaging:dependency=remoting,service=Connector,transport=socket</depends> </mbean> <mbean code="org.jboss.aop.deployment.AspectManagerService" name="jboss.messaging:dependency=aop,service=AspectManager"> <attribute name="EnableTransformer">false</attribute> <attribute name="SuppressTransformationErrors">true</attribute> <attribute name="Optimized">true</attribute> <attribute name="Verbose">false</attribute> </mbean> <mbean code="org.jboss.aop.deployment.AspectDeployer" name="jboss.messaging:dependency=aop,service=AspectDeployer"> </mbean> <mbean code="org.jboss.remoting.transport.Connector" xmbean-dd="org/jboss/remoting/transport/Connector.xml" name="jboss.messaging:dependency=remoting,service=Connector,transport=socket" display-name="Socket transport Connector"> <attribute name="Configuration"> <config> <invoker transport="socket"> <attribute name="dataType" isParam="true">invocation</attribute> <attribute name="marshaller" isParam="true">org.jboss.invocation.unified.marshall.InvocationMarshaller</attribute> <attribute name="unmarshaller" isParam="true">org.jboss.invocation.unified.marshall.InvocationUnMarshaller</attribute> <attribute name="serverBindAddress">${jboss.bind.address}</attribute> <attribute name="serverBindPort">4447</attribute> </invoker> <handlers> <handler subsystem="placeholder">org.jboss.jms.client.remoting.ServerInvocationHandlerImpl</handler> </handlers> </config> </attribute> <depends>jboss.messaging:dependency=remoting,service=NetworkRegistry</depends> <depends>jboss.messaging:dependency=aop,service=AspectDeployer</depends> </mbean> <mbean code="org.jboss.remoting.network.NetworkRegistry" name="jboss.messaging:dependency=remoting,service=NetworkRegistry"/> </server>
The sar archive contains jms-aop.xml, jboss-remoting.jar and jboss-aop.jar.