したがって、Groovyを使用して通常のANTでは実行できない複雑な計算を処理するANTスクリプトがいくつかあります(少なくともafaik)。Groovy経由でSOAPエンベロープを使用してAxis2Webサービスにアクセスしようとしています。complexType
2つの属性(1つは要求に、もう1つは応答に)を除いて、要求と応答は非常に単純です。
私が最初に出くわしたのはGroovySoapでした。使い方はとても簡単です。SoapClientをインスタンス化してWebサービスメソッドを呼び出すだけです。残念ながらcomplexType
、リクエスト内の属性を処理できません。必要なものは次のとおりです。
現在の制限:
...。
4:現在のgroovy-1.0リリースでGroovy SOAPモジュールを使用している場合、クライアント側でカスタムデータ型を処理することはできません。
それから私はGroovyWSについてたくさん読みました。Grape構成ファイルを自分user.home
で作成しました。javacと$GROOVY_HOMEが使用可能です(基本的に、プロジェクトのクイックガイドページで説明されているようにすべてを実行しました)。私が最初にスクリプトを開始したとき、GrapeはどういうわけかIvyを取得しました(Grapeの経験はありませんが、Mavenに非常に似ていると思います)。
次に、簡単なスクリプトを開始しました。
@Grab(group='org.codehaus.groovy.modules', module='groovyws',version='0.5.2')
import groovyx.net.ws.WSClient
proxy = new WSClient("http://127.0.0.1/axis2/services/ReleaseService?wsdl", this.class.classLoader)
proxy.initialize()
残念ながら、Webクライアントを初期化することさえできませんでした(クラスパスにGroovy Soapライブラリがない場合)。
SEVERE: Could not compile java files for http://127.0.0.1/axis2/services/ReleaseService?wsdl.
Caught: java.lang.IllegalStateException: Unable to create JAXBContext for generated packages: Provider com.sun.xml.bind.v2.ContextFactory could not be instantiated: javax.xml.bind.JAXBException: "com.intershop.qa.tae.ws.xsd" doesnt contain ObjectFactory.class or jaxb.index java.lang.IllegalStateException: Unable to create JAXBContext for generated packages: Provider com.sun.xml.bind.v2.ContextFactory could not be instantiated [...]
私が持っているクラスパスにGroovySoapライブラリ(GroovyWSの機能の一部をオーバーロードしているようです)を使用すると、次のようになります。
Caught: java.lang.NoSuchMethodError: javax.wsdl.xml.WSDLReader.readWSDL(Ljavax/wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;)Ljavax/wsdl/Definition; java.lang.NoSuchMethodError:
これは、最初にGroovySoapを使用していたときに発生したエラーと非常によく似ています。
だから私の質問は:complexType
ANTを介してパラメータを使用してAxis2Webサービスと通信するにはどうすればよい私はGroovyだけに限定されていませんが、展開上の理由(最大50のVMスナップショット)のために、単純なものが必要です。Javaクライアントは機能しましたが、デプロイメントにはかなりの労力がかかるため(特に、将来的に変更したい場合)、ANTに近く、デプロイしやすいものが必要です。
GroovyWSの実装に関する他のテクノロジーの提案や修正のアイデアを事前に感謝します。