2010-04-26 2 views
0

대화가 갑자기 종료되는 오류가 발생했기 때문에 프로젝트에서 문제를 재현하는 일부 테스트 페이지를 만들었습니다. 탐색은 pageA.xhtml과 pageB.xhtml 사이에서 수행됩니다. 내가 잘못된 방식으로 뭔가를 사용하고 있는지 말해주십시오.Redirect를 사용할 때 갑자기 Seam 대화가 종료됩니다.

내 구성 : 심 2.2.0.GA 로직 10.3.2 (11g) Richfaces 3.3.2 JSF 1.2

참고/종료 대화를 시작하는 주석을 사용하는 경우에도 마찬가지

=======

페이지 A

@Name("pageaAction") 
public class PageaAction { 

     @Out(required = false, scope = ScopeType.CONVERSATION) 
     Person person; 

     public String rule3() { 

       person = new Person(); 
       person.setEmail("[email protected]"); 
       person.setName("markos"); 
       return "rule3"; 
     } 
} 





<?xml version="1.0" encoding="UTF-8"?> 
<page> 
     <navigation> 
       <rule if-outcome="rule3"> 
         <begin-conversation /> 
         <redirect view-id="/pages/seam_sandbox/pageb.xhtml" /> 
       </rule> 
     </navigation> 
</page> 

... 
<h:commandButton action="#{pageaAction.rule3()}" value="h:commandButton" /><br/> 
... 

=== ====

PAGE의 B

@Name("pagebAction") 
public class PagebAction { 

     @In(required = false, scope = ScopeType.CONVERSATION) 
     Person person; 

     public String redirectA() { 

       return "redirectA"; 
     } 

} 


<?xml version="1.0" encoding="UTF-8"?> 
<page> 
     <navigation> 
       <rule if-outcome="redirectA"> 
         <end-conversation before-redirect="true" /> 
         <redirect view-id="/pages/seam_sandbox/pagea.xhtml" /> 
       </rule> 
     </navigation> 
</page> 

... 
<h:commandButton action="#{pagebAction.redirectA()}" value="h:commandButton" /> 
... 

==========

EXCEPTION :

이 리디렉션 난수 후에 일어난다.

javax.faces.FacesException :

{pagebAction.redirectA()} : java.lang.IllegalStateException : com.sun.faces.application.ActionListenerImpl에서 활성 없음

대화 상황. processAction (ActionListenerImpl.java:118) at javax.faces.component.UICommand.broadcast (UICommand.java:387) at org.ajax4jsf.component.AjaxViewRoot.processEvents (AjaxViewRoot.java:324) at org.ajax4jsf. component.AjaxViewRoot.broadcastEvents (AjaxViewRoot.java:299)(AjaxViewRoot.java:256) at org.ajax4jsf.component.AjaxViewRoot.processApplication (AjaxViewRoot.java:469) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute InvokeApplicationPhase.java:82) at com.sun.faces.lifecycle.Phase.doPhase (Phase.java:100) at com.sun.faces.lifecycle.LifecycleImpl.execute (LifecycleImpl.java:118) at javax. weblogic.servlet.internal.StubSecurityHelper.invokeServlet에서 weblogic.servlet.internal.StubSecurityHelper $ ServletServiceAction.run (StubSecurityHelper.java:227) (StubSecurityHelper.java에서 faces.webapp.FacesServlet.service (FacesServlet.java:265) : 125) weblogic.servlet.internal.ServletStubImpl.execute (ServletStubImpl.java : 292) weblogic.servlet.internal.TailFilter.doFilter (TailFilter.java:26에서 ) weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:56에서 )에서 org.ajax4jsf.webapp.BaseFilter.doFilter 조직에서 org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter에서 (BaseFilter.java:530) weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:56)에서 (SeamFilter.java:83) .jboss.seam.web.IdentityFilter.doFilter (IdentityFilter.java:40) at org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) at org.jboss.seam.web.MultipartFilter .doFilter (MultipartFilter.java:90) at org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) at org.jboss.seam.web.ExceptionFilter.doFilter (ExceptionFilter.java:64) at org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter. java : 69) at org.jboss.seam.web.RedirectFilter.doFilter (RedirectFilter.java:45) at org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) at org. org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest에서 org.ajax4jsf.webapp.BaseFilter.handleRequest (BaseFilter.java:290) 에서 ajax4jsf.webapp.BaseXMLFilter.doXmlFilter (BaseXMLFilter.java:178) (BaseFilter.java:388) at org.ajax4jsf.webapp.BaseFilter.doFilter (BaseFilter.java:515) at org.jboss.seam.web.Ajax4jsfFilter.doF ilter (Ajax4jsfFilter.java:56) at org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) at org.jboss.seam.web.LoggingFilter.doFilter (LoggingFilter.java:60) at org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) at org.jboss.seam.servlet.SeamFilter.doFilter (SeamFilter.java:158) weblogic.servlet.internal. FilterChainImpl.doFilter (FilterChainImpl.java:56) weblogic.servlet.internal.RequestEventsFilter.doFilter (RequestEventsFilter.java:27)에서 weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:56)에서 웹 로직에서 . servlet.internal.WebAppServletContext $ ServletInvocationAction.run (WebAppServletContext.java:3592) at weblogi cryptor.acl.internal.AuthenticatedSubject.doAs (AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs (SecurityManager.java:121) at weblogic.servlet.internal.WebAppServletContext.securedExecute (WebAppServletContext. 자바 : 2202) weblogic.servlet.internal.WebAppServletContext.execute에서 (WebAppServletContext.java:2108) weblogic.work.ExecuteThread.execute에서 weblogic.servlet.internal.ServletRequestImpl.run (ServletRequestImpl.java:1432) 에서 ( javax.faces.el.EvaluationException : java.lang.IllegalStateException :에 의한 weblogic.work.ExecuteThread.run (ExecuteThread.java:173) 에서 ExecuteThread.java:201) 활성 없음 대화 컨텍스트 에서 javax.faces.component.MethodBindingMethodExpressionAdapter.invoke (MethodBindingMethodExpressionAdapter.java:102) com.sun.faces.application.ActionListenerImpl.processAction (ActionListenerImpl.java:102) ... 45 자세한 정보 원인 : java.lang .IllegalStateException : org.jboss에서 org.jboss.seam.Component.getValueToInject (Component.java:2325) 에서 org.jboss.seam.ScopeType.getContext (ScopeType.java:133) 에서 활성 없음 대화 상황. org.jboss.seam.Component.inject (Component.java:1554)의 에서 seam.Component.injectAttributes (Component.java:1736) org.jboss.seam.core.BijectionInterceptor.aroundInvoke (BijectionInterceptor.java:61) org.jboss.seam.intercept.SeamInvocation의 Context.proceed (SeamInvocationContext.java:68) at org.jboss.seam.core.ConversationInterceptor.aroundInvoke (ConversationInterceptor.java:65) at org.jboss.seam.intercept.SeamInvocationContext.proceed (SeamInvocationContext.java:68) org.jboss.seam.intercept.SeamInvocationContext.proceed에서 org.jboss.seam.core.MethodContextInterceptor.aroundInvoke (MethodContextInterceptor.java:44) (SeamInvocationContext.java:68) org.jboss.seam.intercept에서 에서 . RootInterceptor.invoke (RootInterceptor.java:107) at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation (JavaBeanInterceptor.java:185) at org.jboss.seam.intercept.JavaBeanInterceptor.invoke (JavaBeanInterceptor.java:103) eu.emea.pim.prs.web.seamsandbox에서 PagebAction _ $$ _ javassist_seam_8.redirectA (PagebAction _ $$ _ javassist_seam_8.java) sun.reflect.NativeMethodAccessorImpl.invoke0 (기본 방법) 에서 sun.reflect에서 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)에서. org.jboss.el.util.ReflectionUtil.invokeMethod (ReflectionUtil.java:335) 에서 java.lang.reflect.Method.invoke (Method.java:597) 에서 DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)에서 org.jboss.el.util.ReflectionUtil.invokeMethod (ReflectionUtil.java:280) at org.jboss.el.parser.AstMethodSuffix.getValue (AstMethodSuffix.java:59) at org.jboss.el.parser.AstMethodSuffix. invoke (AstMethodSuffix.java:65) at 또는 g.jboss.el.parser.AstValue.invoke (AstValue.java:96) at org.jboss.el.MethodExpressionImpl.invoke (MethodExpressionImpl.java:276) at com.sun.facelets.el.TagMethodExpression.invoke TagMethodExpression.java:68) javax.faces.component.MethodBindingMethodExpressionAdapter.invoke (MethodBindingMethodExpressionAdapter.java:88) 에서 ...

+0

다시 한번 응답 해 주셔서 감사합니다! 이것은 리디렉션 후 포스트 시나리오입니다. 왜 드문 일입니까? 주소 표시 줄에보고있는 페이지를 표시하려면 리디렉션을 사용합니다. 페이지 A에있을 때 사용자가 클릭하면 POST 요청을 A로 보내면 B 페이지로 리디렉션됩니다. 따라서 페이지 B는 화면과 주소 표시 줄에 모두 있습니다. 그 다음, 사용자는 페이지 B를 클릭하고, POST 요청을 B로 보내서 페이지 A로 리디렉션합니다. 이제 페이지 A는 화면과 주소 표시 줄에 모두 있습니다. 올바르지 않은 것은 무엇입니까? –

+0

좋습니다. Seam 2.2 및 Weblogic App 서버를 사용하고 있습니다. 계속하기 전에 JBoss App 서버를 사용하여 테스트하고 어떤 일이 일어나는지보십시오. 무언가가 잘못되면 말해줘. 나는 비슷한 시나리오를 사용하여 혼자서 시도 할 것이다. 당신의 답변에 감사드립니다! –

답변

1

이 심 EJB 모듈의 이름과 관련이있다 더 (46). 기본적으로이 방식 메이븐라는 병이 이름 :

제이 보스 솔기 - 2.2.0.GA.jar을

웹 로직에만

제이 보스 솔기와 함께 작동하는 반면 .jar

쉬운 해결 방법이 포함 된 JBoss Jira에서 문제가 생성되었습니다.

https://jira.jboss.org/jira/browse/JBSEAM-4644

+0

좋은 직업, Markos (+1) 두통이 많이 생길 수 있음 자신과 같은 비 웹 로직 사용자에게 –

관련 문제