我们正在尝试创建一个Web服务代理过滤器,该过滤器将用于过滤对实际远程Web服务的Web服务调用。 (春/ Tomcat)的
“Web服务过滤器Web服务”应接受来自Web服务客户端的新soap请求,根据某些输入数据过滤请求,如果数据有效,则应重定向到远程Web服务。
远程Web服务应响应Web服务客户端。
理想情况下,客户端应该建立在使用远程Web服务WSDL的基础上,它们应该只是将端点更改为新的Web服务过滤器。
从远程Web服务WSDL创建Web服务客户端 - >调用过滤器Web服务代理 - >分析输入数据 - >重定向到远程Web服务 - >远程Web服务将响应Web服务客户端。
答案 0 :(得分:1)
因此,您的代理需要能够解析SOAP请求以提取一些“输入数据”。
然而,为了避免生成Java存根并避免所有反序列化处理开销,我会实现javax.xml.ws.Provider<SOAPMessage>
,类似于
@javax.xml.ws.ServiceMode(value = javax.xml.ws.Service.Mode.MESSAGE)
@javax.xml.ws.WebServiceProvider(
wsdlLocation = "/mypath/my.wsdl",
targetNamespace = "my-namespace",
serviceName = "ProcessService",
portName = "ProcessPort"
)
public class ProcessServerRaw implements Provider<SOAPMessage> {
public SOAPMessage invoke(final SOAPMessage request) {
//process your SOAP message object here and redirect it as is to your final SOAP web service
}
}