WSP0075: A asserção de política "TransportBinding" foi avaliada como "DESCONHECIDO". Por quê?
Sou cliente de um serviço SOAP que não controlo (implementado no .NET). O serviço fornece um WSDL. Uso o Apache CXF para gerar o cliente java a partir do WSDL (especificamente, estou usando o cxf-codegen-plugin para Maven, que usa wsdl2java sob o capô).
No entanto, quando instanciamos a classe de serviço gerada, os seguintes avisos são registrados:
Sep 04, 2014 5:18:00 PM [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector] selectAlternatives
WARNING: WSP0075: Policy assertion "{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}TransportBinding" was evaluated as "UNKNOWN".
Sep 04, 2014 5:18:00 PM [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector] selectAlternatives
WARNING: WSP0019: Suboptimal policy alternative selected on the client side with fitness "UNKNOWN".
No entanto, o cliente funciona corretamente - não tenho nenhum problema ao usar o serviço. No entanto, estou intrigado com esses erros.
O erro é sobre esta política de segurança no WSDL, que acho que diz que não pode entender:
<wsp:Policy wsu:Id="soap11_policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false"/>
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
No entanto, tanto quanto posso dizer, essa é uma política perfeitamente comum, sem nada de incomum. Certamente deve ser entendido? Como posso corrigir esse aviso?
Para o registro, veja como o wsdl2java está sendo chamado (trecho de pom.xml).
o-exsh true
arg ecxf-rt-bindings-soap
dependência é porque o WSDL usa alguns cabeçalhos de sabão implícitos em seus argumentos, e eu preciso disso para que sejam incluídos corretamente nos métodos de classe de serviço gerados.
Eu adicionei ocxf-rt-ws-security
ecxf-rt-ws-policy
dependências para tentar corrigir esse aviso, pensando que talvez as informações de segurança e política não tenham sido incluídas. No entanto, isso não corrigiu nada (também não quebrou nada).
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>rh-soap-client-ssi</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>https://example.org/ssi?wsdl</wsdl>
<extraargs>
<extraarg>-verbose</extraarg>
<extraarg>-client</extraarg>
<extraarg>-mark-generated</extraarg>
<extraarg>-exsh</extraarg>
<extraarg>true</extraarg>
<extraarg>-autoNameResolution</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-bindings-soap</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-security</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-policy</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
</plugin>