|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
RE: SharedFlowControllers can't access the session in non-action methodsHere 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. <Sep 30, 2008 3:00:33 PM PDT> <Notice> <Stdout> <000000> <30 Sep 2008 15:00:33,227 ERROR UtilityController: stacktrace: java.lang.IllegalStateException: getS ession was called outside of a valid context.> <Sep 30, 2008 3:00:33 PM PDT> <Notice> <Stdout> <000000> <30 Sep 2008 15:00:33,227 ERROR UtilityController: message:We're sorry, but an error has occurred.> 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) Sean Adkinson ________________________________ From: Adkinson, Sean Sent: Tuesday, September 30, 2008 3:42 PM To: 'user@...' Subject: SharedFlowControllers can't access the session in non-action methods Hey there, 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. 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? Here are snippets of what I am doing: @Jpf.Controller(...) public class UtilityController extends SharedFlowController { public Integer getOrganizationId() { return (Integer)getSession().getAttribute(SessionConstants.ORGANIZATION_ID); } } @Jpf.Controller( ... sharedFlowRefs = { @Jpf.SharedFlowRef(name = "utilityController", type = UtilityController.class) } ) public class LoginController extends PageFlowController { @Jpf.SharedFlowField(name = "utilityController") private UtilityController utilityController; protected final synchronized void beforeAction() throws Exception { //fail here System.out.println("Organization ID: " + utilityController.getOrganizationId()); } } 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. Any thoughts or suggestions? Thanks for you help! Sean Adkinson | Web Developer/Programmer | KCDL | sadkinson@... | (503) 731-5488 | (503) 866-0852 cell |
| Free embeddable forum powered by Nabble | Forum Help |