1 package demo.ws_rm.common; 2 3 4 import java.util.Iterator ; 5 import java.util.Map ; 6 import java.util.Set ; 7 8 import javax.xml.namespace.QName ; 9 import javax.xml.soap.Name ; 10 import javax.xml.soap.Node ; 11 import javax.xml.soap.SOAPException ; 12 import javax.xml.soap.SOAPHeader ; 13 import javax.xml.soap.SOAPHeaderElement ; 14 import javax.xml.ws.handler.MessageContext; 15 import javax.xml.ws.handler.soap.SOAPHandler; 16 import javax.xml.ws.handler.soap.SOAPMessageContext; 17 import static javax.xml.ws.handler.MessageContext.MESSAGE_OUTBOUND_PROPERTY; 18 19 20 23 public abstract class HandlerBase implements SOAPHandler<SOAPMessageContext> { 24 25 protected static final String WSA_NAMESPACE_URI = 26 "http://schemas.xmlsoap.org/ws/2004/08/addressing"; 27 protected static final String WSA_ACTION = "Action"; 28 protected static final String WSRM_NAMESPACE_URI = 29 "http://schemas.xmlsoap.org/ws/2005/02/rm"; 30 31 public void init(Map <String , Object > map) { 32 } 33 34 public Set <QName > getHeaders() { 35 return null; 36 } 37 38 39 public void close(MessageContext context) { 40 } 41 42 public void destroy() { 43 } 44 45 48 protected boolean isOutbound(SOAPMessageContext context) { 49 Boolean outbound = (Boolean )context.get(MESSAGE_OUTBOUND_PROPERTY); 50 return outbound != null && outbound.booleanValue(); 51 } 52 53 56 protected String getAction(SOAPMessageContext context) { 57 String action = null; 58 try { 59 SOAPHeader header = 60 context.getMessage().getSOAPPart().getEnvelope().getHeader(); 61 Iterator headerElements = header.examineAllHeaderElements(); 62 while (headerElements.hasNext()) { 63 SOAPHeaderElement headerElement = 64 (SOAPHeaderElement )headerElements.next(); 65 Name headerName = headerElement.getElementName(); 66 if (WSA_NAMESPACE_URI.equals(headerName.getURI()) 67 && WSA_ACTION.equals(headerName.getLocalName())) { 68 Iterator children = headerElement.getChildElements(); 69 if (children.hasNext()) { 70 action = ((Node )children.next()).getValue(); 71 } 72 } 73 } 74 } catch (SOAPException e) { 75 System.out.println("failed to determine WS-A Action: " + e); 76 } 77 return action; 78 } 79 } 80 81 | Popular Tags |