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
8 Réponses :
Essayez Axis 1, je l'ai utilisé pour cette raison exacte. P>
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?
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. p>
En outre, j'accepterais Robert, indiquant que Axis1 est également une option intéressante. P>
Je ne vais pas en profondeur avec cela, mais depuis que vous avez demandé des alternatives: p>
Java 6 SE et Java 5 EE Navire avec le Metro Jax-WS (Référence ) Mise en œuvre. P>
Il vit dans le < Code> javax.xml.ws code> Espace de noms. P>
Le réseau de développeurs de Sun a un article introduisant JAX-WS 2.0 avec le Java SE 6 Plate-forme qui pourrait être utile. P>
Après avoir dit tout cela, Eclipse n'est pas très JAX-WS amical a>. p>
Je serais heureux d'utiliser Jax-WS, mais Jax-WS ne prend pas en charge les services Web de style RPC / codé. Et je ne peux pas changer le service Web :(, mais j'ai besoin d'un client pour cela.
J'ai essayé d'utiliser la mise en œuvre de la référence JAX-RPC et WSCompile. Après avoir téléchargé tous les pots que Sun n'incluait pas dans la normale distrubtion, j'ai réussi à générer le client, mais elle a échoué avec une exception: * Causé par: Nom d'élément inattendu: attendu = getsubscriberinforeturn, réel = { ws.génerated.api } getubscriberinforeturn
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
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 code> J'ai reçu une erreur
: Impossible de trouver ou de charger la classe principale org.apache. axis.wsdl.wsdl2java code>
Homme, c'était il y a 6 ans :). Votre erreur indique que vous avez des problèmes avec votre classe de classe.
Le codage RPC n'est pas pris en charge sur Axis2. Source: http://wiki.apache.org/ws/stackcomparison p>
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 p>
D: \ Axis-1_4 \ Lib> Java -ClassPath \ Axis-1_4 \ lib * org.apache.axis.wsdl.wsdl2java URWSDL P> blockQuote>
Vous pouvez ajouter un paramètre suivant pour wsdl2java code> commande
Le message de réponse sur soapenc.xsd trouvé ici
clickatell SOAP WSDL sur les classes JAXB Java a >
m'a aidé. J'utilisais l'utilité WSDL2JAVA de Axis1.5, nous avons eu l'erreur similaire sur le tableau. p> J'ai essayé de mettre à jour mon fichier WSDL en créant le SOAPENC. XSD avec le contenu du site Web ' http://schemas.xmlsoap.org/soap/encoding/ a> '.
Comme indiqué ci-dessous, cela a vraiment fonctionné pour moi. P> p> p>