我正在寻找一种在客户端将对象传递给我的 SOAPHandler 而不将我的 Port 对象转换为 BindingProvider 以获取请求上下文的方法。通常你会看到如下代码:
Map<String,Object> requestContext = ((BindingProvider)port).getRequestContext();
requestContext.put("key", object);
处理程序中的代码如下所示:
public boolean handleMessage(SOAPMessageContext context) {
Boolean isRequest = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (isRequest) {
// Do stuff to SOAP header based on "object"
}
return true;
}
我不喜欢强制转换,因为我使用 Spring 的 AOP 来包装来自客户端 Port 对象的调用,并且强制转换会导致错误。