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










Reply via email to