Thanks for all the suggestions - I particularly like the idea of
giving them a client WSDD that includes the log handler.
Toshi - the reason SOAPMonitor doesn't work is I'm not going to give
my users that kind of access to my server. I'm not deploying a web
service where I'm also writing the clients; I'm publishing a web
service endpoint that untrusted third parties are calling.
The solution I've got working at the moment is asking my users to call
this function in their client. It's a quick hack to get the Apache
commons logging infrastructure to dump all HTTPSender messages, which
happen to include the XML. The client WSDD is a better idea, working
on that now.
/** Configure Apache Axis to log XML traffic to a file named xmlLog.txt **/
public static void enableXMLLogging() {
java.util.logging.Logger logger =
java.util.logging.Logger.getLogger(
"org.apache.axis.transport.http.HTTPSender");
logger.setLevel(java.util.logging.Level.FINE);
try {
java.util.logging.FileHandler fh =
new java.util.logging.FileHandler("xmlLog.txt");
fh.setFormatter(new java.util.logging.SimpleFormatter());
logger.addHandler(fh);
} catch (java.io.IOException ioex) {
throw new RuntimeException("Error setting up log file", ioex);
}
}