如何将SOAP端点方法配置为接受具有不同本地部分的SOAP消息?

时间:2019-05-21 13:20:43

标签: spring-boot spring-mvc soap spring-ws

如果我想对我的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请求到达相同的端点。预先感谢。

0 个答案:

没有答案