2014-11-20 5 views
0

Я пытаюсь собрать небольшой клиент CXF для мыльной службы, который имеет SignedSupportingTokens ws-security policy в своем wsdl. Я сконфигурировал клиента CXF следующим образом:SignedSupportingTokens wssecurity policy cxf client

<jaxws:client id="secretService" name="{http:/mySecretServiceEndpoint//}Service" createdFromAPI="true"> 
     <jaxws:properties> 
      <entry key="ws-security.signature.properties" value="keystore/secret.properties" /> 
      <entry key="ws-security.encryption.properties" value="keystore/secret.properties" /> 
      <entry key="ws-security.timestamp.timeToLive" value="600" /> 
     </jaxws:properties> 
    </jaxws:client> 

К сожалению, он не может отправлять сообщения со следующей ошибкой.

Caused by: org.apache.cxf.ws.policy.PolicyException: None of the policy alternatives can be satisfied. 
    at org.apache.cxf.ws.policy.EffectivePolicyImpl.chooseAlternative(EffectivePolicyImpl.java:199) 
    at org.apache.cxf.ws.policy.EffectivePolicyImpl.chooseAlternative(EffectivePolicyImpl.java:192) 
    at org.apache.cxf.ws.policy.EffectivePolicyImpl.initialise(EffectivePolicyImpl.java:96) 
    at org.apache.cxf.ws.policy.PolicyEngineImpl.getEffectiveClientRequestPolicy(PolicyEngineImpl.java:205) 
    at org.apache.cxf.ws.policy.PolicyOutInterceptor.handle(PolicyOutInterceptor.java:98) 
    at org.apache.cxf.ws.policy.AbstractPolicyInterceptor.handleMessage(AbstractPolicyInterceptor.java:44) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) 
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:326) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:279) 
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96) 
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:138) 

мне было интересно, если CXF поддерживает SignedSupportingTokens политику по умолчанию? Нужно ли мне регистрировать некоторых обработчиков, или я пропущу что-то еще? У меня нет большого опыта работы с WS-Security и WS-SecurityPolicy, любой ответ будет высоко оценен.

+0

благодарит Leonel за редактирование, сейчас он выглядит намного лучше. – andrew

ответ

1

Отвечая на мой собственный вопрос, поскольку это может помочь кому-нибудь когда-нибудь! CXF поддерживает SignedSupportingTokens и многое другое. В моем случае служба WSDL имела другое пространство имен для SignedSupportingTokens, которое понимает клиент CXF (не может совпадать).

Я смог исправить проблему с помощью перехватчиков ws-security для настройки клиента.