📄 clienthandler2.java
字号:
package test.wsdl.jaxrpchandlereval;import javax.xml.namespace.QName;import javax.xml.rpc.handler.Handler;import javax.xml.rpc.handler.HandlerInfo;import javax.xml.rpc.handler.MessageContext;import javax.xml.rpc.handler.soap.SOAPMessageContext;import javax.xml.soap.Name;import javax.xml.soap.SOAPEnvelope;import javax.xml.soap.SOAPHeader;import javax.xml.soap.SOAPBody;import javax.xml.soap.SOAPHeaderElement;import javax.xml.soap.SOAPMessage;import javax.xml.soap.SOAPPart;import java.util.Iterator;import javax.xml.soap.*;import javax.xml.rpc.handler.soap.SOAPMessageContext;import javax.xml.rpc.soap.*;import javax.xml.rpc.*;/** */public class ClientHandler2 implements Handler {private final static String _actorURI = "myActorURI";/** * Constructor for ClientHandler2. */public ClientHandler2() { System.out.println("ClientHandler2:Constructor");}/** * @see javax.xml.rpc.handler.Handler#handleRequest(MessageContext) */public boolean handleRequest(MessageContext context) { System.out.println("ClientHandler2:handleRequest"); HandlerTracker.addClientHandler("clienthandler2.handleRequest"); if (context instanceof SOAPMessageContext) { try { SOAPMessageContext soapMsgCtx = (SOAPMessageContext)context; SOAPMessage soapMsg = soapMsgCtx.getMessage(); SOAPPart sp = soapMsg.getSOAPPart(); SOAPEnvelope se = sp.getEnvelope(); SOAPBody sb = se.getBody(); SOAPHeader sh = se.getHeader(); Name name = se.createName("ClientHandler2-handleRequest", "", ""); SOAPHeaderElement hdr = sh.addHeaderElement(name); hdr.addTextNode("Processed"); String instruction = sb.toString(); if (instruction.indexOf("client-throw-jaxrpcexception") >= 0) { soapMsgCtx.setProperty("fault", "Throwing a client side exception from ClientHandler2.handleRequest"); QName faultcode = new QName("Testimg Exception", "http://example.org/security/"); // According to JAX-RPC spec client handlers cannot throw SOAPFaultException throw new JAXRPCException(); } else if (instruction.indexOf("client-return-false") >= 0) { soapMsgCtx.setProperty("fault", "Returning false from ClientHandler2.handleRequest"); return false; } } catch (SOAPException ex) { ex.printStackTrace(); return false; } } return true;}/** * @see javax.xml.rpc.handler.Handler#handleResponse(MessageContext) */public boolean handleResponse(MessageContext context) { System.out.println("ClientHandler2:handleResponse"); HandlerTracker.addClientHandler("clienthandler2.handleResponse"); if (context instanceof SOAPMessageContext) { try { SOAPMessageContext soapMsgCtx = (SOAPMessageContext)context; SOAPMessage soapMsg = soapMsgCtx.getMessage(); if (soapMsg == null) { soapMsg = prepareError(soapMsgCtx); } SOAPPart sp = soapMsg.getSOAPPart(); SOAPEnvelope se = sp.getEnvelope(); SOAPBody sb = se.getBody(); SOAPHeader sh = se.getHeader(); Name name = se.createName("ClientHandler2-handleResponse", "", ""); SOAPHeaderElement hdr = sh.addHeaderElement(name); hdr.addTextNode("Processed"); } catch (SOAPException ex) { ex.printStackTrace(); return false; } catch (java.io.IOException ex) { ex.printStackTrace(); return false; } catch (Exception ex) { throw new JAXRPCException(ex); } } return true;}public SOAPMessage prepareError(SOAPMessageContext soapMsgCtx) throws Exception{ MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage soapMsg = messageFactory.createMessage(); soapMsgCtx.setMessage(soapMsg); String fault = (String)soapMsgCtx.getProperty("fault"); if (fault != null) { SOAPFault soapFault = soapMsg.getSOAPPart().getEnvelope().getBody().addFault(); soapFault.setFaultString(fault); } return soapMsg;}/** * @see javax.xml.rpc.handler.Handler#handleFault(MessageContext) */public boolean handleFault(MessageContext context) { System.out.println("ClientHandler2:handleFault"); HandlerTracker.addClientHandler("clienthandler2.handleFault"); if (context instanceof SOAPMessageContext) { try { SOAPMessageContext soapMsgCtx = (SOAPMessageContext)context; SOAPMessage soapMsg = soapMsgCtx.getMessage(); if (soapMsg == null) { soapMsg = prepareError(soapMsgCtx); } SOAPPart sp = soapMsg.getSOAPPart(); SOAPEnvelope se = sp.getEnvelope(); SOAPBody sb = se.getBody(); SOAPHeader sh = se.getHeader(); Name name = se.createName("ClientHandler2-handleFault", "", ""); SOAPHeaderElement hdr = sh.addHeaderElement(name); hdr.addTextNode("Processed"); } catch (SOAPException ex) { ex.printStackTrace(); return false; } catch (Exception ex) { ex.printStackTrace(); throw new JAXRPCException(ex); } } return true;}/** * @see javax.xml.rpc.handler.Handler#init(HandlerInfo) */public void init(HandlerInfo config) { System.out.println("ClientHandler2.init");}/** * @see javax.xml.rpc.handler.Handler#destroy() */public void destroy() { System.out.println("ClientHandler2.destroy");}/** * @see javax.xml.rpc.handler.Handler#getHeaders() */public QName[] getHeaders() { System.out.println("ClientHandler2.getheaders"); return null;}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -