public boolean handleRequest(MessageContext context) {
System.out.println("ServiceHandler2:handleRequest");
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 xmlServicesHandler2HdrName =
se.createName("ServiceHandler2-handleRequest", "", "");
SOAPHeaderElement xmlServicesHandler2Hdr =
sh.addHeaderElement(xmlServicesHandler2HdrName);
xmlServicesHandler2Hdr.addTextNode(
"Processed by ServiceHandler2Hdr2.handleRequest");
/*--- getElementsByTagName() does not work.
NodeList list = sb.getElementsByTagName("in0");
if (list.getLength() == 0) {
throw new JAXRPCException("No such element : 'in0'");
}
SOAPElement elem = (SOAPElement) list.item(0);
String curBody = elem.getValue();
---*/
String curBody = sb.toString();
if (curBody.indexOf("server-throw-soapfaultexception") >= 0) {
String reason = "A FATAL EXCEPTION has occurred while processing ServiceHandler2.handleRequest";
soapMsgCtx.setProperty("fault", reason);
QName faultcode = new QName("Testimg Exception",
"http://example.org/security/");
throw new SOAPFaultException(faultcode, reason, null, null);
//throw new JAXRPCException(reason);
} else if (curBody.indexOf("server-return-false") >= 0) {
soapMsgCtx.setProperty("fault",
"An error has occurred while processing ServiceHandler2.handleRequest - returning false");
return false;
}
} catch (SOAPException ex) {
throw new JAXRPCException(ex);