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
У меня тоже были проблемы с SimpleDataBinding в axis2. Я решил их, используя Параметр AxisDataBinding. Что немного тяжелее с точки зрения кодирования, но все-таки работает.
кроме того, я бы согласился с Робертом, заявив, что axis1-тоже интересный вариант.
Я не собираюсь углубляться в это, но так как вы попросили альтернативы:
Java 6 SE и Java 5 ee корабль с Metro JAX-WS (справки) внедрения.
он проживает в javax.xml.ws
пространство имен.
в сети разработчиков Sun есть статья представляем JAX-WS 2.0 с платформой Java SE 6 это может быть полезно.
сказав Все это, затмение не очень В JAX-WS В дружелюбный.
эта проблема возникает, если стиль кодировки 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