У меня проблемы с запуском сервера JBoss 4.2.2 - он выдает следующее сообщение об ошибке (от org.jboss.kernel.plugins.dependency.AbstractKernelController
):
Error installing to Described: name=WSDeployerHook_JAXWS_EJB3 state=Not Installed mode=Manual requiredState=Create
java.lang.NoClassDefFoundError: org/jboss/ejb3/interceptors/direct/IndirectContainer
Просматривая исходный код JBoss, я включил ведение журнала уровня TRACE для определенных классов, хотя все, что он мне говорит, это то, что он не может найти IndirectContainer
(все эти строки взяты из org.jboss.mx.loading.LoadMgr3
):
Begin beginLoadTask, task=org.jboss.mx.loading.ClassLoadingTask@c8aeb3{classname: org.jboss.ejb3.interceptors.direct.IndirectContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@16925b0{ url=null ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: null, threadTaskCount: 0, state: 0, #CCE: 0}
End beginLoadTask, ClassNotFoundException
Run failed with exception, loadTask=org.jboss.mx.loading.ClassLoadingTask@10e468f{classname: org.jboss.ejb3.EJBContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@16925b0{ url=null ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: java.lang.NoClassDefFoundError: org/jboss/ejb3/interceptors/direct/IndirectContainer, threadTaskCount: 0, state: 1, #CCE: 1}
Notifying task of thread completion, loadTask:org.jboss.mx.loading.ClassLoadingTask@10e468f{classname: org.jboss.ejb3.EJBContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@16925b0{ url=null ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: java.lang.NoClassDefFoundError: org/jboss/ejb3/interceptors/direct/IndirectContainer, threadTaskCount: 0, state: 1, #CCE: 1}
End nextTask(0), loadTask=org.jboss.mx.loading.ClassLoadingTask@10e468f{classname: org.jboss.ejb3.EJBContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@16925b0{ url=null ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: java.lang.NoClassDefFoundError: org/jboss/ejb3/interceptors/direct/IndirectContainer, threadTaskCount: 0, state: 4, #CCE: 1}
Begin endLoadTask, task=org.jboss.mx.loading.ClassLoadingTask@10e468f{classname: org.jboss.ejb3.EJBContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@16925b0{ url=null ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: java.lang.NoClassDefFoundError: org/jboss/ejb3/interceptors/direct/IndirectContainer, threadTaskCount: 0, state: 4, #CCE: 1}
registerLoaderThread, ucl=org.jboss.mx.loading.UnifiedClassLoader3@56182f{ url=file:/var/data/applications/jboss/server/jbossgpa1/deploy/jboss-bean.deployer/ ,addedOrder=5}, t=Thread[main,5,jboss], prevT=null
Begin beginLoadTask, task=org.jboss.mx.loading.ClassLoadingTask@159d10{classname: org.jboss.util.JBossStringBuilder, requestingThread: Thread[main,5,jboss], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@56182f{ url=file:/var/data/applications/jboss/server/jbossgpa1/deploy/jboss-bean.deployer/ ,addedOrder=5}, loadedClass: nullnull, loadOrder: 2147483647, loadException: null, threadTaskCount: 0, state: 0, #CCE: 0}
scheduleTask(1), created subtask: {t=Thread[main,5,jboss], ucl=org.jboss.mx.loading.UnifiedClassLoader3@56182f{ url=file:/var/data/applications/jboss/server/jbossgpa1/deploy/jboss-bean.deployer/ ,addedOrder=5}, name=org.jboss.util.JBossStringBuilder, requestingThread=Thread[main,5,jboss], order=5, releaseInNextTask=false}
Я использовал TextPad для поиска по всей структуре папок, включая .jars и т. Д., И нет ни одного упоминания IndirectContainer
вне файлов журнала.
Я предполагаю, что зависимость библиотеки не удовлетворяется, но я не уверен, каким должен быть следующий шаг для диагностики этой проблемы. Есть идеи / предложения?
(работает на RHEL4)
Я бегу JBoss (MX MicroKernel) [4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)]
Я начал немного разбираться, поэтому я подключил отладчик и создал условную точку останова ("org.jboss.ejb3.interceptors.direct.IndirectContainer".equals(classname)
) в конструкторе org.jboss.mx.loading.ClassLoadingTask. Когда была достигнута точка останова, я вернулся в стек, чтобы найти самое раннее упоминание IndirectContainer
:
С левой стороны вы можете видеть (я надеюсь - на моем маленьком экране это выглядит не очень ясно), что под вызовом UnifiedClassloader3.classLoadInternal()
- собственный вызов (значения которого я не вижу), и тогда есть звонок на UnifiedClassloader3.defineClass()
:
В этом вызове вы можете видеть подсвеченный (синим, справа внизу) jboss-ejb3-core-client.jar
- Я не очень много работаю с загрузчиками классов, но я предполагаю, что решение создать экземпляр ClassLoadingTask для IndirectContainer
было принято из-за содержимое этого файла .jar.
Насколько я вижу, в этом .jar нет упоминания о IndirectContainer
.
Надеюсь, этого достаточно, чтобы кто-то мог распознать проблему.