저는 제어 할 수없는 SOAP 서비스의 클라이언트입니다 (.NET에서 구현 됨). 이 서비스는 WSDL을 제공합니다. 나는 아파치 CXF를 사용하여 WSDL에서 자바 클라이언트를 생성한다 (특히, 후드 아래에서 wsdl2java를 사용하는 Maven 용 cxf-codegen-plugin을 사용하고있다). 내가 생성 된 서비스 클래스를 인스턴스화 할 때WSP0075 : 정책 어설 션 "TransportBinding"이 "UNKNOWN"으로 평가되었습니다. 왜?
그러나, 다음과 같은 경고가 기록됩니다
클라이언트가 제대로 작동하지만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".
- 내가 서비스를 사용하는 문제가 없습니다. 그러나 나는이 오류에 당혹 스럽다. 그러나 지금까지의 내가이 말할 수있는
<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>
그것에 대해 특별한 아무것도 완벽하게 일반 정책 :
오류 나는 그것을 이해할 수 없다고 생각하는 WSDL이 보안 정책에 관한 것입니다. 확실하게 이해해야합니까? 이 경고는 어떻게 수정합니까?
레코드의 경우 wsdl2java가 호출되는 방법은 다음과 같습니다 (pom.xml에서 발췌).
-exsh true
arg 및 cxf-rt-bindings-soap
종속성은 WSDL이 인수에 암시 적 비누 헤더를 사용하고 생성 된 서비스 클래스 메소드에 올바르게 포함되도록하기 위해 필요합니다.
cxf-rt-ws-security
및 cxf-rt-ws-policy
종속성을 추가하여 보안 및 정책 정보가 포함되지 않았다고 생각하여이 경고를 수정하십시오. 그러나 이것은 아무 것도 고치지 못했습니다.
<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>
내가 익스프레스-1 레이블 서비스와 함께이 문제를 재현 할 수
잘 알고 있습니다. 공동 조사에 감사드립니다. –
그래서 예외 대신 경고를 받으려면 어떻게 서비스를 종료 했습니까? 나는 어떤 정책 대안도 만족시킬 수 없다는 메시지를 얻고있다. (나는 이미 px.xml에 cxf-rt-frontend-jaxws 종속성을 가지고있다.) – ronnyfm
@ronnyfm 경고는 내가하지 않았을 때 _not_ cxf-rt-frontend-jaxws , 그래서 그것은 지금 내가하는 일입니다. –