I answered most of my own questions already fro my previous post. WAS
CE does not have source downloads so I will have to install geronimo
straight and try it that way. I will report back what happens.
Doug
David Jencks wrote:
On May 19, 2007, at 2:25 PM, Doug Lochart wrote:
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.
I use intellij IDEA and really like it. After about an hour I
abandoned my years of emacs use and haven't looked back for java
code. If you can get a copy (I think they have a free trial) run
mvn idea:idea
and open the project file this generates in IDEA. When you stop at a
breakpoint you can use "Evaluate Expression" in the run menu to try
loading various classes in the available classloaders and probably
figure out what is going on pretty quickly.
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.
I'm not thrilled with the message from NCDFE: I would prefer it told
you what class it was trying to load when it couldn't load the class
it complains about. This might be what you mean too :-) Anyway I
think you will figure out what is wrong pretty quickly if you can get
to the point where the error occurs in a debugger.
thanks
david jencks
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