【发布时间】:2012-10-04 09:20:41
【问题描述】:
我在 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>
但是这个案子对我来说不是很清楚。如何显式设置拦截器的调用顺序?
【问题讨论】:
-
参见 forum.springsource.org/… 以正确顺序选择性请求/响应记录的示例
标签: java spring interceptor spring-ws endpoint