Ошибка Axis2 wsdl2java в веб-службах 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: (

Ответ 1

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

1) Исходная реализация SUN JAX-RPC (wscompile)

2) WebLogic клиентген (я использовал версию 8.1)

3) Axis1 v1.4 wsdl2java

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

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

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

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

Ответ 3

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

Ответ 4

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

Подробный отчет ADB

Кроме того, я согласен с Робертом, заявив, что ось1 также интересна.

Ответ 5

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

Java 6 SE и Java 5 EE поставляются с Metro JAX-WS (ссылка).

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

В Sun Developer Network есть статья Представляем JAX-WS 2.0 с платформой Java SE 6, которая может быть полезна.

Сказав все это, Eclipse не очень JAX-WS дружественный.

Ответ 6

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

D:\axis-1_4\lib > java -classpath\axis-1_4\lib * org.apache.axis.wsdl.WSDL2Java urwsdl

Ответ 7

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

-d xmlbeans