JBOSS 7 - Spring ContextLoaderListener ClassNotFoundException - PullRequest
2 голосов
/ 27 сентября 2011

Я пытаюсь перенести мое приложение JBOSS 5.1 на JBOSS 7.0.2.В консоли администратора я выбираю развертывания -> добавить контент и мой .war и пытаюсь включить его.Я уже решил некоторые проблемы, но не могу понять эту: (короче говоря, в конце в конце)

Caused by: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener from [Module "deployment.ZaprogsProject.war:main" from Servic
e Module Loader]

Я скопировал в JBOSS7\standalone\lib\ следующие файлы:

spring-aop-3.0.5.RELEASE.jar
spring-asm-3.0.5.RELEASE.jar
spring-beans-3.0.5.RELEASE.jar
spring-context-3.0.5.RELEASE.jar
spring-context-support-3.0.5.RELEASE.jar
spring-core-3.0.5.RELEASE.jar
spring-expression-3.0.5.RELEASE.jar
spring-jdbc-3.0.5.RELEASE.jar
spring-orm-3.0.5.RELEASE.jar
spring-test-3.0.5.RELEASE.jar
spring-tx-3.0.5.RELEASE.jar
spring-web-3.0.5.RELEASE.jar
spring-webmvc-3.0.5.RELEASE.jar

Я прочитал это: https://docs.jboss.org/author/display/AS7/How+do+I+migrate+my+application+from+AS5+or+AS6+to+AS7 (отладка и разрешение ClassNotFoundExceptions и NoClassDefFoundErrors) , но не могу найти решение для меня и все еще получаю ту же ошибку.Кто-нибудь может помочь?

22:19:12,091 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC00001: Failed to start service jboss.deployment.unit."ZaprogsProject.war".INSTALL: o
rg.jboss.msc.service.StartException in service jboss.deployment.unit."ZaprogsProject.war".INSTALL: Failed to process phase INSTALL of deployment "ZaprogsProject
.war"
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121) [jboss-as-server-7.0.2.Final.jar:7.0.2.Final]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [:1.7.0]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [:1.7.0]
        at java.lang.Thread.run(Thread.java:722) [:1.7.0]
Caused by: java.lang.RuntimeException: Failed to load class org.springframework.web.context.ContextLoaderListener
        at org.jboss.as.ee.component.deployers.EEClassConfigurationProcessor$1.compute(EEClassConfigurationProcessor.java:141)
        at org.jboss.as.ee.component.deployers.EEClassConfigurationProcessor$1.compute(EEClassConfigurationProcessor.java:122)
        at org.jboss.as.ee.component.LazyValue.get(LazyValue.java:40)
        at org.jboss.as.ee.component.EEApplicationDescription.getClassConfiguration(EEApplicationDescription.java:183)
        at org.jboss.as.ee.component.ComponentDescription.createConfiguration(ComponentDescription.java:153)
        at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:70)
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115) [jboss-as-server-7.0.2.Final.jar:7.0.2.Final]
        ... 5 more
Caused by: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener from [Module "deployment.ZaprogsProject.war:main" from Servic
e Module Loader]
        at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:361)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:333)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:310)
        at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:103)
        at java.lang.Class.forName0(Native Method) [:1.7.0]
        at java.lang.Class.forName(Class.java:264) [:1.7.0]
        at org.jboss.as.ee.component.deployers.EEClassConfigurationProcessor$1.compute(EEClassConfigurationProcessor.java:139)
        ... 11 more

Ответы [ 3 ]

5 голосов
/ 03 октября 2011

JBoss AS 7 выполняет загрузку классов другим способом.

Все классы в WAR загружаются с одним и тем же загрузчиком классов. Это означает, что классы, упакованные в WEB-INF / lib, обрабатываются так же, как классы в WEB-INF / classes. Следовательно, это работает для вас.

Но, как вы сказали правильно, ваш WEB-INF / lib раздутый. Это не будет правильным способом.

Вам нужно сделать модуль: Перейдите в папку модулей, создайте структуру папок с основной папкой и поместите в нее ваш jar и modules.xml с записями. Что-то вроде:

<main-class name="org.jboss.msc.Version"/>

<resources>
    <resource-root path="jboss-msc-1.0.1.GA.jar"/>
</resources>

<dependencies>
    <module name="javax.api"/>
    <module name="org.jboss.logging"/>
    <module name="org.jboss.modules"/>

    <!-- Optional deps -->
    <module name="javax.inject.api" optional="true"/>
    <module name="org.jboss.threads" optional="true"/>
    <module name="org.jboss.vfs" optional="true"/>
</dependencies>

Вам также необходимо обновить MANIFEST. Подробности здесь: https://docs.jboss.org/author/display/MODULES/Module+descriptors

3 голосов
/ 27 сентября 2011

Я бы не помещал эти JAR-файлы в этот каталог. Попробуйте их в файле WAR вашего файла WEB-INF / lib. Загрузчик классов найдет их там.

Необходимо понимать, что все серверы приложений Java EE используют иерархию загрузчиков классов: загрузчик, сервер, приложение. JBoss не нашел этот класс, когда это было необходимо.

1 голос
/ 27 сентября 2011

Существует значительное изменение Jboss 7 по сравнению с предыдущими версиями. Если вы хотите получить доступ к каким-либо библиотекам вне вашего war-файла, он должен быть установлен как модуль.Установите флажок https://docs.jboss.org/author/display/MODULES/Introduction. В этом случае вам следует установить Spring как модуль и указать имя модуля в качестве зависимости в файле манифеста вашего приложения (отметьте Информация о модуле манифеста )

...