java : Rpc / 인코딩 된 wsdl은 JAXWS 2.0에서 지원되지 않습니다.
wsdl에서 Java 코드를 생성하기 위해 CXF 2.1을 사용하고 있지만 다음 오류가 발생합니다.
WSDLToJava Error: Rpc/encoded wsdls are not supported in JAXWS 2.0
org.apache.cxf.tools.common.ToolException: Rpc/encoded wsdls are not supported in JAXWS 2.0
at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.checkSupported(JAXWSDefinitionBuilder.java:141)
at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.build(JAXWSDefinitionBuilder.java:87)
at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.build(JAXWSDefinitionBuilder.java:61)
at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:127)
at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:232)
at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:83)
at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:103)
at org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:173)
이 오류를 어떻게 수정합니까? 이전 버전의 CXF 또는 다른 것을 사용하여 수정할 수 있습니까?
RPC / 인코딩은 SOAP 개체가 XML 스키마로 정의되기 전의 흔적입니다. 그건 널리 지원되지 않습니다 더 이상. 같은 시대의 Apache Axis 1.0을 사용하여 스텁을 생성해야합니다 .
java org.apache.axis.wsdl.WSDL2Java http://someurl?WSDL
-cp classpath 매개 변수에 다음 jar 또는 동등한 항목이 필요합니다.
- axis-1.4.jar
- commons-logging-1.1.ja
- commons-discovery-0.2.jar
- jaxrpc-1.1.jar
- saaj-1.1.jar
- wsdl4j-1.4.jar
- activation-1.1.jar
- mail-1.4.jar
이것은 wsimport와 유사한 스텁을 생성합니다.
또는 rpc / 인코딩이 필요한 스키마 부분을 사용하지 않는 경우 WSDL 사본을 다운로드하여 해당 비트를 주석 처리 할 수 있습니다. 그런 다음 로컬 파일에 대해 wsimport를 실행하십시오.
WSDL을 보면 다음 비트가 rpc / encoded를 사용하고 있습니다.
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
Chase Seibert가 그의 답변 에서 제안한대로 Axis 1.4를 사용 했지만 해당 답변에 제공된 다운로드 링크가 작동하지 않습니다. 내가 사용한 대체 다운로드 링크는 다른 라이브러리를 제공했습니다. 다음은 코드를 생성하기 위해 수행 한 단계입니다.
http://apache.is.co.za/axis/axis/java/1.4/로 이동하여 axis-bin-1_4.zip을 다운로드 하십시오 .
압축을 풀면 다음 파일이 있어야합니다.
- axis.jar
- commons-discovery-0.2.jar
- commons-logging-1.0.4.jar
- jaxrpc.jar
- saaj.jar
- wsdl4j-1.5.1.jar
다음 명령을 사용하여 WSDL2Java를 실행합니다 (물론 URL 대체).
java -cp axis.jar;commons-logging-1.0.4.jar;commons-discovery-0.2.jar;jaxrpc.jar;saaj.jar;wsdl4j-1.5.1.jar org.apache.axis.wsdl.WSDL2Java http://someURL?WSDL
그러면 Java 파일이 생성됩니다.
추신 : 이것은 Axis 1.2.1을 사용해도 똑같이 잘 작동하는 것 같습니다.
이것이 CXF에 도움이 될 수 있습니다. Alteast는 나를 위해 일했습니다. WSDL 파일을 편집하고 SOAP-ENC의 모든 참조를 제거하고 ArrayOfString
아래 방식으로 유형 을 생성 했습니다.
<xsd:complexType name="ArrayOfString">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="String" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
누군가가 maven을 사용하고 싶은 경우 : ( 여기 에 WSDL 바인딩 스타일에 대한 정보 포함)
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>axistools-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>wsdl2java</goal>
</goals>
<configuration>
<!-- Use your .wsdl location here-->
<sourceDirectory>${basedir}/src/main/resources/wsdl</sourceDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- Here the libraries that you need to call the Axis WS client -->
<dependencies>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis-jaxrpc</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.5</version>
</dependency>
<dependency>
<groupId>axis</groupId>
<artifactId>axis-wsdl4j</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis-saaj</artifactId>
<version>1.4</version>
</dependency>
<!-- activation+mail: To stop Axis generating WARNING about "Attachment support being disabled" -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
</dependencies>
WSDL2Java를 추출하고 실행 하시겠습니까? 다음 명령을 사용합니다 (물론 URL 대체).
java -cp axis.jar;commons-logging-1.0.4.jar;commons-discovery-0.2.jar;jaxrpc.jar;saaj.jar;wsdl4j-1.5.1.jar org.apache.axis.wsdl.WSDL2Java http://someURL?WSDL
참조 URL : https://stackoverflow.com/questions/412772/java-rpc-encoded-wsdls-are-not-supported-in-jaxws-2-0
'IT TIP' 카테고리의 다른 글
UICollectionView-동적 셀 높이? (0) | 2021.01.07 |
---|---|
XML :: Simple이 권장되지 않는 이유는 무엇입니까? (0) | 2021.01.07 |
Java의 HttpServletRequest에서 원시 게시물 데이터를 검색하는 방법 (0) | 2021.01.07 |
'&'대 '&&'사용 (0) | 2021.01.07 |
자바 : org.w3c.dom.document에서 xpath 문자열을 통해 요소를 찾는 방법 (0) | 2021.01.07 |