2009-08-31 2 views
11

Есть ли альтернатива Axis2? Или способ заставить его работать (например, привязка данных)?Ошибка wsdl2java от Axis2 на веб-сервисах RPC/Encoded

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 не удается, а :(

ответ

9

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

1) эталонная реализация SUN по JAX-RPC (WSCompile)

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

3) axis1 v1.4 WSDL2Java

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

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

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

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

+0

Не могли бы вы показать, как это сделать точно? При запуске 'java -classpath path/to/axis-1_4/lib/org.apache.axis.wsdl.WSDL2Java' Я получил' Ошибка: не удалось найти ad main class org.apache.axis.wsdl.WSDL2Java' –

+0

Человек, это было 6 лет назад :). Ваша ошибка указывает на наличие проблем с вашим классом. –

1

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

+0

Да, мы используем оси 1 в данный момент, actualy. Но мы столкнулись с проблемами производительности с этим :(Знаете ли вы какие-либо другие альтернативы Axis 1 или 2 или Apache CXF? –

+0

Вы пробовали XFire или JbossWS? –

1

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

ADB in detail

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

0

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

Java 6 SE и Java EE 5 судов с (ссылка) реализации Metro JAX-WS.

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

У Сети разработчиков Sun есть статья Introducing JAX-WS 2.0 With the Java SE 6 Platform, которая может быть полезна.

Сказав все это, Eclipse не очень JAX-WS friendly.

+0

Я был бы счастлив использовать JAX-WS, но JAX-WS не поддерживает веб-службы rpc/encoded style, и я не могу изменить веб-сервис :(, но для этого мне нужен клиент. –

+0

Должен ли я предположить, что JAX-RPC тоже не работает? – Powerlord

+0

Я пробовал использовать JAX -RPC и wscompile.После загрузки всех банок, которые SUN не включил в нормальное распределение, мне удалось сгенерировать клиента, но он не удался с исключением: * Caused by: Неопределенное имя элемента: expected = getSubscriberInfoReturn, actual = {http : //ws.generated.api} getSubscriberInfoReturn –

0

Эта проблема возникает, если стиль стиля мыла устарел 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

0

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

-d xmlbeans 
Смежные вопросы