Я пытаюсь добавить неявные заголовки в ответы WSDL и WADL для веб-службы SOAP/REST CXF (которой управляет Camel).
(Это не обязательно заголовки безопасности....)
Под "неявным заголовком" я подразумеваю, что попадание URL-адреса WSDL/WADL в службу покажет, что ожидается, что клиент предоставит заголовок в запросе.
Но я не хочу явно указывать заголовок в сигнатуре веб-службы.
У меня есть перехватчик CXF, который добавляет неявный заголовок для каждого ответа SOAP/REST.
Итак, поскольку WSDL/WADL-документ отправляется как ответ на некоторый запрос GET, я думал каким-то образом использовать аналогичный перехватчик, чтобы добавить данные заголовка в ответ WSDL/WADL. Как я мог выполнить такой чудесный подвиг?
Вот перехватчик CXF, который добавляет неявный заголовок для каждого ответа SOAP/REST:
public class MyInterceptor extends AbstractPhaseInterceptor<Message> {
public MyInterceptor()
{
super(Phase.RECEIVE);
}
@Override
public void handleMessage(Message message)
{
try
{
//soap
if (message instanceof SoapMessage)
{
List<Header> headers = ((SoapMessage)message).getHeaders();
Header dummyHeader = new Header(new QName("uri:org.apache.cxf", "dummy"), "decapitated", new JAXBDataBinding(String.class));
headers.add(dummyHeader);
}
//rest
else
{
Map<String, List> headers = (Map<String, List>) message.get(Message.PROTOCOL_HEADERS);
String dummyHeader = "decapitated";
headers.put("dummy", Collections.singletonList(dummyHeader));
}
}
catch (JAXBException e)
{
throw new Fault(e);
}
}
@Override
public void handleFault(Message messageParam)
{
}
}