2014-01-06 6 views
0

Я работаю над динамическим веб-проектом (StudentManagement.war), который опирается на EJB (StudentManagementEJB.jar) для взаимодействия с базой данных. Проект EJB был добавлен в путь к веб-проекту. На развертывание, однако, следующие исключения выбрасываются:Проблемы с развертыванием Java .war на jboss-as-7.1.1.Final

22:23:21,275 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC00001: Failed to start service jboss.deployment.unit."StudentManagement.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."StudentManagement.war".POST_MODULE: Failed to process phase POST_MODULE of deployment "StudentManagement.war" 
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.7.0_45] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.7.0_45] 
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_45] 
Caused by: java.lang.RuntimeException: Error getting reflective information for class student.management.ManageStudentServlet with ClassLoader ModuleClassLoader for Module "deployment.StudentManagement.war:main" from Service Module Loader 
    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 
    at org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:58) 
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:85) 
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:70) 
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:55) 
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 
    ... 5 more 
Caused by: java.lang.NoClassDefFoundError: Lstudent/management/ManageStudentSessionBeanLocal; 
    at java.lang.Class.getDeclaredFields0(Native Method) [rt.jar:1.7.0_45] 
    at java.lang.Class.privateGetDeclaredFields(Unknown Source) [rt.jar:1.7.0_45] 
    at java.lang.Class.getDeclaredFields(Unknown Source) [rt.jar:1.7.0_45] 
    at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:57) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 
    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:66) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 
    ... 10 more 
Caused by: java.lang.ClassNotFoundException: student.management.ManageStudentSessionBeanLocal from [Module "deployment.StudentManagement.war:main" from Service Module Loader] 
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) 
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) 
    ... 15 more 

Это показывает, что веб-модуль не может найти классы, определенные в компоненте. Я изменил свое значение по умолчанию: %JBOSS_HOME%\standalone\deployments\StudentManagement.war\META-INF\MANIFEST.MF к:

Manifest-Version: 1.0 
Class-Path: file:/C:/Utils/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final/standalone/deployments/StudentManagementEJB.jar 

Несмотря на это исключение сохраняется. Между есть два пробела: Class-Path: и URI и пробел после окончания URI (../ standalone), за которым следует новый символ строки.

В моем синтаксисе есть что-то не так?
Я использую java ee 7, jboss-as-7.1.1.Final и Win 7 x64.

+0

Можете ли вы включить файл .jar в .war? – SpacePrez

+0

Вы упаковали класс с банкоматом EJB, поэтому он доступен только в модуле EJB, а не в модуле WAR. Чтобы сделать его доступным как в EJB, так и в модулях WAR, вам необходимо упаковать его с EAR. –

ответ

1

Оказывается, что файл StudentManagementEJB.jar не был скопирован в каталог/lib при развертывании. Помимо добавления его в Class-Path, он также должен быть скопирован в

%JBOSS_HOME%\standalone\deployments\<ProjectName>.war\WEB-INF\lib

каталога (если проект развертывается как .WAR). В этом случае ProjectName является StudentManagement.

0

Не ссылайтесь на папку развертывания (автономный/развертывание). Развернутые приложения на самом деле не развернуты там, но скопированы оттуда в каталог данных или они даже не находятся в папке развертывания, если вы используете другие формы развертывания, например. jboss-cli.bat

Есть несколько способов решить эту проблему.

1) Не упаковывайте EJB отдельно, а включайте его в WAR (самый простой).

2) Создайте EAR и упакуйте WAR и EJB-JAR вместе в EAR (классический).

3) Создайте модуль из интерфейсных классов и ссылку с EJB.jar и WAR на модуль. См. "Зависимость:" в https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7

4) Ссылки на WARS Manifest в EJB-развертывание, как:

Dependencies:deployment.StudentManagementEJB.jar 

От https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7:

имен модулей для развертывания на высшем уровне в соответствии с форматом deploy.myarchive.war, а вспомогательные развертывания называются deployment.myear.ear.mywar.war.

Это означает, что возможно для развертывания для импорта классов из другого развертывания, используя имя модуля других развертываний подробности о том, как добавить явную зависимость модуля разъясняется ниже.

Смежные вопросы