private void endHereCommon() throws BeanException { // save EJB object handle in property if (ejb != null) { try { hPubAccessHandle = ejb.getHandle(); } catch (Exception e) { String errMsg = (new Date(System.currentTimeMillis())).toString() + " HPS5955 " + this.getClass().getName() + ": ejb.getHandle(), ejb=" + ejb + ": " + e.getClass().getName() + ": " + e.getMessage(); System.err.println(errMsg); if (tracing == true) { traceArgs[0] = this; traceArgs[1] = errMsg; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } throw new BeanException(errMsg); } } // save ejb accessHandle and hpubLinkKey in HttpSession if ((oHttpServletRequest != null) && (outputProps != null)) { // a new HPubEjb2HttpSessionBindingListener object containing the ejb access // handle and hPubLinkKey for the connection is bound to the session using // a prefix and the ending connection state of the IO just processed. // This hPubLinkKey uniquely identifies the connection associated with the // IO chain for that HP Runtime JVM. // The ejb access handle is contained within the HPubEjb2HttpSessionBindingListener // object so that an ejb remove can be issued in the case where a session // timeout or session invalidation occurs for an incomplete IO chain. HttpSession theWebsession = oHttpServletRequest.getSession(true); if (theWebsession != null) { synchronized (theWebsession) { try { String theKey = KEY_WEBCONN + outputProps.getHPubEndChainName(); hPubLinkKey = outputProps.getHPubLinkKey(); theWebsession.setAttribute( theKey, new HPubEJB2HttpSessionBindingListener(hPubAccessHandle, hPubLinkKey)); if (tracing == true) { traceArgs[0] = this; traceArgs[1] = "theWebsession.setAttribute(" + theKey + ",new HPubEJB2HttpSessionBindingListener(" + hPubAccessHandle + ", " + hPubLinkKey + "))"; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } if (auditing == true) { auditArgs[0] = "\n---\nIN:" + this.getClass().getName() + " " + theKey + " " + hPubAccessHandle + " " + hPubLinkKey + " " + theWebsession.getId(); auditArgs[1] = theWebsession; try { auditMethod.invoke(o, auditArgs); } catch (Exception x) { } } } catch (Exception e) { hPubLinkKey = null; // set to null to force following error logic } } } // if an error occurred throw an exception to cause ejb remove to be issued. if ((theWebsession == null) || (hPubLinkKey == null)) { String errMsg = (new Date(System.currentTimeMillis())).toString() + " HPS5956 " + this.getClass().getName() + ": HttpServletRequest.getSession(true), hPubLinkKey=" + hPubLinkKey; System.err.println(errMsg); if (tracing == true) { traceArgs[0] = this; traceArgs[1] = errMsg; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } throw new BeanException(errMsg); } } // send Event to User indicating that the Query request is complete RequestCompleteEvent hPubEvent = new RequestCompleteEvent(this); fireHPubReqCompleteEvent(hPubEvent); return; }
/** * Processes the request coming to the servlet and grabs the attributes set by the servlet and * uses them to fire off pre-determined methods set in the setupActionMethods function of the * servlet. * * @param request the http request coming from the browser. * @param response the http response going to the browser. * @throws javax.servlet.ServletException * @throws java.io.IOException */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (!actionInitialized) { LogController.write(this, "This dispatcher servlet is not initialized properly!"); return; } if (actionTag == null) { LogController.write(this, "There is no action attribute tag name!"); return; } HttpSession httpSession = request.getSession(); UserSession userSession = (UserSession) httpSession.getAttribute("user_session"); if (userSession == null) { LogController.write(this, "User session is no longer available in this http session."); userSession = new UserSession(); // We always want a user session though... httpSession.setAttribute("user_session", userSession); } String action = (String) request.getAttribute(actionTag); try { if (action == null) { // There is no action attribute specified, check parameters. String external_action = (String) request.getParameter(actionTag); if (external_action != null) { Method method = externalActions.get(external_action); if (method != null) { LogController.write(this, "Performing external action: " + external_action); method.invoke(this, new Object[] {userSession, request, response}); } else { if (defaultExternalMethod != null) { LogController.write(this, "Performing default external action."); defaultExternalMethod.invoke(this, new Object[] {userSession, request, response}); } else { LogController.write(this, "Unable to perform default external action."); } } } else { if (defaultExternalMethod != null) { LogController.write(this, "Performing default external action."); defaultExternalMethod.invoke(this, new Object[] {userSession, request, response}); } else { LogController.write(this, "Unable to perform default external action."); } } } else { Method method = internalActions.get(action); if (method != null) { LogController.write(this, "Performing internal action: " + action); method.invoke(this, new Object[] {userSession, request, response}); } else { if (defaultInternalMethod != null) { LogController.write(this, "Performing default internal action."); defaultInternalMethod.invoke(this, new Object[] {userSession, request, response}); } else { LogController.write(this, "Unable to perform default internal action."); } } request.removeAttribute("application_action"); } } catch (IllegalAccessException accessEx) { LogController.write(this, "Exception while processing request: " + accessEx.getMessage()); } catch (InvocationTargetException invokeEx) { LogController.write(this, "Exception while processing request: " + invokeEx.toString()); invokeEx.printStackTrace(); } catch (Exception ex) { LogController.write(this, "Unknown exception: " + ex.toString()); } }