Что делать, если я хочу использовать один метод для всех запросов 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 Заранее спасибо.