I have a servlet that also consumes SOAP WS (in doGet). I want to see a SOAP envelope (or something else in a soap message). I am adding this code to my servlet class:
class ClientHandlerResolver implements HandlerResolver {
public List<Handler> getHandlerChain(PortInfo port_info) {
List<Handler> hchain = new ArrayList<Handler>();
hchain.add(new TestHandler());
return hchain;
}
}
I am a separate class, I have TestHandler:
public class TestHandler implements SOAPHandler<SOAPMessageContext> {
private static final String LoggerName = "ClientSideLogger";
private Logger logger;
private final boolean log_p = true;
public TestHandler() {
logger = Logger.getLogger(LoggerName);
}
public boolean handleMessage(SOAPMessageContext ctx) {
if (log_p)
logger.info("Test::handleMessage");
Boolean request_p = (Boolean)
ctx.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (request_p) {
try {
SOAPMessage msg = ctx.getMessage();
msg.writeTo(System.out);
}
catch(SOAPException e)
{ System.err.println(e);
}
catch(IOException e)
{ System.err.println(e);
}
}
return true;
}
public boolean handleFault(SOAPMessageContext ctx) {
return true;
}
public Set<QName> getHeaders() {
if (log_p)
logger.info("getHeaders");
return null;
}
public void close(MessageContext messageContext) {
if (log_p)
logger.info("close");
}
}
When executing a WS request, nothing is printed. I don’t even know if the handler is called.
How to see printouts defined in the handler?
source
share