3

Axis2とEclipseを使用して、Webサービスクライアントを生成し、独自のタイプを作成する代わりに、パッケージにすでにあるJavaタイプを使用することは可能ですか?もちろん、タイプAがすでに作成されていて、それが独自のタイプAIを作成している場合、その理由は、タイプAの変数をタイプBの変数に割り当てることはできません。

wsdlは、アプリケーションサーバーにデプロイされたWebサービスから生成されています。それから生成できない場合は、既存のJavaファイルからクライアントを生成することができます。

4

6 に答える 6

3

本当に既存のクラスを再利用したい場合は、wsdl2java を使用してクライアントを生成せずに、Axis2 API を直接呼び出すことができます。以下は、Web サービスを呼び出すための比較的単純なコードです。Web サービス エンドポイント、メソッド QName、期待される戻りクラス、およびサービスへの引数を入力するだけです。既存のクラスを戻り値または引数として再利用できます。

Web サービスが非常に複雑な場合、このアプローチを機能させるには、API をさらに深く掘り下げる必要があることに気付くかもしれません。

serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();

EndpointReference targetEPR = new EndpointReference("http://myservice");

options.setTo(targetEPR);

QName methodName = new QName("ns","methodName");

Class<?>[] returnTypes = new Class[] { String.class };

Object[] args = new Object[] { "parameter" };

Object[] response = serviceClient.invokeBlocking(methodName, args,
                returnTypes);
于 2008-10-15T20:05:12.293 に答える
1

wsdl から Web サービス クライアントを生成していますね。

wsdl2java ツールが認識できるのは wsdl 内の情報だけであるため、作成済みの型については認識されません。

タイプ情報を wsdl に入れることができれば、それが機能する可能性がありますが、試したことはありません。

タイプ A からタイプ B にコピーする簡単な方法が必要な場合は、タイプ A とタイプ B のセッターとゲッターが一致する限り、BeanUtils.copyPropertiesを試すことができます。

于 2008-10-15T16:13:53.787 に答える
0

ほとんどの Java Web サービス プロジェクトはこれを通過します。.NET/C# の世界にもっと洗練されたソリューションがあるかどうかはわかりません。

Mike が述べたように、BeanUtils.copyProperties を使用することは理にかなっています。

BR、
~A

于 2008-10-15T19:51:38.670 に答える
0

この投稿がまだ役に立たない場合は、axis2 生成クライアント ガイドを読んでください: http://axis.apache.org/axis2/java/core/docs/userguide-creatingclients.html

Axis2 Eclipse プラグインは、統合モードで ADB コード生成を呼び出すように構成されているようです ( http://axis.apache.org/axis2/java/core/docs/adb/adb-howto.htmlを参照)。したがって、内部クラスが作成されます。 Web サービス スタブ内。生成モードを拡張モード (スタブ クラスからデータ クラスを生成する) に変更できるかどうかはわかりませんが、Wsdl2Java を使用してコマンド ラインで実行できます。

    %AXIS2_HOME%\bin\WSDL2Java -uri <wsdl file path> -p <package name> -u

-u オプションは、データ クラスをスタブ内の内部クラスではなく個別のクラスとして作成するよう ADB コード ジェネレーターに指示します。

于 2013-01-22T14:20:20.490 に答える
0

ServiceClient クラスを直接使用して Web サービスを呼び出すことができます。これは、XML のみを使用して呼び出しを提供し、XML 応答を返します。Web サービスのさまざまなメソッドについては、XML 応答を Java POJO に変換して使用する必要があります。最後に行う必要があるのは、応答処理のみです。XMLからマップなどにできること...

したがって、Web サービスを呼び出すために他のスタブ クラスは必要なく、応答 XML を処理するだけで済みます。Castor または JAXB ライブラリを使用して、XML を POJO に変換できます。

これにより、diff のたびにクライアントを変更する必要がなくなります。ウェブサービス。外部からクライアントに応答ハンドラを提供するような開発ができます。そのため、さまざまな Web サービスごとに diff があります。あなたのインターフェースの実装である応答ハンドラクラス。

//common interface for response handlers...
//implement this for diff. web service/methods
public interface WSRespHandler{
    public Object getMeResp(Object respData);
}


//pass particular handler to client when you call some WS
public class WebServiceClient {
    public Object getResp(WSRespHandler respHandler) {
        ..

        return repHandler.getMeResp(xmlData);
    }
}

参照:

http://www.developer.com/java/web/article.php/3863416/Using-Axis2-and-Java-for-Asynchronous-Web-Service-Invocation-on-the-Client-Side.htm

http://www.devdaily.com/blog/post/java/java-web-service-client-read-array-list/

ありがとう。

www.techlads.com

于 2010-05-20T09:56:22.747 に答える
0

Eclipse をアイデアとして使用する場合は、 http ://www.eclipse.org/webtools/ が必要です。それはまさにあなたが望むものを他のものを超えて行います.

于 2008-11-18T22:31:00.530 に答える