Wsdl2java Axis2 терпит неудачу на веб-службах RPC / Encoded style

есть ли альтернатива Axis2? Или способ заставить его работать (например, привязка разных данных)?

Retrieving document at '...'.
Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:271)
        at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
        at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(SimpleDBExtension.java:53)
        at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:224)
        ... 2 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(SimpleDBExtension.java:50)
        ... 3 more
Caused by: org.apache.axis2.schema.SchemaCompilationException: can not find type {http://schemas.xmlsoap.org/soap/encoding/}Array from the parent schema ...        at org.apache.axis2.schema.SchemaCompiler.copyMetaInfoHierarchy(SchemaCompiler.java:1296)
        at org.apache.axis2.schema.SchemaCompiler.processComplexContent(SchemaCompiler.java:1258)
        at org.apache.axis2.schema.SchemaCompiler.processContentModel(SchemaCompiler.java:1153)
        at org.apache.axis2.schema.SchemaCompiler.processComplexType(SchemaCompiler.java:1097)
        at org.apache.axis2.schema.SchemaCompiler.processNamedComplexSchemaType(SchemaCompiler.java:1017)
        at org.apache.axis2.schema.SchemaCompiler.processSchema(SchemaCompiler.java:931)
        at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:766)
        at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:552)
        at org.apache.axis2.schema.SchemaCompiler.process(SchemaCompiler.java:1991)
        at org.apache.axis2.schema.SchemaCompiler.processParticle(SchemaCompiler.java:1874)
        at org.apache.axis2.schema.SchemaCompiler.processComplexType(SchemaCompiler.java:1081)
        at org.apache.axis2.schema.SchemaCompiler.processNamedComplexSchemaType(SchemaCompiler.java:1017)
        at org.apache.axis2.schema.SchemaCompiler.processSchema(SchemaCompiler.java:931)
        at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:766)
        at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:552)
        at org.apache.axis2.schema.SchemaCompiler.process(SchemaCompiler.java:1991)
        at org.apache.axis2.schema.SchemaCompiler.processParticle(SchemaCompiler.java:1874)
        at org.apache.axis2.schema.SchemaCompiler.processComplexType(SchemaCompiler.java:1081)
        at org.apache.axis2.schema.SchemaCompiler.processAnonymousComplexSchemaType(SchemaCompiler.java:980)
        at org.apache.axis2.schema.SchemaCompiler.processSchema(SchemaCompiler.java:934)
        at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:592)
        at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:563)
        at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:370)
        at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:280)
        at org.apache.axis2.schema.ExtensionUtility.invoke(ExtensionUtility.java:103)
        ... 8 more

Примечание: Apache CXF также терпит неудачу: (

7 ответов


есть только 3 варианта, которые я нашел, которые могут быть использованы в Java для старых веб-сервисов RPC/encoded:

1) справочная реализация SUN JAX-RPC (wscompile)

2) сервер WebLogic х clientgen (я использовал версию 8.1)

3) Axis1 v1.4 wsdl2java на платформе

Первоначально мы использовали Axis 1.4 для этого, и он показал довольно низкую производительность при относительно больших ответах службы (>20k), т. е. клиент время обработки увеличилось более чем в два раза по сравнению с обычным HTTP-запросом без разбора. И время растет, если реакция становится больше. Потребовалось более 30 лет, чтобы просто десериализовать 1Mb большой respose.

сгенерированный клиент SUN на самом деле не работал, и он не удался по запросу с сообщением:

unexpected element name: 
   expected=getSubscriberInfoReturn, 
   actual={ws.generated.api}getSubscriberInfoReturn

Я попытался использовать 8.1 clientgen WebLogic и сравнил клиентский код с производительностью клиента Axis 1.4. И Аксис выиграл гонку. Итак, несмотря на то, что клиент Axis выполнение не так хорошо на относительно больших ответах по-прежнему является лучшим вариантом для старых веб-сервисов RPC/encoded :(.


кодировка RPC не поддерживается на Axis2. Источник: http://wiki.apache.org/ws/StackComparison


попробуйте Axis 1, я использовал его по этой причине.


У меня тоже были проблемы с SimpleDataBinding в axis2. Я решил их, используя Параметр AxisDataBinding. Что немного тяжелее с точки зрения кодирования, но все-таки работает.

ADB подробно

кроме того, я бы согласился с Робертом, заявив, что axis1-тоже интересный вариант.


Я не собираюсь углубляться в это, но так как вы попросили альтернативы:

Java 6 SE и Java 5 ee корабль с Metro JAX-WS (справки) внедрения.

он проживает в javax.xml.ws пространство имен.

в сети разработчиков Sun есть статья представляем JAX-WS 2.0 с платформой Java SE 6 это может быть полезно.

сказав Все это, затмение не очень В JAX-WS В дружелюбный.


Вы можете добавить следующий параметр для wsdl2java команда

-d xmlbeans

эта проблема возникает, если стиль кодировки soap старый axis2 wsdl2java или wsimport не могут понять старый стиль кодирования RPC поэтому используйте axis 1.4 или более старую версию axis отступление заключается в том, что u не найдет wsdl2java как инструмент в старой оси вместо этого вы найдете его как файл класса в файле axis jar поэтому вам нужно вручную установить путь к классу и использовать этот класс

D:\axis-1_4\lib > java-classpath \axis-1_4\lib* org.апаш.ось.язык WSDL.Wsdl2java на платформе urwsdl