Classloader issues -- how to package jars, how to identify p
damo9f Jan 10, 2006 6:23 PM
We are having issues migrating to JBoss 4.0.3sp1. Our existing build process enforces layering by building independent jars for various layers. Some jars contain other jars.
A couple basic questions I have are:
If a class is in an archive, what other classes can it import?
- .jar contents
- .ear contents
- .war
- .har?
I'm trying to read through the classloading architecture pages, but basic rules are really what would be most helpful here.
Also, from jmx-console I notice a top-level jboss-service.xml classloader appearing for some of the classes in my stack trace -- does this classloader reference all .jars in server/myApp/lib? And if so can all classes in all those jars reference one another? How about .jars or other archives in the deploy directory?
This is a real headache for us, and probably for others migrating, so any help would be much appreciated.
stack trace:
[exec] 18:02:37,770 INFO [STDOUT] com.fgm.imsma.ejb.PlaceBean.ejbRemove() [exec] 18:02:37,770 ERROR [LogInterceptor] Unexpected Error in method: public abstract java.lang.Object co m.fgm.imsma.ejb.PlaceRemote.add(java.lang.Object,boolean) throws java.rmi.RemoteException [exec] java.lang.NoClassDefFoundError: com/esri/arcgis/system/AoInitialize [exec] at com.fgm.imsma.gis.esri.EsriGisDatabaseClient.<init>(EsriGisDatabaseClient.java:30) [exec] at com.fgm.imsma.gis.esri.EsriClientProvider.newDatabaseClient(EsriClientProvider.java:42) [exec] at com.fgm.imsma.biz.interceptors.FeatureHandlingUtilities.<init>(FeatureHandlingUtilities.jav a:63) [exec] at com.fgm.imsma.biz.interceptors.FeatureHandlingUtilities.getInstance(FeatureHandlingUtilitie s.java:74) [exec] at com.fgm.imsma.biz.interceptors.GeoSpatialTrackingQueue.flush(GeoSpatialTrackingQueue.java:1 47) [exec] at com.fgm.imsma.ejb.AbstractPojoBean.flushQueues(AbstractPojoBean.java:131) [exec] at com.fgm.imsma.ejb.AbstractPojoBean.add(AbstractPojoBean.java:183) [exec] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [exec] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [exec] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [exec] at java.lang.reflect.Method.invoke(Method.java:585) [exec] at org.jboss.invocation.Invocation.performCall(Invocation.java:345) [exec] at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContain er.java:214)
class loader trace: (blank lines added for readability)
[236565,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] loadClass org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2} name=com.fgm.imsma.gis.IGeoContext class=interface com.fgm.imsma.gis.IGeoContext cl=org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2} [236565,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] loadClass org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2} name=com.esri.arcgis.system.AoInitialize, loadClassDepth=0 [236565,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] loadClassImpl, name=com.esri.arcgis.system.AoInitialize, resolve=false [236565,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] attempt(1) was: true for :org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2} [236565,LoadMgr3,RMI TCP Connection(5)-10.10.80.56] registerLoaderThread, ucl=org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2}, t=Thread[RMI TCP Connection(5)-10.10.80.56,5,RMI Runtime], prevT=null [236565,LoadMgr3,RMI TCP Connection(5)-10.10.80.56] Begin beginLoadTask, task=org.jboss.mx.loading.ClassLoadingTask@8c40ee{classname: com.esri.arcgis.system.AoInitialize, requestingThread: Thread[RMI TCP Connection(5)-10.10.80.56,5,RMI Runtime], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: null, threadTaskCount: 0, state: 0, #CCE: 0} [236580,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] getResourceLocally(org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2}), name=com/esri/arcgis/system/AoInitialize.class, resURL:jar:file:/c:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/lib/arcobjects.jar!/com/esri/arcgis/system/AoInitialize.class [236580,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] getResourceLocally(org.jboss.mx.loading.UnifiedClassLoader3@b5c292{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39575imsmaejb-1.0.jar ,addedOrder=60}), name=com/esri/arcgis/system/AoInitialize.class, resURL:jar:file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39575imsmaejb-1.0.jar-contents/arcobjects.jar!/com/esri/arcgis/system/AoInitialize.class [236580,LoadMgr3,RMI TCP Connection(5)-10.10.80.56] scheduleTask(1), created subtask: {t=Thread[RMI TCP Connection(5)-10.10.80.56,5,RMI Runtime], ucl=org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2}, name=com.esri.arcgis.system.AoInitialize, requestingThread=Thread[RMI TCP Connection(5)-10.10.80.56,5,RMI Runtime], order=2, releaseInNextTask=false} [236580,LoadMgr3,RMI TCP Connection(5)-10.10.80.56] End beginLoadTask, task=org.jboss.mx.loading.ClassLoadingTask@8c40ee{classname: com.esri.arcgis.system.AoInitialize, requestingThread: Thread[RMI TCP Connection(5)-10.10.80.56,5,RMI Runtime], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: null, threadTaskCount: 1, state: 1, #CCE: 0} [236580,LoadMgr3,RMI TCP Connection(5)-10.10.80.56] Continue nextTask(1), task=org.jboss.mx.loading.ClassLoadingTask@8c40ee{classname: com.esri.arcgis.system.AoInitialize, requestingThread: Thread[RMI TCP Connection(5)-10.10.80.56,5,RMI Runtime], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: null, threadTaskCount: 1, state: 1, #CCE: 0} [236580,LoadMgr3,RMI TCP Connection(5)-10.10.80.56] Begin nextTask(0), loadTask=org.jboss.mx.loading.ClassLoadingTask@8c40ee{classname: com.esri.arcgis.system.AoInitialize, requestingThread: Thread[RMI TCP Connection(5)-10.10.80.56,5,RMI Runtime], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: null, threadTaskCount: 1, state: 1, #CCE: 0} [236580,LoadMgr3,RMI TCP Connection(5)-10.10.80.56] Running threadTask={t=Thread[RMI TCP Connection(5)-10.10.80.56,5,RMI Runtime], ucl=org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2}, name=com.esri.arcgis.system.AoInitialize, requestingThread=Thread[RMI TCP Connection(5)-10.10.80.56,5,RMI Runtime], order=2, releaseInNextTask=false} [236580,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] loadClassLocally, org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2} name=com.esri.arcgis.system.AoInitialize [236580,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] findClass, name=com.esri.arcgis.system.AoInitialize [236596,UnifiedClassLoader,RMI TCP Connection(5)-10.10.80.56] getPermissions, url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml, origURL=file:/c:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/conf/jboss-service.xml -> java.security.Permissions@1faf398 ( (java.io.FilePermission c:\eclipseWorkspace\imsma_dev\server\target\imsmaserver\imsmaserver\conf\jboss-service.xml read) (java.io.FilePermission c:\eclipseWorkspace\imsma_dev\server\target\imsmaserver\imsmaserver\lib\arcobjects.jar read) (java.lang.RuntimePermission stopThread) (java.net.SocketPermission localhost:1024- listen,resolve) (java.util.PropertyPermission java.version read) (java.util.PropertyPermission java.vm.name read) (java.util.PropertyPermission java.vm.vendor read) (java.util.PropertyPermission os.name read) (java.util.PropertyPermission java.vendor.url read) (java.util.PropertyPermission java.vm.specification.vendor read) (java.util.PropertyPermission os.version read) (java.util.PropertyPermission java.specification.vendor read) (java.util.PropertyPermission java.class.version read) (java.util.PropertyPermission java.specification.name read) (java.util.PropertyPermission file.separator read) (java.util.PropertyPermission os.arch read) (java.util.PropertyPermission java.vm.version read) (java.util.PropertyPermission java.vendor read) (java.util.PropertyPermission java.specification.version read) (java.util.PropertyPermission java.vm.specification.version read) (java.util.PropertyPermission java.vm.specification.name read) (java.util.PropertyPermission path.separator read) (java.util.PropertyPermission line.separator read) ) [236596,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] loadClass org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2} name=com.linar.jintegra.RemoteObjRef, loadClassDepth=1 [236596,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] loadClassImpl, name=com.linar.jintegra.RemoteObjRef, resolve=false [236596,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] attempt(2) was: true for :org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2} [236611,LoadMgr3,RMI TCP Connection(5)-10.10.80.56] Begin beginLoadTask, task=org.jboss.mx.loading.ClassLoadingTask@104966e{classname: com.linar.jintegra.RemoteObjRef, requestingThread: Thread[RMI TCP Connection(5)-10.10.80.56,5,RMI Runtime], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: null, threadTaskCount: 0, state: 0, #CCE: 0} [236611,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] loadClassLocally, org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2} name=com.linar.jintegra.RemoteObjRef [236611,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] findClass, name=com.linar.jintegra.RemoteObjRef [236611,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] CFNE: Adding to blacklist: com.linar.jintegra.RemoteObjRef [236611,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] CFNE: Adding to blacklist: com.linar.jintegra.RemoteObjRef [236611,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] loadClassLocally, org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2} name=com.linar.jintegra.RemoteObjRef not found [236611,LoadMgr3,RMI TCP Connection(5)-10.10.80.56] End beginLoadTask, ClassNotFoundException [236611,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] release(2) for :org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2} [236611,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] released, holds: 1 [236611,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] loadClass org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2} name=com.linar.jintegra.RemoteObjRef not found [236611,RepositoryClassLoader,RMI TCP Connection(5)-10.10.80.56] loadClassLocally, org.jboss.mx.loading.UnifiedClassLoader3@24de7d{ url=file:/C:/eclipseWorkspace/imsma_dev/server/target/imsmaserver/imsmaserver/tmp/deploy/tmp39463jboss-service.xml ,addedOrder=2} name=com.esri.arcgis.system.AoInitialize not found [236767,ClassLoadingTask,RMI TCP Connection(5)-10.10.80.56] setLoadedError, error=java.lang.NoClassDefFoundError: com/linar/jintegra/RemoteObjRef [236767,LoadMgr3,RMI TCP Connection(5)-10.10.80.56] Run failed with exception java.lang.NoClassDefFoundError: com/linar/jintegra/RemoteObjRef at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at org.jboss.mx.loading.RepositoryClassLoader.findClassLocally(RepositoryClassLoader.java:633) at org.jboss.mx.loading.RepositoryClassLoader.findClass(RepositoryClassLoader.java:613) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at org.jboss.mx.loading.RepositoryClassLoader.loadClassLocally(RepositoryClassLoader.java:162) at org.jboss.mx.loading.ClassLoadingTask$ThreadTask.run(ClassLoadingTask.java:119) at org.jboss.mx.loading.LoadMgr3.nextTask(LoadMgr3.java:385) at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:481) at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:377) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at com.fgm.imsma.gis.esri.EsriGisDatabaseClient.<init>(EsriGisDatabaseClient.java:30) at com.fgm.imsma.gis.esri.EsriClientProvider.newDatabaseClient(EsriClientProvider.java:42) at com.fgm.imsma.biz.interceptors.FeatureHandlingUtilities.<init>(FeatureHandlingUtilities.java:63) at com.fgm.imsma.biz.interceptors.FeatureHandlingUtilities.getInstance(FeatureHandlingUtilities.java:74) at com.fgm.imsma.biz.interceptors.GeoSpatialTrackingQueue.flush(GeoSpatialTrackingQueue.java:147) at com.fgm.imsma.ejb.AbstractPojoBean.flushQueues(AbstractPojoBean.java:131) at com.fgm.imsma.ejb.AbstractPojoBean.add(AbstractPojoBean.java:183) 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:585) at org.jboss.invocation.Invocation.performCall(Invocation.java:345) at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:214) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:149) at org.jboss.webservice.server.ServiceEndpointInterceptor.invoke(ServiceEndpointInterceptor.java:54) at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:48) at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:106) at org.jboss.ejb.plugins.AbstractTxInterceptorBMT.invokeNext(AbstractTxInterceptorBMT.java:158) at org.jboss.ejb.plugins.TxInterceptorBMT.invoke(TxInterceptorBMT.java:62) at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:154) at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:153) at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192) at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122) at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:624) at org.jboss.ejb.Container.invoke(Container.java:873) at sun.reflect.GeneratedMethodAccessor83.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141) at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80) at org.jboss.mx.server.Invocation.invoke(Invocation.java:72) at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644) at org.jboss.invocation.jrmp.server.JRMPInvoker$MBeanServerAction.invoke(JRMPInvoker.java:805) at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:406) at sun.reflect.GeneratedMethodAccessor82.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294) at sun.rmi.transport.Transport$1.run(Transport.java:153) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:149) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:595)