2014-03-31 14 views
3

나는 현재 최종 제이보스 (8)에 JSF-1.2 응용 프로그램을 마이그레이션하고있어 JSF 2.2를 참조하고 붙어 :(모든제이보스 8 JSF 1.2 결승 - 용접 코어 JSF는 여전히 API

첫째, ' 나를 위해 작동하지 않습니다 관련 문제 (예를 들어 https://community.jboss.org/message/845006 또는 Migrate JSF 1.2 Seam app to WildFly Beta 1)하지만 (용접 서브 시스템 제외) 제안 된 솔루션으로 많은 게시물을 읽은

내가 무슨 짓을 :.

  • 내가 다음에 다중 jsf 기능 튜토리얼 l here을 설치하고 JSF 1.2를 wildfly (정확히 3 모듈) 모듈로 설치했습니다.
  • 그 다음으로, javax.faces.api와 com.sun.jsf-impl (주 슬롯)에 대한 예외와 1.2b 슬롯에 해당하는 의존성을 내 전쟁 용 jboss-deployment-structure.xml에 추가했습니다. .
  • 응용 프로그램에서 Tomahawk 및 Tomahawk Sandbox를 사용하고 있기 때문에 귀로도 배포하고 있으므로 기본 슬롯을 제외하고이 배포를 위해 두 모듈의 1.2 슬롯을 포함 시켰습니다.

내 문제 :

  • 내가 배포 (login.xhthml)의 초기 페이지를 호출하려고, 나는이 모듈에 의해 다음과 같은 오류가 발생 얻을 'org.jboss 오류가 단지 용접 코어 JSF-2.1.2.Fin에 포함 ConversationAwareViewHandler 의한 1.2
 
ERROR [request] UT005023: Exception handling request to /backoffice/login.faces: java.lang.NoSuchMethodError: javax.faces.context.FacesContext.getAttributes()Ljava/util/Map; 
    [exec]  at org.jboss.weld.jsf.ConversationAwareViewHandler.getActionURL(ConversationAwareViewHandler.java:103) 
    [exec]  at javax.faces.application.ViewHandlerWrapper.getActionURL(ViewHandlerWrapper.java:147) 
    [exec]  at com.sun.facelets.FaceletViewHandler.getActionURL(FaceletViewHandler.java:807) 
    [exec]  at org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRenderer.getActionUrl(HtmlRenderer.java:77) 
    [exec]  at org.apache.myfaces.custom.form.HtmlFormRenderer.getActionUrl(HtmlFormRenderer.java:45) 
    [exec]  at org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlFormRendererBase.encodeBegin(HtmlFormRendererBase.java:102) 
    [exec]  at org.apache.myfaces.custom.form.HtmlFormRenderer.encodeBegin(HtmlFormRenderer.java:134) 
    [exec]  at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:816) 
    [exec]  at javax.faces.component.UIComponent.encodeAll(UIComponent.java:928) 
    [exec]  at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933) 
    [exec]  at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:594) 
    [exec]  at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110) 
    [exec]  at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) 
    [exec]  at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
    [exec]  at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) 
    [exec]  at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) 
    [exec]  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130) 
    [exec]  at com.jamonapi.JAMonFilter.doFilter(JAMonFilter.java:57) 
    [exec]  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) 
    [exec]  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
    [exec]  at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:190) 
    [exec]  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) 
    [exec]  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
    [exec]  at org.apache.myfaces.custom.conversation.ConversationServletFilter.doFilter(ConversationServletFilter.java:78) 
    [exec]  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) 
    [exec]  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
    [exec]  at org.apache.myfaces.custom.requestParameterProvider.RequestParameterServletFilter.doFilter(RequestParameterServletFilter.java:66) 
    [exec]  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) 
    [exec]  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
    [exec]  at de.voebzvd.indra.backoffice.webapp.AvoidCachingFilter.doFilter(AvoidCachingFilter.java:53) 
    [exec]  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) 
    [exec]  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
    [exec]  at org.securityfilter.filter.SecurityFilter.doFilter(SecurityFilter.java:188) 
    [exec]  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) 
    [exec]  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
    [exec]  at de.voebzvd.logging.BaseFilter.doFilter(BaseFilter.java:44) 
    [exec]  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) 
    [exec]  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
    [exec]  at de.voebzvd.logging.NDCFilter.doFilter(NDCFilter.java:50) 
    [exec]  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) 
    [exec]  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
    [exec]  at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) 
    [exec]  at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) 
    [exec]  at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 
    [exec]  at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) 
    [exec]  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 
    [exec]  at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113) 
    [exec]  at io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:52) 
    [exec]  at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) 
    [exec]  at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61) 
    [exec]  at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) 
    [exec]  at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) 
    [exec]  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 
    [exec]  at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 
    [exec]  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 
    [exec]  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 
    [exec]  at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240) 
    [exec]  at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) 
    [exec]  at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) 
    [exec]  at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) 
    [exec]  at io.undertow.server.Connectors.executeRootHandler(Connectors.java:168) 
    [exec]  at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:687) 
    [exec]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    [exec]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    [exec]  at java.lang.Thread.run(Thread.java:744) 

슬롯 .as.jsf 분사 ' JSF 1.2 모듈과 함께 설치 한 org.jboss.as.jsf-injection 모듈의 al.jar. 이 클래스는 여전히 JSF 2.2 API를 참조하고 그에 따라 실패합니다.

tomahawk에서 용접 하위 시스템을 제외하고 내 전쟁 또한 작동하지 않았습니다. 나는 이것을 시도했다 :

<sub-deployment name="myfaces-tomahawk-core.jar"> 
    <exclude-subsystems> 
    <subsystem name="weld" /> 
    </exclude-subsystems> 
    <exclusions> 
    <module name="javax.faces.api" slot="main" /> 
    <module name="com.sun.jsf-impl" slot="main" /> 
    </exclusions> 
    <dependencies> 
    <module name="com.sun.jsf-impl" slot="1.2" /> 
    <module name="javax.faces.api" slot="1.2" /> 
    <module name="org.apache.commons.beanutils" /> 
    <module name="org.apache.commons.lang" /> 
    <module name="org.apache.commons.logging" /> 
    </dependencies> 
</sub-deployment> 
<sub-deployment name="myfaces-tomahawk-sandbox.jar"> 
    <exclude-subsystems> 
    <subsystem name="weld" /> 
    </exclude-subsystems> 
    <exclusions> 
    <module name="javax.faces.api" slot="main" /> 
    <module name="com.sun.jsf-impl" slot="main" /> 
    </exclusions> 
    <dependencies> 
    <module name="com.sun.jsf-impl" slot="1.2" /> 
    <module name="javax.faces.api" slot="1.2" /> 
    <module name="org.apache.commons.beanutils" /> 
    <module name="org.apache.commons.collections" /> 
    <module name="org.apache.commons.lang" /> 
    <module name="org.apache.commons.logging" /> 
    </dependencies> 
</sub-deployment> 
<sub-deployment name="backoffice.war"> 
    <exclude-subsystems> 
    <subsystem name="weld" /> 
    </exclude-subsystems> 
    <exclusions> 
    <module name="javax.faces.api" slot="main" /> 
    <module name="com.sun.jsf-impl" slot="main" /> 
    </exclusions> 
    <dependencies> 
    <module name="com.sun.jsf-impl" slot="1.2" /> 
    <module name="javax.faces.api" slot="1.2" /> 
    <module name="net.sourceforge.jamonapi" /> 
    <module name="org.apache.commons.beanutils" /> 
    <module name="org.apache.commons.codec" /> 
    <module name="org.apache.commons.lang" /> 
    <module name="org.apache.commons.logging" /> 
    </dependencies> 
</sub-deployment> 

나는 그 밖의 무엇을 할 수 있냐?

답변

2

요약하면이 문제는 weld와 JSF 1.2의 비 호환성으로 인해 향후 릴리스에서 수정되지 않습니다 (here 참조).

    응용 프로그램 코드를 업그레이드
  1. JSF 2.x를 작동하도록 : 제 생각에는

    하나가 갈 수있는 세 가지 방법이 있습니다

  2. 필요하면 용접 서브 시스템을 제외하십시오 (야생 플라이의 기본 cdi 설정 재구성이 필요할 수 있습니다).
  3. 기존의 JSF API의 경우 다르게 작동하도록 클래스 ConversationAwareViewHandler에 적절하게 패치하십시오.

나를 위해 JSF 주입 모듈을 패치 할 수있는 옵션은 애플리케이션 업그레이드가 불가능하고 옵션 2는 애플리케이션의 대규모 재구성이 필요했기 때문입니다.

+0

매우 잘 설명되어 있습니다. JSF 1.2 슬롯을 사용하도록 용접을 구성하는 방법을 보여주는 다음 게시물 (https://access.redhat.com/solutions/1273803)을 발견했습니다. 그것은 EAP 6.3.0에서 잘 작동했습니다. – marciopd