2016-04-29 213 views
1

任何人都可以解釋這個bean配置文件中使用的2個cxf攔截器之間的區別。SAAJInInterceptor和WSS4JInInterceptor CXF攔截器

這裏我聲明瞭一個JAXWS:端點元素與攔截SAAJInInterceptorWSS4JInInterceptor

爲什麼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> 

謝謝您的解釋。

回答

1

SAAJInInterceptor將傳入消息轉換爲DOM消息,以便它可以由WSS4JInInterceptor進行處理。 WSS4JInInterceptor在傳入消息上應用指定的WS-Security操作。

+0

您能否給出關於DOM消息的一些解釋。 –

2

只有在使用CXF 2.0.x或更低版本時才需要添加SAAJInterceptors。從CXF 2.1.x開始,它們將自動添加:http://cxf.apache.org/docs/ws-security.html

+0

Hi @Colm,您知道我可以使用Wss4jSecurityInterceptor發送與我想要加密響應的證書的名稱,每當我向服務發出請求時? – jamlhet