12
votes

L'Axis2's WSDL2JAVA échoue sur les services Web de style RPC / codé.

Y a-t-il une alternative à Axis2? Ou la manière de le faire fonctionner (reliure de données différente, par exemple)?

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


0 commentaires

8 Réponses :


2
votes

Essayez Axis 1, je l'ai utilisé pour cette raison exacte.


1 commentaires

Oui, nous utilisons Axis 1 pour le moment, actuellement. Mais nous frappons des problèmes de performance avec cela :(. Connaissez-vous d'autres alternatives à Axis 1 ou 2 ou Apache CXF?



1
votes

J'ai eu des problèmes avec simplesDaThabinding à Axis2 aussi. Je les ai résolus en utilisant le Option d'axisdatabinding. Qui est un peu plus lourd du poids de codage, mais fonctionne après tout.

adb en détail

En outre, j'accepterais Robert, indiquant que Axis1 est également une option intéressante.


0 commentaires


11
votes

Il n'y a que 3 options que j'ai trouvées pouvant être utilisées dans Java pour des services Web RPC / codés de style ancien:

1) La mise en œuvre de référence de JAX-RPC ( WSCompile forte>) P>

2) Weblogic's ClientGen STRT> (i utilisé 8.1 Version) P>

3) Axis1 v1.4 WSDL2JAVA strong> p> À l'origine, nous avons utilisé l'axe 1.4 pour cela et il a montré une performance assez médiocre sur des réponses de service relativement importantes (> 20k), c'est-à-dire que le temps de traitement du client a augmenté de plus de deux fois la comparaison de la demande HTTP sans analyse. Et le temps grandit si la réponse devient plus grosse. Il a fallu plus de 30 ans pour désérialiser 1 Mo de 1 Mo Large RESPORE. P>

Le client généré par Sun ne fonctionnait pas vraiment et il a échoué sur demande avec le message: p>

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


2 commentaires

Pourriez-vous montrer comment faire cela précisément? Lors de l'exécution Java -ClassPath chemin / à / Axis-1_4 / lib / org.apache.axis.wsdl.wsdl2java J'ai reçu une erreur : Impossible de trouver ou de charger la classe principale org.apache. axis.wsdl.wsdl2java


Homme, c'était il y a 6 ans :). Votre erreur indique que vous avez des problèmes avec votre classe de classe.



5
votes

Le codage RPC n'est pas pris en charge sur Axis2. Source: http://wiki.apache.org/ws/stackcomparison


0 commentaires

0
votes

Ce problème soulève si le style de codage du savon est vieux Axis2 WSDL2JAVA ou WSIMPORT ne peut pas comprendre l'ancien style de codage RPC alors utilisez l'axe 1.4 ou la version antérieure de l'axe Le tirage au sort est que vous ne trouverez pas WSDL2JAVA en tant qu'outil de l'ancien axe au lieu de cela, vous le trouverez comme un fichier de classe dans le fichier jar axe Donc, vous devez définir manuellement une classe de classe et utiliser cette classe

D: \ Axis-1_4 \ Lib> Java -ClassPath \ Axis-1_4 \ lib * org.apache.axis.wsdl.wsdl2java URWSDL


0 commentaires

1
votes

Vous pouvez ajouter un paramètre suivant pour wsdl2java commande xxx


0 commentaires