Разговор шва внезапно заканчивается при использовании перенаправления - PullRequest
0 голосов
/ 26 апреля 2010

Поскольку я получаю некоторые ошибки в разговорах, заканчивающихся внезапно, я создал в своем проекте несколько тестовых страниц, которые воспроизводят проблему. Навигация происходит между pageA.xhtml и pageB.xhtml. Пожалуйста, скажите мне, если я использую что-то неправильно.

Моя конфигурация: Шов 2.2.0.GA WebLogic 10.3.2 (11g) Richfaces 3.3.2 JSF 1.2

Примечание: то же самое происходит при использовании аннотаций для начала / окончания разговора

=======

СТРАНИЦА А

@Name("pageaAction")
public class PageaAction {

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

        public String rule3() {

                person = new Person();
                person.setEmail("someone@gmail.com");
                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/>
...

=======

СТРАНИЦА 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" />
...

==========

ИСКЛЮЧЕНИЕ:

Это происходит после случайного числа перенаправлений.

javax.faces.FacesException:

{pagebAction.redirectA ()}: java.lang.IllegalStateException: Нет

контекст разговора активен в com.sun.faces.application.ActionListenerImpl.processAction (ActionListenerImpl.java:118) на javax.faces.component.UICommand.broadcast (UICommand.java:387) в org.ajax4jsf.component.AjaxViewRoot.processEvents (AjaxViewRoot.java:324) в org.ajax4jsf.component.AjaxViewRoot.broadcastEvents (AjaxViewRoot.java:299) в org.ajax4jsf.component.AjaxViewRoot.processPhase (AjaxViewRoot.java:256) в org.ajax4jsf.component.AjaxViewRoot.processApplication (AjaxViewRoot.java:469) в com.sun.faces.lifecycle.InvokeApplicationPhase.execute (InvokeApplicationPhase.java:82) на com.sun.faces.lifecycle.Phase.doPhase (Phase.java:100) на com.sun.faces.lifecycle.LifecycleImpl.execute (LifecycleImpl.java:118) в javax.faces.webapp.FacesServlet.service (FacesServlet.java:265) at weblogic.servlet.internal.StubSecurityHelper $ ServletServiceAction.run (StubSecurityHelper.java:227) на weblogic.servlet.internal.StubSecurityHelper.invokeServlet (StubSecurityHelper.java: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 (BaseFilter.java:530) на weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:56) в org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:83) в org.jboss.seam.web.IdentityFilter.doFilter (IdentityFilter.java:40) в org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) в org.jboss.seam.web.MultipartFilter.doFilter (MultipartFilter.java:90) в org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) в org.jboss.seam.web.ExceptionFilter.doFilter (ExceptionFilter.java:64) в org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) в org.jboss.seam.web.RedirectFilter.doFilter (RedirectFilter.java:45) в org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) в org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter (BaseXMLFilter.java:178) в org.ajax4jsf.webapp.BaseFilter.handleRequest (BaseFilter.java:290) в org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest (BaseFilter.java:388) в org.ajax4jsf.webapp.BaseFilter.doFilter (BaseFilter.java:515) в org.jboss.seam.web.Ajax4jsfFilter.doFilter (Ajax4jsfFilter.java:56) в org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) в org.jboss.seam.web.LoggingFilter.doFilter (LoggingFilter.java:60) в org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) в 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) на weblogic.servlet.internal.WebAppServletContext $ ServletInvocationAction.run (WebAppServletContext.java:3592) в weblogic.security.acl.internal.AuthenticatedSubject.doAs (AuthenticatedSubject.java:321) на weblogic.security.service.SecurityManager.runAs (SecurityManager.java:121) на weblogic.servlet.internal.WebAppServletContext.securedExecute (WebAppServletContext.java:2202) на weblogic.servlet.internal.WebAppServletContext.execute (WebAppServletContext.java:2108) на weblogic.servlet.internal.ServletRequestImpl.run (ServletRequestImpl.java:1432) на weblogic.work.ExecuteThread.execute (ExecuteThread.java:201) на weblogic.work.ExecuteThread.run (ExecuteThread.java:173) Вызванный: javax.faces.el.EvaluationException: java.lang.IllegalStateException: нет контекст разговора активен в javax.faces.component.MethodBindingMethodExpressionAdapter.invoke (MethodBindingMethodExpressionAdapter.java:102) в com.sun.faces.application.ActionListenerImpl.processAction (ActionListenerImpl.java:102) ... еще 45 Причина: java.lang.IllegalStateException: Нет контекст разговора активен в org.jboss.seam.ScopeType.getContext (ScopeType.java:133) в org.jboss.seam.Component.getValueToInject (Component.java:2325) в org.jboss.seam.Component.injectAttributes (Component.java:1736) в org.jboss.seam.Component.inject (Component.java:1554) в org.jboss.seam.core.BijectionInterceptor.aroundInvoke (BijectionInterceptor.java:61) в org.jboss.seam.intercept.SeamInvocationContext.proceed (SeamInvocationContext.java:68) в org.jboss.seam.core.ConversationInterceptor.aroundInvoke (ConversationInterceptor.java:65) в org.jboss.seam.intercept.SeamInvocationContext.proceed (SeamInvocationContext.java:68) в org.jboss.seam.core.MethodContextInterceptor.aroundInvoke (MethodContextInterceptor.java:44) в org.jboss.seam.intercept.SeamInvocationContext.proceed (SeamInvocationContext.java:68) в org.jboss.seam.intercept.RootInterceptor.invoke (RootInterceptor.java:107) в org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation (JavaBeanInterceptor.java:185) в 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) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) в org.jboss.el.util.ReflectionUtil.invokeMethod (ReflectionUtil.java:335) в org.jboss.el.util.ReflectionUtil.invokeMethod (ReflectionUtil.java:280) в org.jboss.el.parser.AstMethodSuffix.getValue (AstMethodSuffix.java:59) в org.jboss.el.parser.AstMethodSuffix.invoke (AstMethodSuffix.java:65) в org.jboss.el.parser.AstValue.invoke (AstValue.java:96) в org.jboss.el.MethodExpressionImpl.invoke (MethodExpressionImpl.java:276) в com.sun.facelets.el.TagMethodExpression.invoke (TagMethodExpression.java:68) в javax.faces.component.MethodBindingMethodExpressionAdapter.invoke (MethodBindingMethodExpressionAdapter.java:88) ... еще 46

1 Ответ

1 голос
/ 05 мая 2010

Это связано с именем модуля EJB шва. По умолчанию он называется так, как Maven имеет банку с именем:

JBoss шва-2.2.0.GA.jar

тогда как Weblogic работает только с

JBoss-seam.jar

Создан вопрос в JBoss Jira, содержит простой обходной путь.

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

...