我想提供一个用于创建Web服务客户端的组件。到目前为止,我的方法是扩展JaxWsProxyFactoryBean
并覆盖create方法,并为timeout等参数提供setter和getter。
@Override
public synchronized Object create() {
//do some stuff here
Object result = super.create();
//here too
return result;
}
记录调用代理的适当方法是什么?我尝试使用Interceptor
设置getInInterceptors().add(new MyInterceptor());
,但JaxWsProxyFactoryBean
只想要PhaseInterceptor
。但我不知道如何设置拦截器的所有属性,如果这是正确的方法..
答案 0 :(得分:0)
我找到了一个解决方案,但它不是100%完美。
我实现了LogicalHandler
接口。将其设置为FactoryBean并检查处理程序中的消息是出站还是入站。
public class LoggingHandler implements LogicalHandler<LogicalMessageContext>
方法:
public boolean handleMessage(LogicalMessageContext context) {
Boolean outboundProperty = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (outboundProperty.booleanValue()) {
//log here
} else {
//or here
}
return true;
}
这种方法很好,除了我称之为没有响应的方法的情况。然后,如果有响应,它只调用一次而不是两次。