David Jencks wrote:
I don't see any obvious way this could be happening. I would
investigate by putting a breakpoint just before where the exception is
thrown and looking at the classloader and what is being loaded in the
debugger.
Believe it or not I don't use Eclipse or other IDE ... except for the
debugger aspect I despise them. My fingers and mind are trained for
emacs thus I rarely use IDE's unless I need a debugger. So that being
said how painful is it to setup geronimo under Eclipse or other
debugger? Is there an easy step by step process to do this some where
posted? At this point in time I don't really want to take a week just
to get it running under a debugger. If it is simple then I will do so.
Actually if I don't have another option I guess I will have to do so.
What IDE/Debugger would you suggest is the least painless to use with
Geronimo? I tried Eclipse a long time ago and hated the way it forced
its structure on me. I don't want to get into a war on IDE's but and
IDE should never dictate external process or structure. Okay off my
soapbox ... any way I happy to do what you suggest.
Can you think of something that geronimo could do that would make it
so you didn't need to debug to solve this problem?
Well a thoroughly instrumented flow (as in debug statements) would
help. I think this code is JDK 1.5 so you could make use of annotations
or cglib to intercept methods and add trace debugging that way but just
entering and leaving methods would not suffice for this problem. I did
not see a whole lot of debug statements in the class where the exception
occurs so I could not see the values for the arguments to the methods
that were being called.
Maybe on these types of exceptions (class loading) maybe when the log4j
debug level is set to trace you could possibly create a hierarchical
dump of the classloaders and what they have as their classpath? I
haven't written a classloader in a year or three so I forget what is at
your disposal but a good environment dump with effective classpath
information is always helpful.
If you are familiar with Tapestry the exception mechanism is pretty nice
albeit its geared for a web exception but you get the whole state of the
system regarding that page and it makes tracing thr problem very easy.
thanks
david jencks
Thanks David.
I have a question ... if the class that is causing the exception depends
on another class that is not available to the classloader wil lyou still
get the same exception or would you be pointing to the truly offending
class? I am just wondering if the tool I am using aggregated all of
the proper stuff for the task.
On May 19, 2007, at 7:09 AM, Doug Lochart wrote:
David or anyone else,
Have you had any chance to look at the full stack trace of my
exception yet? Here it is again.
12:17:31,183 DEBUG [Configuration] Started configuration
france/FrancePolicyServerEar/1.0/car
12:17:32,803 DEBUG [Configuration] Stopping configuration
france/FrancePolicyServerEar/1.0/car
12:17:32,816 ERROR [Deployer] Deployment failed:
plan=/mnt/steve_d/Blaze65/deployfrancepolicy/./geronimo-application.xml,
module=/mnt/steve_d/Blaze65/deployfrancepolicy/FrancePolicyServer.ear
org.apache.geronimo.common.DeploymentException: Unable to
initialize EJBContainer GBean: ejbNameFrancePolicyServer
at
org.openejb.deployment.SessionBuilder.addEJBContainerGBean(SessionBuilder.java:315)
at
org.openejb.deployment.SessionBuilder.buildBeans(SessionBuilder.java:192)
at
org.openejb.deployment.OpenEJBModuleBuilder.addGBeans(OpenEJBModuleBuilder.java:514)
at
org.openejb.deployment.OpenEJBModuleBuilder$$FastClassByCGLIB$$11bd7b20.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.j2ee.deployment.ModuleBuilder$$EnhancerByCGLIB$$7afc2c82.addGBeans(<generated>)
at
org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:562)
at
org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$86e934f4.buildConfiguration(<generated>)
at
org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:302)
at
org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:124)
at
org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:852)
at
org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
at
org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:338)
at
org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:852)
at
org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
at
org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(MBeanGBeanBridge.java:168)
at
com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:231)
at
com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:238)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:833)
at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:802)
at
javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1423)
at
javax.management.remote.rmi.RMIConnectionImpl.access$100(RMIConnectionImpl.java:96)
at
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1260)
at
java.security.AccessController.doPrivileged(AccessController.java:275)
at
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1363)
at
javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:797)
at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:309)
at sun.rmi.transport.Transport$1.run(Transport.java:168)
at
java.security.AccessController.doPrivileged(AccessController.java:275)
at sun.rmi.transport.Transport.serviceCall(Transport.java:164)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:506)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.handleRequest(TCPTransport.java:838)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:912)
at java.lang.Thread.run(Thread.java:799)
Caused by:
java.lang.NoClassDefFoundError:
com.blazesoft.server.deploy.ejb.session.NdStatelessEjbServerBean
at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:223)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:148)
at
org.apache.geronimo.kernel.classloader.JarFileClassLoader.access$200(JarFileClassLoader.java:51)
at
org.apache.geronimo.kernel.classloader.JarFileClassLoader$6.run(JarFileClassLoader.java:275)
at
java.security.AccessController.doPrivileged(AccessController.java:275)
at
org.apache.geronimo.kernel.classloader.JarFileClassLoader.findClass(JarFileClassLoader.java:227)
at
org.apache.geronimo.kernel.config.MultiParentClassLoader.loadClass(MultiParentClassLoader.java:243)
at java.lang.ClassLoader.loadClass(ClassLoader.java:563)
at
org.openejb.deployment.StatelessContainerBuilder.buildIt(StatelessContainerBuilder.java:97)
at
org.openejb.deployment.AbstractContainerBuilder.createConfiguration(AbstractContainerBuilder.java:354)
at
org.openejb.deployment.SessionBuilder.addEJBContainerGBean(SessionBuilder.java:313)
... 58 more
12:17:57,948 DEBUG [ManagerBase] Start expire sessions
StandardManager at 1179505077948 sessioncount 0
12:17:57,948 DEBUG [ManagerBase] End expire sessions
StandardManager processingTime 0 expired sessions: 0
thanks
david jencks
No ... Thank You !!
Doug