Return-Path: Delivered-To: apmail-beehive-user-archive@www.apache.org Received: (qmail 26692 invoked from network); 30 Sep 2008 23:00:55 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 30 Sep 2008 23:00:55 -0000 Received: (qmail 52790 invoked by uid 500); 30 Sep 2008 23:00:53 -0000 Delivered-To: apmail-beehive-user-archive@beehive.apache.org Received: (qmail 52774 invoked by uid 500); 30 Sep 2008 23:00:53 -0000 Mailing-List: contact user-help@beehive.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Beehive Users" Delivered-To: mailing list user@beehive.apache.org Delivered-To: moderator for user@beehive.apache.org Received: (qmail 50879 invoked by uid 99); 30 Sep 2008 22:59:29 -0000 X-ASF-Spam-Status: No, hits=3.2 required=10.0 tests=HTML_MESSAGE,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C92350.041E8B99" Subject: RE: SharedFlowControllers can't access the session in non-action methods Date: Tue, 30 Sep 2008 15:58:12 -0700 Message-ID: <4BC3276ED3887B41B2CBB023C996EF660316D3F7@PDXC6002V.corp.edu-resources.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: SharedFlowControllers can't access the session in non-action methods Thread-Index: AckjTbIt6D4JVKs+Tr2QqJAoXBvI+gAAV/mQ From: "Adkinson, Sean" To: X-OriginalArrivalTime: 30 Sep 2008 22:58:12.0517 (UTC) FILETIME=[03D13D50:01C92350] X-Virus-Checked: Checked by ClamAV on apache.org ------_=_NextPart_001_01C92350.041E8B99 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Here is the actual stacktrace I see. Note that this was hit from the begin() method instead of the beforeAction() method I used as an example in the last email. =20 =20 =20 <000000> <30 Sep 2008 15:00:33,227 ERROR UtilityController: stacktrace: java.lang.IllegalStateException: getS ession was called outside of a valid context.> <000000> <30 Sep 2008 15:00:33,227 ERROR UtilityController: message:We're sorry, but an error has occurred.> =20 at org.apache.beehive.netui.pageflow.FlowController.getSession(FlowControll er.java:1003) at com.kcdistancelearning.pageflow.sharedFlow.utility.UtilityController.get PortalOrganizationId(UtilityController.java:225) at portlets.login.LoginController.begin(LoginController.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(Flow Controller.java:879) at org.apache.beehive.netui.pageflow.FlowController.getActionMethodForward( FlowController.java:809) at org.apache.beehive.netui.pageflow.FlowController.internalExecute(FlowCon troller.java:478) at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute(Pag eFlowController.java:306) at org.apache.beehive.netui.pageflow.FlowController.execute(FlowController. java:336) at org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execute( FlowControllerAction.java:52) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestPr ocessor.java:431) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201(Pa geFlowRequestProcessor.java:97) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunner. execute(PageFlowRequestProcessor.java:2044) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInte rceptors.wrapAction(ActionInterceptors.java:91) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processAction Perform(PageFlowRequestProcessor.java:2116) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java: 236) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processIntern al(PageFlowRequestProcessor.java:556) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageF lowRequestProcessor.java:853) at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(Auto RegisterActionServlet.java:631) at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlow ActionServlet.java:158) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at com.kcdistancelearning.servlet.IqOesPageFlowActionServlet.doGet(IqOesPag eFlowActionServlet.java:38) at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(St ubSecurityHelper.java:225) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityH elper.java:127) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:2 83) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:1 75) at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDis patcherImpl.java:496) at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatche rImpl.java:245) at org.apache.beehive.netui.pageflow.internal.DefaultForwardRedirectHandler .forward(DefaultForwardRedirectHandler.java:128) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.doForward(Pag eFlowRequestProcessor.java:1801) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processPageFl owRequest(PageFlowRequestProcessor.java:741) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processIntern al(PageFlowRequestProcessor.java:474) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageF lowRequestProcessor.java:853) at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(Auto RegisterActionServlet.java:631) at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlow ActionServlet.java:158) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at com.kcdistancelearning.servlet.IqOesPageFlowActionServlet.doGet(IqOesPag eFlowActionServlet.java:38) at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(St ubSecurityHelper.java:225) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityH elper.java:127) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:2 83) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java: 42) at com.kcdistancelearning.servlet.filter.IqOesTransactionFilter.wrapInTrans action(IqOesTransactionFilter.java:60) at com.kcdistancelearning.servlet.filter.IqOesTransactionFilter.doFilter(Iq OesTransactionFilter.java:51) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java: 42) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.r un(WebAppServletContext.java:3212) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSu bject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121 ) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServ letContext.java:1983) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletCont ext.java:1890) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java :1344) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) at weblogic.work.ExecuteThread.run(ExecuteThread.java:181) =20 =20 =20 Sean Adkinson ________________________________ From: Adkinson, Sean=20 Sent: Tuesday, September 30, 2008 3:42 PM To: 'user@beehive.apache.org' Subject: SharedFlowControllers can't access the session in non-action methods =20 Hey there, =20 We have recently started utilizing shared flow controllers for session getters that used to be in inherited controllers. The reason for this was to abstract out our inherited controllers in order to be used across multiple applications in a common code sort of way, but still have a central location for accessing certain session values. =20 However, it doesn't appear as if you can access the session in a SharedFlowController when you haven't come in through an action, since setPerRequestState is never called in FlowController in this case. Would it be appropriate to call setPerRequestState for each SharedFlowController whenever setPerRequestState is called? =20 Here are snippets of what I am doing: =20 =20 @Jpf.Controller(...) public class UtilityController extends SharedFlowController { =20 public Integer getOrganizationId() { return (Integer)getSession().getAttribute(SessionConstants.ORGANIZATION_ID); } =20 } =20 =20 @Jpf.Controller( ... sharedFlowRefs =3D { @Jpf.SharedFlowRef(name =3D "utilityController", = type =3D UtilityController.class) } ) public class LoginController extends PageFlowController { =20 @Jpf.SharedFlowField(name =3D "utilityController") private UtilityController utilityController; =20 =20 protected final synchronized void beforeAction() throws Exception { //fail here System.out.println("Organization ID: " + utilityController.getOrganizationId()); } } =20 =20 When getOrganizationId() lived in an inherited controller, the method worked fine, since setPerRequestState() had been called for this controller. If the code were changed to call setPerRequestState() for each of the shared controllers when it called was called for the current controller, this looks like it would work just fine. =20 Any thoughts or suggestions? Thanks for you help! =20 =20 =20 Sean Adkinson | Web Developer/Programmer | KCDL | sadkinson@klcorp.com | (503) 731-5488 | (503) 866-0852 cell =20 ------_=_NextPart_001_01C92350.041E8B99--