1 package league.ws; 2 3 8 import javax.xml.rpc.handler.MessageContext ; 10 import javax.xml.rpc.handler.HandlerInfo ; 11 import javax.xml.rpc.handler.soap.SOAPMessageContext ; 12 import javax.xml.namespace.QName ; 13 import javax.xml.soap.SOAPElement ; 14 import javax.xml.soap.SOAPMessage ; 15 import javax.xml.soap.SOAPPart ; 16 import javax.xml.soap.SOAPEnvelope ; 17 import javax.xml.soap.SOAPHeader ; 18 import javax.xml.soap.SOAPBody ; 19 import java.util.Date ; 20 public class WSLogger extends javax.xml.rpc.handler.GenericHandler { 22 24 private QName [] headers; 25 26 public void init(HandlerInfo config) { 27 headers = config.getHeaders(); 28 } 29 30 public javax.xml.namespace.QName [] getHeaders() { 31 return headers; 32 } 33 34 public boolean handleRequest(MessageContext context) { 36 try{ 37 SOAPMessageContext smc = (SOAPMessageContext ) context; 38 SOAPMessage msg = smc.getMessage(); 39 SOAPPart sp = msg.getSOAPPart(); 40 SOAPEnvelope se = sp.getEnvelope(); 41 SOAPHeader shd = se.getHeader(); 42 43 SOAPBody sb = se.getBody(); 44 java.util.Iterator childElems = sb.getChildElements(); 45 SOAPElement child; 46 StringBuffer message = new StringBuffer (); 47 while (childElems.hasNext()) { 48 child = (SOAPElement ) childElems.next(); 49 message.append(new Date ().toString() + "--"); 50 formLogMessage(child, message); 51 } 52 53 System.out.println("Log message: " + message.toString()); 54 } catch(Exception e){ 55 e.printStackTrace(); 56 } 57 return true; 58 } 59 60 public boolean handleResponse(MessageContext context) { 61 return true; 62 } 63 64 public boolean handleFault(MessageContext context) { 65 return true; 66 } 67 68 public void destroy() { 69 } 70 71 private void formLogMessage(SOAPElement child, StringBuffer message) { 72 message.append(child.getElementName().getLocalName()); 73 message.append(child.getValue() != null ? ":" + child.getValue() + " " : " "); 74 75 try{ 76 java.util.Iterator childElems = child.getChildElements(); 77 while (childElems.hasNext()) { 78 Object c = childElems.next(); 79 if(c instanceof SOAPElement ) 80 formLogMessage((SOAPElement )c, message); 81 } 82 }catch(Exception e){ 83 e.printStackTrace(); 84 } 85 } 86 } 87 | Popular Tags |