У меня есть веб-служба на Spring WS с двумя перехватчиками конечных точек. Конфигурация XML выглядит так
<sws:interceptors>
<bean class="org.someorg.security.SignatureInterceptor"/>
<bean class="org.someorg.common.LoggingInterceptor">
<constructor-arg value="logger_1"/>
</bean>
</sws:interceptors>
SignatureInterceptor проверяет подпись входящего конверта SOAP и подписывает исходящий конверт SOAP.
LoggingInterceptor хранит необработанные данные SOAP (массив байтов) в базе данных.
Мне нужно, чтобы SignatureInterceptor вызывался перед LoggingInterceptor и писал bean-компоненты-перехватчики таким образом, как я ожидал, что это решит мою проблему. Но, согласно сообщениям журнала, сначала вызывается LoggingInterceptor, поэтому неподписанные данные сохраняются в базе данных.
Затем я изменил конфигурацию, просто поменял объявления bean-компонентов, и они начали работать так, как я ожидал.
<sws:interceptors>
<bean class="org.someorg.common.LoggingInterceptor">
<constructor-arg value="logger_1"/>
</bean>
<bean class="org.someorg.security.SignatureInterceptor"/>
</sws:interceptors>
Но этот случай мне не ясен. Как я могу явно установить порядок вызова перехватчиков?