Перехватчики CXF «сами по себе» не связаны с запросами или ответами, по крайней мере, по двум причинам:
- Многие перехватчики могут работать с обеих сторон (например, регистрация полезной нагрузки мыла)
- Существует некоторая симметрия того, что должно быть сделано на стороне запроса / ответа, относительно клиент-серверной природы приложения.
Таким образом, работает CXF:что перехватчики связаны с «цепочками», которые CXF создает и управляет во время выполнения, и которые учитывают все комбинации перечисленного: IN, OUT, IN_FAULT, OUT_FAULT.Вы можете прочитать все о них здесь .
Если ваш текущий перехватчик обрабатывает «запросы», это означает одно из двух:
- Если ваше приложение является серверомтогда ваш перехватчик связан с цепочкой «IN»
- Если ваше приложение является клиентом, тогда ваш перехватчик связан с цепочкой «OUT»
Если вы хотитечтобы обрабатывать ответы и запросы, вам необходимо выяснить, как / где ваши пользовательские перехватчики связаны с цепочкой, которая обычно находится в файле конфигурации в CXF (см .: «написание и настройка перехватчиков» в ссылке abose).
Многие люди используют CXF с конфигурацией Spring, и поэтому добавляют перехватчики на весь уровень CXF (шины), например, так:
<bean id="MyInterceptor" class="demo.interceptor.MyInterceptor"/>
<!-- We are adding the interceptors to the bus as we will have only one endpoint/service/bus. -->
<cxf:bus>
<cxf:inInterceptors>
<ref bean="MyInterceptor"/>
</cxf:inInterceptors>
<cxf:outInterceptors>
<ref bean="MyInterceptor"/>
</cxf:outInterceptors>
</cxf:bus>
Но это также можно сделать на уровне enpoint.
Дальнейшее чтение: Как перехватить какие-либо исключения в методе веб-службы SOAP?
Доступ к содержимому до (не) сортировки
Я мог бы многое расширить,но я предлагаю тебепосмотрите на org.apache.cxf.interceptor.LoggingInInterceptor
(или соответствующее для сообщений «Out»), они являются таким же хорошим примером, как вы можете видеть, «как получить доступ к необработанному контенту, не нарушая ничего».