// The default constructor public CrownCounselIndexGetList_Access() { String traceProp = null; if ((traceProp = System.getProperty(HOSTPUBLISHER_ACCESSBEAN_TRACE)) != null) { try { Class c = Class.forName(HOSTPUBLISHER_ACCESSTRACE_OBJECT); Method m = c.getMethod("getInstance", null); o = m.invoke(null, null); Class parmTypes[] = {String.class}; m = c.getMethod("initTrace", parmTypes); Object initTraceArgs[] = {traceProp}; BitSet tracingBS = (BitSet) m.invoke(o, initTraceArgs); Class parmTypes2[] = {Object.class, String.class}; traceMethod = c.getMethod("trace", parmTypes2); tracing = tracingBS.get(HOSTPUBLISHER_ACCESSBEAN_TRACING); Class parmTypes3[] = {String.class, HttpSession.class}; auditMethod = c.getMethod("audit", parmTypes3); auditing = tracingBS.get(HOSTPUBLISHER_ACCESSBEAN_AUDITING); } catch (Exception e) { // no tracing will be done System.err.println( (new Date(System.currentTimeMillis())).toString() + " hostpublisher.accessbean.trace=" + traceProp + ", Exception=" + e.toString()); } } if (tracing == true) { traceArgs[0] = this; traceArgs[1] = " CrownCounselIndexGetList_Access()"; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { System.err.println( (new Date(System.currentTimeMillis())).toString() + " traceMethod.invoke(null, traceArgs)" + ", Exception=" + x.toString()); } } inputProps = new CrownCounselIndexGetList_Properties(); return; }
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; }
/** all processing methods end up here */ private void startHereCommon() throws BeanException { // try to get the linkKey if already set in input properties try { hPubLinkKey = inputProps.getHPubLinkKey(); } catch (Exception e) { } // if running in Web environment and either the ejb access handle or // the linkKey are null, try to get them from the HttpSession if (oHttpServletRequest != null) { HttpSession theWebsession = oHttpServletRequest.getSession(false); if (theWebsession != null) { synchronized (theWebsession) { try { if (tracing == true) { traceArgs[0] = this; traceArgs[1] = "HttpSession.getId()=" + theWebsession.getId(); try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } String theKey = KEY_WEBCONN + inputProps.getHPubStartChainName(); // if linkKey or access handle is null try to get it from Websession HPubEJB2HttpSessionBindingListener sbl = (HPubEJB2HttpSessionBindingListener) theWebsession.getAttribute(theKey); if ((hPubLinkKey == null) && (sbl != null)) { hPubLinkKey = sbl.getLinkKey(); if (tracing == true) { traceArgs[0] = this; traceArgs[1] = "HttpSession.getAttribute(hPubLinkKey)=" + hPubLinkKey; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } inputProps.setHPubLinkKey(hPubLinkKey); } if ((hPubAccessHandle == null) && (sbl != null)) { hPubAccessHandle = sbl.getEjbHandle(); if (tracing == true) { traceArgs[0] = this; traceArgs[1] = "HttpSession.getAttribute(hPubAccessHandle)=" + hPubAccessHandle; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } } // set the ejb handle to null before removing the Session Binding // Listener object if (auditing == true) { if (sbl != null) auditArgs[0] = "\n---\nOUT:" + this.getClass().getName() + " " + theKey + " " + hPubAccessHandle + " " + hPubLinkKey + " " + theWebsession.getId(); else // error - object not found in HttpSession auditArgs[0] = "\n---\nERR:" + this.getClass().getName() + " " + theKey + " " + theWebsession.getId(); auditArgs[1] = theWebsession; try { auditMethod.invoke(o, auditArgs); } catch (Exception x) { } } if (sbl != null) sbl.setEjbHandle(null); theWebsession.removeAttribute(theKey); } catch (IllegalStateException e) { } } } } // if either of required properties are still null then the ejb cannot // be accessed - throw an exception. if ((hPubAccessHandle == null) || (hPubLinkKey == null)) { String errMsg = (new Date(System.currentTimeMillis())).toString() + " HPS5951 " + this.getClass().getName() + ": hPubAccessHandle==null || hPubLinkKey==null"; 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); } else { if (tracing == true) { traceArgs[0] = this; traceArgs[1] = "hPubAccessHandle=" + hPubAccessHandle + ",hPubLinkKey=" + hPubLinkKey; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } } // get the EJB object from the handle try { ejb = (com.ibm.HostPublisher.EJB.HPubEJB2) javax.rmi.PortableRemoteObject.narrow( hPubAccessHandle.getEJBObject(), com.ibm.HostPublisher.EJB.HPubEJB2.class); } catch (Exception e) { String errMsg = (new Date(System.currentTimeMillis())).toString() + " HPS5952 " + this.getClass().getName() + ": getEJBObject(): " + 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); } // if ejb handle, go invoke the HPubEJB's main business method. if (ejb != null) { try { outputProps = (CrownCounselIndexGetList_Properties) ejb.processIO(inputProps); inputProps = outputProps; inputProps.setInitialCall(false); } catch (Exception e) { String errMsg = (new Date(System.currentTimeMillis())).toString() + " HPS5953 " + this.getClass().getName() + ": processIO(" + inputProps.getClass().getName() + "): " + 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); } } endHereCommon(); return; }
/** The EJB client's class */ public class CrownCounselIndexGetList_Access implements Runnable { // local variables used for tracing private static final String HOSTPUBLISHER_ACCESSBEAN_TRACE = "hostpublisher.accessbean.trace"; private static final String HOSTPUBLISHER_ACCESSTRACE_OBJECT = "AccessEJBTrace"; private static final int HOSTPUBLISHER_ACCESSBEAN_TRACING = 0; private static final int HOSTPUBLISHER_ACCESSBEAN_AUDITING = 1; private boolean tracing = false; private boolean auditing = false; private Method traceMethod; private Method auditMethod; private Object traceArgs[] = new Object[2]; private Object auditArgs[] = new Object[2]; private Object o; // local variables used for ejb objects private HPubEJB2Home ejbHome = null; private HPubEJB2 ejb = null; // zos platform does not allow ejb remove from finalize method. // a System property is queried to determine how ejb remove should be processed private String zosRuntime = System.getProperty("hostpublisher.jvm.zosruntime"); // prefix of key used for saving access handle with HttpSessionBindingListener object. // start/end chain name of IO's in chain is appended to form actual key. // note total length of key must be <= 24 chars (required for WAS session persistence). // this leaves up to 16 chars for chain name. private static final String KEY_WEBCONN = "c.i.h.e."; // local copies of HttpServletRequest and HttpServletResponse private HttpServletRequest oHttpServletRequest = null; private HttpServletResponse oHttpServletResponse = null; // name of the Integration Object to be processed private static final String hPubIOName = "IntegrationObject.CrownCounselIndexGetList"; // list of listeners for RequestCompleteEvent Vector listenerList = new Vector(); // local variables for input & output Properties objects CrownCounselIndexGetList_Properties inputProps = null; CrownCounselIndexGetList_Properties outputProps = null; // ejb accessHandle property javax.ejb.Handle hPubAccessHandle = null; // hPubLinkKey for use with IO chains String hPubLinkKey = null; // version number of this Access bean String hPubAccessBeanVersion = "EJB_1.1_AccessBean"; // The default constructor public CrownCounselIndexGetList_Access() { String traceProp = null; if ((traceProp = System.getProperty(HOSTPUBLISHER_ACCESSBEAN_TRACE)) != null) { try { Class c = Class.forName(HOSTPUBLISHER_ACCESSTRACE_OBJECT); Method m = c.getMethod("getInstance", null); o = m.invoke(null, null); Class parmTypes[] = {String.class}; m = c.getMethod("initTrace", parmTypes); Object initTraceArgs[] = {traceProp}; BitSet tracingBS = (BitSet) m.invoke(o, initTraceArgs); Class parmTypes2[] = {Object.class, String.class}; traceMethod = c.getMethod("trace", parmTypes2); tracing = tracingBS.get(HOSTPUBLISHER_ACCESSBEAN_TRACING); Class parmTypes3[] = {String.class, HttpSession.class}; auditMethod = c.getMethod("audit", parmTypes3); auditing = tracingBS.get(HOSTPUBLISHER_ACCESSBEAN_AUDITING); } catch (Exception e) { // no tracing will be done System.err.println( (new Date(System.currentTimeMillis())).toString() + " hostpublisher.accessbean.trace=" + traceProp + ", Exception=" + e.toString()); } } if (tracing == true) { traceArgs[0] = this; traceArgs[1] = " CrownCounselIndexGetList_Access()"; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { System.err.println( (new Date(System.currentTimeMillis())).toString() + " traceMethod.invoke(null, traceArgs)" + ", Exception=" + x.toString()); } } inputProps = new CrownCounselIndexGetList_Properties(); return; } // Generated getters public java.lang.String getHPubMacroMessage() { if (outputProps != null) return (outputProps.getHPubMacroMessage()); else return (inputProps.getHPubMacroMessage()); } public java.lang.String getCrownCounselIndexSearchList() { if (outputProps != null) return (outputProps.getCrownCounselIndexSearchList()); else return (inputProps.getCrownCounselIndexSearchList()); } public java.lang.String getHPubEndChainName() { if (outputProps != null) return (outputProps.getHPubEndChainName()); else return (inputProps.getHPubEndChainName()); } public java.lang.String getSurnameOut() { if (outputProps != null) return (outputProps.getSurnameOut()); else return (inputProps.getSurnameOut()); } public java.lang.String[] getCrownCounselIndexSearchListCrownType() { if (outputProps != null) return (outputProps.getCrownCounselIndexSearchListCrownType()); else return (inputProps.getCrownCounselIndexSearchListCrownType()); } public java.lang.String getCrownCounselIndexSearchListCrownType(int index) { if (outputProps != null) return (outputProps.getCrownCounselIndexSearchListCrownType(index)); else return (inputProps.getCrownCounselIndexSearchListCrownType(index)); } public java.lang.String getHPubXMLProperties() { if (outputProps != null) return (outputProps.getHPubXMLProperties()); else return (inputProps.getHPubXMLProperties()); } public java.lang.String[] getCrownCounselIndexSearchListCrownId() { if (outputProps != null) return (outputProps.getCrownCounselIndexSearchListCrownId()); else return (inputProps.getCrownCounselIndexSearchListCrownId()); } public java.lang.String getCrownCounselIndexSearchListCrownId(int index) { if (outputProps != null) return (outputProps.getCrownCounselIndexSearchListCrownId(index)); else return (inputProps.getCrownCounselIndexSearchListCrownId(index)); } public java.lang.String getHPubXMLPropertiesWithoutInvoking() { if (outputProps != null) return (outputProps.getHPubXMLPropertiesWithoutInvoking()); else return (inputProps.getHPubXMLPropertiesWithoutInvoking()); } public java.lang.String getHPubConnectionOverrides() { if (outputProps != null) return (outputProps.getHPubConnectionOverrides()); else return (inputProps.getHPubConnectionOverrides()); } public java.lang.String getReturnMessage() { if (outputProps != null) return (outputProps.getReturnMessage()); else return (inputProps.getReturnMessage()); } public int getHPubStartType() { if (outputProps != null) return (outputProps.getHPubStartType()); else return (inputProps.getHPubStartType()); } public java.lang.String getHPubStartPoolName() { if (outputProps != null) return (outputProps.getHPubStartPoolName()); else return (inputProps.getHPubStartPoolName()); } public java.lang.Exception getHPubErrorException() { if (outputProps != null) return (outputProps.getHPubErrorException()); else return (inputProps.getHPubErrorException()); } public java.lang.String getHPubBeanName() { if (outputProps != null) return (outputProps.getHPubBeanName()); else return (inputProps.getHPubBeanName()); } public int getHPubErrorOccurred() { if (outputProps != null) return (outputProps.getHPubErrorOccurred()); else return (inputProps.getHPubErrorOccurred()); } public java.lang.String getHPubErrorMessage() { if (outputProps != null) return (outputProps.getHPubErrorMessage()); else return (inputProps.getHPubErrorMessage()); } public java.lang.String getHPubScreenState() { if (outputProps != null) return (outputProps.getHPubScreenState()); else return (inputProps.getHPubScreenState()); } public java.lang.String getMore() { if (outputProps != null) return (outputProps.getMore()); else return (inputProps.getMore()); } public java.lang.String getHPubStartChainName() { if (outputProps != null) return (outputProps.getHPubStartChainName()); else return (inputProps.getHPubStartChainName()); } public java.lang.String getHPubOutputParmSuffix() { if (outputProps != null) return (outputProps.getHPubOutputParmSuffix()); else return (inputProps.getHPubOutputParmSuffix()); } public java.lang.String[] getCrownCounselIndexSearchListHomeLocation() { if (outputProps != null) return (outputProps.getCrownCounselIndexSearchListHomeLocation()); else return (inputProps.getCrownCounselIndexSearchListHomeLocation()); } public java.lang.String getCrownCounselIndexSearchListHomeLocation(int index) { if (outputProps != null) return (outputProps.getCrownCounselIndexSearchListHomeLocation(index)); else return (inputProps.getCrownCounselIndexSearchListHomeLocation(index)); } public java.lang.String[] getCrownCounselIndexSearchListHomeCourt() { if (outputProps != null) return (outputProps.getCrownCounselIndexSearchListHomeCourt()); else return (inputProps.getCrownCounselIndexSearchListHomeCourt()); } public java.lang.String getCrownCounselIndexSearchListHomeCourt(int index) { if (outputProps != null) return (outputProps.getCrownCounselIndexSearchListHomeCourt(index)); else return (inputProps.getCrownCounselIndexSearchListHomeCourt(index)); } public java.lang.String getHPubLinkKey() { if (outputProps != null) return (outputProps.getHPubLinkKey()); else return (inputProps.getHPubLinkKey()); } public java.lang.String getHPubBeanType() { if (outputProps != null) return (outputProps.getHPubBeanType()); else return (inputProps.getHPubBeanType()); } public java.lang.String[] getCrownCounselIndexSearchListName() { if (outputProps != null) return (outputProps.getCrownCounselIndexSearchListName()); else return (inputProps.getCrownCounselIndexSearchListName()); } public java.lang.String getCrownCounselIndexSearchListName(int index) { if (outputProps != null) return (outputProps.getCrownCounselIndexSearchListName(index)); else return (inputProps.getCrownCounselIndexSearchListName(index)); } public int getHPubEndType() { if (outputProps != null) return (outputProps.getHPubEndType()); else return (inputProps.getHPubEndType()); } public java.lang.String getHPubIOName() { return new String(hPubIOName); } public java.lang.Object getHPubAccessHandle() { return hPubAccessHandle; } public java.lang.String getHPubAccessBeanVersion() { return new String(hPubAccessBeanVersion); } // Generated setters. public void setHPubMacroMessage(java.lang.String value) { inputProps.setHPubMacroMessage(value); } public void setHPubEndChainName(java.lang.String value) { inputProps.setHPubEndChainName(value); } public void setHPubConnectionOverrides(java.lang.String value) { inputProps.setHPubConnectionOverrides(value); } public void setHPubStartType(int value) { inputProps.setHPubStartType(value); } public void setHPubStartPoolName(java.lang.String value) { inputProps.setHPubStartPoolName(value); } public void setHPubScreenState(java.lang.String value) { inputProps.setHPubScreenState(value); } public void setHPubStartChainName(java.lang.String value) { inputProps.setHPubStartChainName(value); } public void setHPubLinkKey(java.lang.String value) { inputProps.setHPubLinkKey(value); } public void setHPubEndType(int value) { inputProps.setHPubEndType(value); } // Generated execution methods public java.lang.String getHPubXMLProperties(java.lang.String value) { if (tracing == true) { traceArgs[0] = this; traceArgs[1] = "CrownCounselIndexGetList_Access.getHPubXMLProperties(String)"; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } inputProps.setHPubStyleSheet(value); try { startHereCommon(); } catch (BeanException e) { // remove the ejb instance if handle exists if (ejb != null) { try { ejb.remove(); } catch (Exception x) { } ejb = null; } // go set error fields setupErrorFields(e); } if (outputProps != null) return outputProps.getHPubXMLData(); else return null; } public void setHPubAccessHandle(java.lang.Object value) { hPubAccessHandle = (javax.ejb.Handle) value; } /** processing method invoked from a Web environment */ public void doHPTransaction(HttpServletRequest req, HttpServletResponse resp) throws BeanException { oHttpServletRequest = req; oHttpServletResponse = resp; if (tracing == true) { traceArgs[0] = this; traceArgs[1] = " CrownCounselIndexGetList_Access.doHPTransaction()"; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } try { startHereCommon(); } catch (BeanException e) { // remove the ejb instance if handle exists if (ejb != null) { try { ejb.remove(); } catch (Exception x) { } ejb = null; } // go set error fields setupErrorFields(e); throw e; // rethrow the exception. } } /** processing method invoked from application */ public void processRequest() throws BeanException { if (tracing == true) { traceArgs[0] = this; traceArgs[1] = " CrownCounselIndexGetList_Access.processRequest()"; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } try { startHereCommon(); } catch (BeanException e) { // remove the ejb instance if handle exists if (ejb != null) { try { ejb.remove(); } catch (Exception x) { } ejb = null; } // go set error fields setupErrorFields(e); throw e; } } private void fixNullInputsForSOAP(CrownCounselIndexGetList_Properties fromClient) { // Transform "null" to null // Set hPubStartPoolName and hPubLinkKey to null if string < 1 Class c = fromClient.getClass(); java.beans.BeanInfo beanInfo = null; try { beanInfo = java.beans.Introspector.getBeanInfo(c); } catch (Exception e) { } java.beans.PropertyDescriptor[] properties = beanInfo.getPropertyDescriptors(); for (int i = 0; i < properties.length; i++) { java.beans.PropertyDescriptor property = properties[i]; java.lang.reflect.Method readMethod = property.getReadMethod(); java.lang.reflect.Method writeMethod = property.getWriteMethod(); if ((readMethod != null) && (writeMethod != null)) { String currentvalue = new String(""); if (readMethod.getReturnType() == currentvalue.getClass()) { try { currentvalue = (String) readMethod.invoke(fromClient, null); } catch (Exception e1) { } if (currentvalue != null) { if (currentvalue.equals("null")) { try { Object[] args1 = new Object[1]; args1[0] = null; writeMethod.invoke(fromClient, args1); } catch (Exception e2) { } } if ((currentvalue.length() < 1 || currentvalue.endsWith("/null")) && (writeMethod.getName().indexOf("PubStartPoolName") > -1)) { try { Object[] args1 = new Object[1]; args1[0] = "ICONEJB/null"; writeMethod.invoke(fromClient, args1); } catch (Exception e2) { } } if ((currentvalue.length() < 1) && (writeMethod.getName().indexOf("PubLinkKey") > -1)) { try { Object[] args1 = new Object[1]; args1[0] = null; writeMethod.invoke(fromClient, args1); } catch (Exception e2) { } } } } else { } } } } private void fixNullOutputsForSOAP(CrownCounselIndexGetList_Properties fromClient) { // Transform null to "null" Class c = fromClient.getClass(); java.beans.BeanInfo beanInfo = null; try { beanInfo = java.beans.Introspector.getBeanInfo(c); } catch (Exception e) { } java.beans.PropertyDescriptor[] properties = beanInfo.getPropertyDescriptors(); for (int i = 0; i < properties.length; i++) { java.beans.PropertyDescriptor property = properties[i]; java.lang.reflect.Method readMethod = property.getReadMethod(); java.lang.reflect.Method writeMethod = property.getWriteMethod(); if ((readMethod != null) && (writeMethod != null)) { String currentvalue = new String(""); if (readMethod.getReturnType() == currentvalue.getClass()) { try { currentvalue = (String) (readMethod.invoke(fromClient, null)); } catch (java.lang.reflect.InvocationTargetException a1) // Null argument { try { Object[] args1 = new Object[1]; args1[0] = new String("null"); writeMethod.invoke(fromClient, args1); } catch (Exception e2) { } } catch (Exception e1) { } } else { } } } } public CrownCounselIndexGetList_Properties processWSRequest( CrownCounselIndexGetList_Properties props) throws BeanException { if (tracing == true) { traceArgs[0] = this; traceArgs[1] = "CrownCounselIndexGetList_Access.processWSRequest(CrownCounselIndexGetList_Properties)"; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } fixNullInputsForSOAP(props); inputProps = props; setHPubAccessHandleString(inputProps.getHPubAccessHandle()); try { startHereCommon(); } catch (BeanException e) { // remove the ejb instance if handle exists if (ejb != null) { try { ejb.remove(); } catch (Exception x) { } ejb = null; } // go set error fields setupErrorFields(e); throw e; } outputProps.setHPubAccessHandle(getHPubAccessHandleString()); fixNullOutputsForSOAP(outputProps); return outputProps; } private String getHPubAccessHandleString() { byte[] data = null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = null; try { oos = new ObjectOutputStream(baos); oos.writeObject(hPubAccessHandle); oos.flush(); data = baos.toByteArray(); } catch (IOException ioe) { System.out.println("Exception AccessEJBTemplate::getHPubAccessHandleString"); } sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder(); String encoded = encoder.encodeBuffer(data); return encoded; } private void setHPubAccessHandleString(String encodedHandleWithSpaces) { String encodedHandle = removeSpaceCharacters(encodedHandleWithSpaces); if ((encodedHandle == null) || (encodedHandle.length() < 5)) { return; } try { byte[] handleByteArray = null; sun.misc.BASE64Decoder dec = new sun.misc.BASE64Decoder(); try { handleByteArray = dec.decodeBuffer(encodedHandle); } catch (Exception e) { System.out.println("AccessEJBTemplate::setHPubAccessHandleString() decoding buffer"); } ; ByteArrayInputStream bais = new ByteArrayInputStream(handleByteArray); javax.ejb.Handle h1 = null; try { ObjectInputStream ois = new ObjectInputStream(bais); hPubAccessHandle = (javax.ejb.Handle) ois.readObject(); } catch (Exception ioe) { System.out.println("Exception reading handle object"); } } catch (Exception e) { e.printStackTrace(System.err); System.out.println("Exception AccessEJBTemplate::setHPubAccessHandleString()"); } return; } private String removeSpaceCharacters(String inputstr) { String outputstr = inputstr; int t = outputstr.indexOf(" "); while (t > -1) { outputstr = outputstr.substring(0, t) + outputstr.substring(t + 1); t = outputstr.indexOf(" "); } return outputstr; } /** event driven processing methods */ public void hPubStartPerformed(HPubStartEvent evt) { if (tracing == true) { traceArgs[0] = this; traceArgs[1] = "CrownCounselIndexGetList_Access.hPubStartPerformed()"; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } Thread newThread = new Thread(this); newThread.start(); } public void run() { try { startHereCommon(); } catch (BeanException e) { // remove the ejb instance if handle exists if (ejb != null) { try { ejb.remove(); } catch (Exception x) { } ejb = null; } // go set error fields setupErrorFields(e); } } public void addHPubReqCompleteListener(HPubReqCompleteListener listenerToAdd) { listenerList.addElement(listenerToAdd); } public void removeHPubReqCompleteListener(HPubReqCompleteListener listenerToRemove) { listenerList.removeElement(listenerToRemove); } protected void fireHPubReqCompleteEvent(RequestCompleteEvent evt) { Vector currentListenerList = null; synchronized (this) { currentListenerList = (Vector) listenerList.clone(); } for (int i = 0; i < currentListenerList.size(); i++) { HPubReqCompleteListener listener = (HPubReqCompleteListener) currentListenerList.elementAt(i); listener.hPubReqComplete(evt); } } /** all processing methods end up here */ private void startHereCommon() throws BeanException { // try to get the linkKey if already set in input properties try { hPubLinkKey = inputProps.getHPubLinkKey(); } catch (Exception e) { } // if running in Web environment and either the ejb access handle or // the linkKey are null, try to get them from the HttpSession if (oHttpServletRequest != null) { HttpSession theWebsession = oHttpServletRequest.getSession(false); if (theWebsession != null) { synchronized (theWebsession) { try { if (tracing == true) { traceArgs[0] = this; traceArgs[1] = "HttpSession.getId()=" + theWebsession.getId(); try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } String theKey = KEY_WEBCONN + inputProps.getHPubStartChainName(); // if linkKey or access handle is null try to get it from Websession HPubEJB2HttpSessionBindingListener sbl = (HPubEJB2HttpSessionBindingListener) theWebsession.getAttribute(theKey); if ((hPubLinkKey == null) && (sbl != null)) { hPubLinkKey = sbl.getLinkKey(); if (tracing == true) { traceArgs[0] = this; traceArgs[1] = "HttpSession.getAttribute(hPubLinkKey)=" + hPubLinkKey; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } inputProps.setHPubLinkKey(hPubLinkKey); } if ((hPubAccessHandle == null) && (sbl != null)) { hPubAccessHandle = sbl.getEjbHandle(); if (tracing == true) { traceArgs[0] = this; traceArgs[1] = "HttpSession.getAttribute(hPubAccessHandle)=" + hPubAccessHandle; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } } // set the ejb handle to null before removing the Session Binding // Listener object if (auditing == true) { if (sbl != null) auditArgs[0] = "\n---\nOUT:" + this.getClass().getName() + " " + theKey + " " + hPubAccessHandle + " " + hPubLinkKey + " " + theWebsession.getId(); else // error - object not found in HttpSession auditArgs[0] = "\n---\nERR:" + this.getClass().getName() + " " + theKey + " " + theWebsession.getId(); auditArgs[1] = theWebsession; try { auditMethod.invoke(o, auditArgs); } catch (Exception x) { } } if (sbl != null) sbl.setEjbHandle(null); theWebsession.removeAttribute(theKey); } catch (IllegalStateException e) { } } } } // if either of required properties are still null then the ejb cannot // be accessed - throw an exception. if ((hPubAccessHandle == null) || (hPubLinkKey == null)) { String errMsg = (new Date(System.currentTimeMillis())).toString() + " HPS5951 " + this.getClass().getName() + ": hPubAccessHandle==null || hPubLinkKey==null"; 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); } else { if (tracing == true) { traceArgs[0] = this; traceArgs[1] = "hPubAccessHandle=" + hPubAccessHandle + ",hPubLinkKey=" + hPubLinkKey; try { traceMethod.invoke(o, traceArgs); } catch (Exception x) { } } } // get the EJB object from the handle try { ejb = (com.ibm.HostPublisher.EJB.HPubEJB2) javax.rmi.PortableRemoteObject.narrow( hPubAccessHandle.getEJBObject(), com.ibm.HostPublisher.EJB.HPubEJB2.class); } catch (Exception e) { String errMsg = (new Date(System.currentTimeMillis())).toString() + " HPS5952 " + this.getClass().getName() + ": getEJBObject(): " + 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); } // if ejb handle, go invoke the HPubEJB's main business method. if (ejb != null) { try { outputProps = (CrownCounselIndexGetList_Properties) ejb.processIO(inputProps); inputProps = outputProps; inputProps.setInitialCall(false); } catch (Exception e) { String errMsg = (new Date(System.currentTimeMillis())).toString() + " HPS5953 " + this.getClass().getName() + ": processIO(" + inputProps.getClass().getName() + "): " + 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); } } endHereCommon(); return; } 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; } protected void setupErrorFields(Exception oException) { // if hPubErrorOccurred not set by actual driving of Integration // Object, then set error fields in output Properties object // if it exists, otherwise set them in input Properties object. if (this.getHPubErrorOccurred() == 0) { if (outputProps != null) { outputProps.setHPubErrorOccurred(1); outputProps.setHPubErrorException(oException); if (oException.getMessage() != null) outputProps.setHPubErrorMessage(oException.getMessage()); } else { inputProps.setHPubErrorOccurred(1); inputProps.setHPubErrorException(oException); if (oException.getMessage() != null) inputProps.setHPubErrorMessage(oException.getMessage()); } } } }