我在 Spring WS 上有一个带有两个端点拦截器的 Web 服务。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>
但是这个案子我不清楚。如何显式设置拦截器的调用顺序?