任何人都可以解释这个bean配置文件中使用的2个 cxf拦截器之间的区别。
我在这里使用拦截器 SAAJInInterceptor 和 WSS4JInInterceptor 声明 jaxws:endpoint 元素。
为什么有2个拦截器?
2?
之间的区别是什么?一个拦截器可以在没有其他拦截器的情况下工作吗?
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation="http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxrs
http://cxf.apache.org/schemas/jaxrs.xsd">
<jaxws:endpoint id="auth"
implementor="com.company.auth.service.AuthServiceImpl"
address="/corporateAuth">
<jaxws:inInterceptors>
<bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"></bean>
<bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
<constructor-arg>
<map>
<entry key="action" value="UsernameToken" />
<entry key="passwordType" value="PasswordText" />
<entry key="passwordCallbackClass" value="com.company.auth.service.ServerPasswordCallback"></entry>
</map>
</constructor-arg>
</bean>
</jaxws:inInterceptors>
</jaxws:endpoint>
</beans>
感谢您的解释。
答案 0 :(得分:2)
如果您使用的是CXF 2.0.x或更低版本,则只需添加SAAJInterceptors。从CXF 2.1.x开始,它们将自动添加:http://cxf.apache.org/docs/ws-security.html
答案 1 :(得分:1)
SAAJInInterceptor会将传入的消息转换为DOM消息,以便WSS4JInInterceptor可以处理它。 WSS4JInInterceptor对传入消息应用指定的WS-Security操作。