Каков «канонический» способ доступа к MessageContext из PayloadEndpoint?
Мы используем PayloadEndpoint и АннотацияМаршаллингPayloadEndpoint, которые не открывают MessageContext своим внутренним методам invoke / invoke, но теперь им потребуется доступ к параметрам HTTP-запроса.
Самый простой способ, который я могу придумать: создать конечную точку «оболочки», которая реализует MessageEndpoint. Затем вы можете извлечь параметры запроса и передать их вашей реальной конечной точке.
Вы можете сохранить переменные запроса в ThreadLocal, чтобы исходная конечная точка могла получить к ним доступ.
Кто-то на форуме Spring предложенный использует TransportContext для доступа к параметрам HTTP-запроса. Это помогает решить нашу конкретную проблему, но не отвечает на исходный вопрос, как получить MessageContext.
Другой идеей было бы ввести EndpointInterceptor и использовать ThreadLocal. Но я надеялся, что есть способ, менее похожий на взлом.
Это метод, который мы успешно применяем. Метод EndpointInterceptor в настоящее время не работает (начиная с Spring-ws 1.5.4), поскольку соединение все равно доступно - даже если перехватчик устанавливает ответ.