1

私は Apache Axis 1.4 (はい、古いもの) を wsdl2java と共に使用して、Web サービスのクライアント コードを生成しています。生成されたスタブでメソッドを呼び出す前に、Call オブジェクトに追加のプロパティを設定したいと思います。

たとえば、ユーザー名、パスワードを設定し、おそらく既存のヘッダーを追加または変更し、クライアント ハンドラーを変更して別の実装を使用したいと考えています。

現在、生成されたスタブ クラスを変更し、適切なセッターを呼び出すことでこれを行っています。ただし、生成されたファイルに触れずにこれを実現したいと思います。ただし、Stub クラスには次のものがあるため、混乱しています。

createCall()

call オブジェクトを作成し、いくつかのプロパティを設定します。現在、ここで生成されたソース コードを変更しています。次に、スタブには以下が含まれます。

clientMethod1(){
    blahblah
    Call _call = createCall();
    ......
    _call.invoke();
}

そのため、スタブ メソッドが createCall() を呼び出すとすれば、serviceLocator を使用してスタブを取得し、変更したいプロパティを変更し、スタブを使用して呼び出したいメソッドを呼び出す方法がわかりません。そして、invoke を呼び出します。新しい Call オブジェクトが呼び出される前に傍受する方法はないようです。

では、生成されたスタブ クラスのソース コードを変更せずに、呼び出しでプロパティを変更するにはどうすればよいでしょうか。

情報や既存のドキュメントへのポインタをありがとう。

4

1 に答える 1

0

生成されたコードにも触れたくありません。リスクは、一度それを再生成して編集を失うことです。

軸の詳細を知らなくても、スタブをサブクラス化して「createCall」をオーバーライドすることはできませんか? Axis はこのサブクラスに触れず、オーバーライドされた createCall メソッドでプロパティを設定できます

于 2010-01-23T22:02:35.323 に答える