2013-08-18 2 views
0

У меня есть приложение, которое я пытаюсь перенести из шва 2.1 в 2.3 и развертывать в Jboss 7.1.1. Мне удалось решить многие проблемы, с которыми я столкнулся при этом. Вопрос, который я здесь задаю, касается сосуществования шва 2.3 и встроенного модуля Weld в Jboss.Проблемы при развертывании приложения шва 2.3 на jboss 7.1.1 и Weld

Существуют ли проблемы с развертыванием приложения шва 2.3 с модулем Weld, который является неявной зависимостью в Jboss 7.1? В моих журналах jboss я вижу следующее сообщение «Запуск службы сварки для развертывания», в котором говорится, что Weld запускается. Это ожидается в соответствии с классом Jboss загрузки documentation.

Причина, по которой я расследую это, что, хотя мое приложение, кажется, правильно развернуть, я получаю следующее исключение при попытке получить доступ к любой из его страниц:

01:36:51,605 SEVERE [javax.faces.webapp] (http--127.0.0.1-8080-5) org.jboss.weld.context.NonexistentConversationException caught during beforePhase() processing of RESTORE_VIEW 1 : UIComponent-ClientId=, Message=WELD-000321 No conversation found to restore for id 1 
01:36:51,606 SEVERE [javax.faces.webapp] (http--127.0.0.1-8080-5) WELD-000321 No conversation found to restore for id 1: org.jboss.weld.context.NonexistentConversationException: WELD-000321 No conversation found to restore for id 1 
    at org.jboss.weld.context.AbstractConversationContext.activate(AbstractConversationContext.java:221) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31] 
    at org.jboss.weld.jsf.WeldPhaseListener.activateConversations(WeldPhaseListener.java:108) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31] 
    at org.jboss.weld.jsf.WeldPhaseListener.beforePhase(WeldPhaseListener.java:85) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31] 
    at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:228) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:99) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357) [tomahawk21-1.1.14.jar:1.1.14] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] 

Что заставляет меня задаться вопросом , как работает Weld со швом 2.3 DI, и если это вызывает исключение.

Я попробовал несколько вещей, чтобы отключить модуль JBoss, но ближе всего я должен делать так, имея это в моей JBoss-развертывания-structure.xml:

<exclusions> 
    <module name="org.jboss.as.weld"/> 
    </exclusions> 

Это привело к этой трассировки стека при попытке развернуть мое приложение.

ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/myapp]] (MSC service thread 1-1) Error configuring application listener of class org.jboss.as.weld.webtier.jsp.JspInitializationListener: java.lang.ClassNotFoundException: org.jboss.as.weld.webtier.jsp.JspInitializationListener from [Module "deployment.myapp.ear.myapp-web.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) 
     at org.jboss.as.web.deployment.WebInjectionContainer.newInstance(WebInjectionContainer.java:72) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] 
     at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3342) [jbossweb-7.0.13.Final.jar:] 
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:3850) [jbossweb-7.0.13.Final.jar:] 
     at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] 
     at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) 
     at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_17] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_17] 
     at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_17] 

Это указывает на то, что какая-то другая часть Jboss, возможно, зависит от Weld для ее работы. Итак, мой другой вопрос: какой лучший способ избавиться от Weld и реле от функциональности DI Seam?

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

ответ

1

Спасибо за вашу помощь :)

Оказывается, что я по ошибке добавил файл beans.xml в моем WEB-INF/beans.xml который вызывает неявное JBoss зависимость сварного шва должна быть добавлена. Вторая проблема, которая, по моему мнению, могла привести к активизации сварки при развертывании, - это зависимость от cdi-api, которую добавил архетип проекта jboss maven. Я понял это, развернув пример бронирования шва 2.3 и наблюдая, что сварка не отображается в журналах и сравнивает помы между ним и моим проектом.