java: Rpc / encoded wsdls не поддерживаются в JAXWS 2.0

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

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

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

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

  • Ось-1.4.jar
  • Обще-каротаж 1.1.ja
  • Обще-открытие-0.2.jar
  • JAXRPC-1.1.jar
  • SAAJ-1.1.jar
  • wsdl4j-1.4.jar
  • Активация-1.1.jar
  • почта-1.4.jar

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

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

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

  

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

Перейдите по адресу 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.

PS: Это, похоже, работает одинаково хорошо с помощью Axis 1.2.1.

Может быть, это поможет с CXF. Alteast это сработало для меня. Я отредактировал файл WSDL и удалил все ссылки SOAP-ENC и создал тип ArrayOfString ниже

      

просто извлечь, и выполнить 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-адреса webservice?
  • JAX-WS - Карта Исключения к ошибкам
  • Как программно установить SSLContext клиента JAX-WS?
  • Как установить тайм-аут для клиента веб-службы JAX-WS?
  • Клиент JAX-WS: какой правильный путь для доступа к локальному WSDL?
  • Проверка на стороне сервера с помощью CXF Webservice
  • Как сделать вызов веб-службы SOAP из classа Java?
  • Interesting Posts
    Давайте будем гением компьютера.