Ошибка 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/закодированных веб-сервисов: (.
Ответ 2
Кодирование RPC не поддерживается в Axis2. Источник: http://wiki.apache.org/ws/StackComparison
Ответ 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