-
1. Re: Writing my own Interceptor - cannot deploy
juha Mar 17, 2004 5:34 PM (in response to davetron5000)just put it into a jar and into the config/lib directory
-
2. Re: Writing my own Interceptor - cannot deploy
davetron5000 Mar 18, 2004 12:35 PM (in response to davetron5000)Unless I totally misunderstood you, that didn't work. Here's what I did:
put my class in a JAR file.
Put that jar file in $JBOSS_HOME/server/default/lib (I'm using the defualt server)
restart server
I get the same error message.
Then, I move the jar into $JBOSS_HOME/lib
I then get the error:
No classloader found for <<my class>>
Seems that putting it in $JBOSS_HOME/server/default/lib is more correct, because it can at least begin to load my class. Recall, the class it seems unable to find is not my class, but org.jboss.ejb.plugins.AbstractInterceptor (or some class it implements)
Is there anything I can do to get some debug information or an error message? -
3. Re: Writing my own Interceptor - cannot deploy
adrian.brock Mar 18, 2004 2:37 PM (in response to davetron5000)Post some details. e.g. the full stacktrace
This is a "It does not work post", a single line error message without context is useless.
My guess is that you've added the interceptor class to the classpath.
What other changes have you made to the configuration?
Regards,
Adrian -
4. Re: Writing my own Interceptor - cannot deploy
davetron5000 Mar 19, 2004 11:45 AM (in response to davetron5000)OK, I didn't include the details hoping it was an obvious mistake. Stacktrace is below.
server/default/standardjboss.xml contains the default stuff, except for the following stanza (to which I added one line):<container-configuration> <container-name>Standard Stateless SessionBean</container-name> <call-logging>false</call-logging> <invoker-proxy-binding-name>stateless-rmi-invoker</invoker-proxy-binding-name> <container-interceptors> <interceptor>org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor</interceptor> <interceptor>org.jboss.ejb.plugins.LogInterceptor</interceptor> <interceptor>org.jboss.ejb.plugins.SecurityInterceptor</interceptor> <interceptor>DaveInterceptor</interceptor> <!-- CMT --> <interceptor transaction="Container">org.jboss.ejb.plugins.TxInterceptorCMT</interceptor> <interceptor transaction="Container" metricsEnabled="true">org.jboss.ejb.plugins.MetricsInterceptor</interceptor> <interceptor transaction="Container">org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor</interceptor> <!-- BMT --> <interceptor transaction="Bean">org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor</interceptor> <interceptor transaction="Bean">org.jboss.ejb.plugins.TxInterceptorBMT</interceptor> <interceptor transaction="Bean" metricsEnabled="true">org.jboss.ejb.plugins.MetricsInterceptor</interceptor> <interceptor>org.jboss.resource.connectionmanager.CachedConnectionInterceptor</interceptor> </container-interceptors> <instance-pool>org.jboss.ejb.plugins.StatelessSessionInstancePool</instance-pool> <instance-cache></instance-cache> <persistence-manager></persistence-manager> <container-pool-conf> <MaximumSize>100</MaximumSize> </container-pool-conf> </container-configuration>
All other stanzas are the same. My Interceptor's source looks like:import java.io.*; import java.rmi.*; import java.util.*; import javax.ejb.*; import javax.transaction.*; import org.jboss.ejb.*; import org.jboss.ejb.plugins.*; import org.jboss.invocation.*; import org.jboss.metadata.*; import org.jboss.tm.*; public class DaveInterceptor extends AbstractInterceptor { public void create() throws Exception { super.start(); } public Object invoke(Invocation invocation) throws Exception { String methodName; if (invocation.getMethod() != null) { methodName = invocation.getMethod().getName(); } else { methodName = "<no method>"; } StringBuffer argsName = new StringBuffer(); Object []args = invocation.getArguments(); if (args != null) { argsName.append(" "); for (int i=0;i<args.length;i++) { argsName.append(args[ i ].getClass().getName()); argsName.append(","); } argsName.setLength(argsName.length() - 1); } else { argsName.append("NOARGS"); } log.error(methodName + " being called with " + argsName.toString()); Object returnValue = getNext().invoke(invocation); log.error(methodName + " returning " + returnValue == null ? "null" : returnValue.getClass().getName()); return returnValue; } }
I have tried putting this in the run.conf JBOSS classpath. I also tried removing it from that and putting it in a jar file and putting that jarfile in the server/default/lib directory. Both had the same result (which is the stacktrace below). This exception occurs for every Session EJB that is being deployed. I am deploying all session ejbs inside one jar file which gets put into server/default/deploy. These exceptions occur during startup of JBoss.
The only other configuration change I made was to add my Informix JDBC driver to the run.conf JBOSS classpath. Everything else is as it was when installed.
Stacktrace:2004-03-16 17:09:39,526 INFO [org.jboss.ejb.EjbModule] Deploying AgencySession 2004-03-16 17:09:39,540 WARN [org.jboss.ejb.EjbModule] Could not load the DaveInterceptor interceptor for this container java.lang.ClassNotFoundException: Unexpected error during load of: DaveInterceptor, msg=org/jboss/ejb/plugins/AbstractInterceptor at org.jboss.mx.loading.UnifiedClassLoader3.loadClassImpl(UnifiedClassLoader3.java:206) at org.jboss.mx.loading.UnifiedClassLoader3.loadClass(UnifiedClassLoader3.java:123) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at org.jboss.util.loading.DelegatingClassLoader.loadClass(DelegatingClassLoader.java:77) at org.jboss.mx.loading.LoaderRepositoryClassLoader.loadClass(LoaderRepositoryClassLoader.java:78) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at org.jboss.util.loading.DelegatingClassLoader.loadClass(DelegatingClassLoader.java:77) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at org.jboss.ejb.EjbModule.addInterceptors(EjbModule.java:811) at org.jboss.ejb.EjbModule.initializeContainer(EjbModule.java:698) at org.jboss.ejb.EjbModule.createStatelessSessionContainer(EjbModule.java:502) at org.jboss.ejb.EjbModule.createContainer(EjbModule.java:457) at org.jboss.ejb.EjbModule.createService(EjbModule.java:280) at org.jboss.system.ServiceMBeanSupport.create(ServiceMBeanSupport.java:158) at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:976) at $Proxy14.create(Unknown Source) at org.jboss.system.ServiceController.create(ServiceController.java:310) at org.jboss.system.ServiceController.create(ServiceController.java:243) at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177) at $Proxy12.create(Unknown Source) at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:523) at org.jboss.deployment.MainDeployer.create(MainDeployer.java:786) at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:641) at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:605) at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177) at $Proxy6.deploy(Unknown Source) at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:302) at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:476) at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:201) at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:274) at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:192) at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:976) at $Proxy0.start(Unknown Source) at org.jboss.system.ServiceController.start(ServiceController.java:394) at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177) at $Proxy4.start(Unknown Source) at org.jboss.deployment.SARDeployer.start(SARDeployer.java:226) at org.jboss.deployment.MainDeployer.start(MainDeployer.java:832) at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:642) at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:605) at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:589) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177) at $Proxy5.deploy(Unknown Source) at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:384) at org.jboss.system.server.ServerImpl.start(ServerImpl.java:291) at org.jboss.Main.boot(Main.java:150) at org.jboss.Main$1.run(Main.java:395) at java.lang.Thread.run(Thread.java:534)
-
5. Re: Writing my own Interceptor - cannot deploy
starksm64 Apr 1, 2004 5:28 PM (in response to davetron5000)The jar with the interceptor cannot be on the system classpath. Almost never should classes used by jboss be on the system classpath. When deployed in the server/default/lib you must have still had it on the system classpath.