Как можно настроить метод конечной точки SOAP для приема сообщений SOAP с разными локальными частями? - PullRequest
0 голосов
/ 21 мая 2019

Что делать, если я хочу использовать один метод для всех запросов SOAP к моей веб-службе Springboot. Скажем, я хочу перехватить все входящие сообщения SOAP, каким-то образом преобразовать их, возможно, добавить узел безопасности ко всем тем, которые проходят некоторую базовую аутентификацию, а затем переслать их куда-нибудь еще. Первый шаг требует некоторой специфической для SOAP конечной точки, не зависящей от запроса. Есть ли способ создать SOAP "шлюз"? Что-то, что будет принимать все сообщения, независимо от их локальных частей? Заранее спасибо.

Я пытался использовать SpringIntegration, но IntegrationFlow работает только после попадания запроса в сервлет, что требует вышеупомянутой конфигурации конечной точки.

@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;
    }

Оставив localPart пустым PayloadRoot, мы не можем получить доступ к моей конечной точке. Что делать?

Я должен иметь возможность использовать одну и ту же конечную точку с разными запросами SOAP Заранее спасибо.

...