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.buildConfigur
ation(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.doPrivilegedOperatio
n(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.findClas
s(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.createConfiguratio
n(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