如果我想对我的Springboot Web服务的所有SOAP请求使用一种方法,该怎么办。假设我想截获所有传入的SOAP消息,以某种方式进行转换,或者向通过基本身份验证的所有消息添加一个Security节点,然后将它们转发到其他地方。第一步需要某种特定于SOAP的请求终结点。有什么方法可以创建SOAP“网关”吗?可以接受所有消息的东西,而不管它们的本地部分如何?预先感谢。
我已经尝试过使用SpringIntegration,但是IntegrationFlow仅在请求到达servlet后才起作用,这需要上述端点配置。
@Endpoint
public class CountryEndpoint {
private static final String NAMESPACE_URI = "http://schema.soap.example.com/ws";
...
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "getCountryRequest")
@ResponsePayload
public Object getCountry(@RequestPayload Object request) {
GetCountryResponse response = new GetCountryResponse();
...
return response;
}
上面显示了如何为“ getCountryRequest”配置端点。但是我希望端点服务于所有SOAP通信,不仅是对国家/地区数据的请求,还是从“ getCountryRequest”返回的任何资源。
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "")
@ResponsePayload
public Object getCountry(@RequestPayload Object request) {
System.out.println("Hello, world!");
GetCountryResponse response = new GetCountryResponse();
...
return response;
}
将PayloadRoot的localPart保留为空白可防止任何东西到达我的端点。该怎么办?
我应该能够使用不同的SOAP请求到达相同的端点。预先感谢。