📄 stafservicehelper.java
字号:
serviceObj = serviceClass.newInstance(); } catch (ClassNotFoundException e) { return new STAFResult(STAFResult.JavaError, "ClassNotFound: " + serviceClassName); } catch (InstantiationException e) { return new STAFResult(STAFResult.JavaError, "Could not instantiate class: " + serviceClassName); } catch (IllegalAccessException e) { return new STAFResult(STAFResult.JavaError, "Illegal access to class: " + serviceClassName); } if (!((serviceObj instanceof com.ibm.staf.service.STAFServiceInterfaceLevel30))) { return new STAFResult(STAFResult.JavaError, "Not a valid interface level"); } fServiceMap.put(service, new ServiceData(serviceObj, jarFile, loader, serviceType)); } catch (Throwable t) { // Java error loading service - Print stack trace and return // in the error result System.out.println( "Error loading Java service " + service + ". Verify you " + "are using a valid version of Java (e.g. Sun or IBM Java)."); t.printStackTrace(); StringWriter stringWriter = new StringWriter(); t.printStackTrace(new PrintWriter(stringWriter)); return new STAFResult( STAFResult.JavaError, "JSTAFSH.loadService(): Error loading" + " the Java service. Verify you are using a valid version of" + " Java (e.g. Sun or IBM Java).\n" + stringWriter.toString()); } return new STAFResult(STAFResult.Ok); } private STAFResult initService(String service, ServiceInit initInfo) { try { Object serviceDataObj = fServiceMap.get(service); int rc = STAFResult.UnknownError; STAFResult res = new STAFResult(rc); if (serviceDataObj == null) { return new STAFResult(STAFResult.JavaError, "No such service implementation: " + service); } ServiceData serviceData = (ServiceData)serviceDataObj; // set context class loader Thread.currentThread().setContextClassLoader(serviceData.serviceClassLoader); if (serviceData.service instanceof STAFServiceInterfaceLevel30) { STAFServiceInterfaceLevel30 serviceL30 = (STAFServiceInterfaceLevel30)serviceData.service; res = serviceL30.init( new STAFServiceInterfaceLevel30.InitInfo(service, initInfo.parms, serviceData.serviceJar, serviceData.serviceType, initInfo.writeLocation)); } else { return new STAFResult(STAFResult.JavaError, "Unknown service interface type"); } return res; } catch (Throwable t) { StringWriter stringWriter = new StringWriter(); t.printStackTrace(new PrintWriter(stringWriter)); return new STAFResult(STAFResult.JavaError, stringWriter.toString()); } } private STAFResult callService(String service, ServiceRequest reqInfo) { try { Object serviceDataObj = fServiceMap.get(service); STAFResult result = new STAFResult(STAFResult.UnknownError); if (serviceDataObj == null) { return new STAFResult(STAFResult.JavaError, "No such service implementation: " + service); } ServiceData serviceData = (ServiceData)serviceDataObj; // set context class loader Thread.currentThread().setContextClassLoader(serviceData.serviceClassLoader); if (serviceData.service instanceof STAFServiceInterfaceLevel30) { STAFServiceInterfaceLevel30 serviceL30 = (STAFServiceInterfaceLevel30)serviceData.service; result = serviceL30.acceptRequest( new STAFServiceInterfaceLevel30.RequestInfo( reqInfo.stafInstanceUUID, reqInfo.machine, reqInfo.machineNickname, reqInfo.handleName, reqInfo.handle, reqInfo.trustLevel, reqInfo.isLocalRequest, reqInfo.diagEnabled, reqInfo.request, reqInfo.requestNumber, reqInfo.user, reqInfo.endpoint, reqInfo.physicalInterfaceID)); } else { result = new STAFResult(STAFResult.JavaError, "Unknown service interface type"); } return result; } catch (Throwable t) { StringWriter stringWriter = new StringWriter(); t.printStackTrace(new PrintWriter(stringWriter)); return new STAFResult(STAFResult.JavaError, stringWriter.toString()); } } private STAFResult termService(String service) { try { Object serviceDataObj = fServiceMap.get(service); int rc = STAFResult.UnknownError; STAFResult res = new STAFResult(rc); if (serviceDataObj == null) { return new STAFResult(STAFResult.JavaError, "No such service implementation: " + service); } fServiceMap.remove(service); ServiceData serviceData = (ServiceData)serviceDataObj; // set context class loader Thread.currentThread().setContextClassLoader(serviceData.serviceClassLoader); if (serviceData.service instanceof STAFServiceInterfaceLevel30) { STAFServiceInterfaceLevel30 serviceL30 = (STAFServiceInterfaceLevel30)serviceData.service; res = serviceL30.term(); } else { serviceData.serviceJar.close(); return new STAFResult(STAFResult.JavaError, "Unknown service interface type"); } serviceData.serviceJar.close(); return res; } catch (Throwable t) { StringWriter stringWriter = new StringWriter(); t.printStackTrace(new PrintWriter(stringWriter)); return new STAFResult(STAFResult.JavaError, stringWriter.toString()); } } private String fJVMName; private Map fServiceMap = Collections.synchronizedMap(new HashMap()); /************************/ /* All the native stuff */ /************************/ private static native void initialize(); private native void listen(); // Static initializer - called first time class is loaded. static { if (System.getProperty("os.name").toLowerCase().indexOf("aix") == 0) System.loadLibrary("STAF"); System.loadLibrary("JSTAFSH"); initialize(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -