Java: RSP / закодированные WSDLS не поддерживаются в JAXWS 2.0 - PullRequest
55 голосов
/ 05 января 2009

Я использую CXF 2.1 для генерации Java-кода из WSDL, но я получаю следующую ошибку:

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 или что-то еще, чтобы исправить ее?

Ответы [ 5 ]

71 голосов
/ 06 января 2009

RPC / закодированный является следствием того, что объекты SOAP были определены с помощью XML-схемы. Это больше не поддерживается . Вам нужно будет сгенерировать заглушки, используя Apache Axis 1.0 , которая относится к той же эпохе.

java org.apache.axis.wsdl.WSDL2Java http://someurl?WSDL 

Вам понадобятся следующие jar или эквиваленты в параметре -cp classpath:

Это создаст сходные заглушки для wsimport.

В качестве альтернативы , если вы не используете части схемы, которые требуют кодирования rpc /, вы можете скачать копию WSDL и закомментировать эти биты. Затем запустите wsimport для локального файла.

Если вы посмотрите на WSDL, следующие биты используют rpc / encoded:

<soap:body use="encoded"
           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
16 голосов
/ 28 июля 2014

Я использовал Axis 1.4, как Чейз Сейберт предложил в его ответ , хотя ссылка на скачивание, приведенная в этом ответе, не работает. Альтернативная ссылка на скачивание, которую я использовал, дала мне разные библиотеки. Ниже приведены шаги, которые я выполнил для генерации моего кода.

Перейдите на http://apache.is.co.za/axis/axis/java/1.4/ и загрузите axis-bin-1_4.zip .

Извлеките его, и вы должны иметь следующие файлы (среди прочих):

  • axis.jar
  • Обще-открытие-0.2.jar
  • Обще-каротаж 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.

P.S .: Это похоже на одинаковую эффективность при использовании Axis 1.2.1.

5 голосов
/ 17 апреля 2012

Может быть, это поможет с CXF. По крайней мере, это сработало для меня. Я отредактировал файл 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>
2 голосов
/ 16 октября 2018

Если кто-то захочет использовать 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>
0 голосов
/ 04 августа 2016

просто распаковать и выполнить 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
...