Вы можете привести свой класс обслуживания к классу типа "BindingProvider". В этой форме вы можете использовать ее, чтобы назначить ей объекты, к которым вы сможете получить доступ позже из вашего SOAPHandler. Другое полезное использование заключается в том, что вы также можете изменить URL-адрес конечной точки следующим образом.
Перед звонком в сервис вы делаете:
MySoapServicePortType service = new MySoapService().getMySoapServicePort();
BindingProvider bp = (BindingProvider)service;
MyTransferObject t = new MyTransferObject();
bp.getRequestContext().put("myTransferObject", t);
TypeResponse response = service.doRequest();
SOAPMessage message = t.getRequestMessage(message);
Из функции регистрации вы делаете:
private void logToSystemOut(SOAPMessageContext smc) {
...
MyTransferObject t = (MyTransferObject) messageContext.get("myTransferObject");
if (outboundProperty.booleanValue())
t.setRequestMessage(message);
else
t.setResponseMessage(message);
...
}