Web サービス (WS) に連絡する必要があります。JDK 1.6、maven 3.04、Spring 3.20、Apache の CXF 2.7.2 を使用しています。Maven を使用して、WS に wsdl ファイルを供給することにより、WS のスタブを作成しました。私はWSクライアント用の春の設定を持っていて、それは次のようになります
サーブレット-context.xml
<jaxws:client id="paymentClient" serviceClass="com.xxx.payment.Payment"
address="http://127.0.0:8088/mockPaymentBinding" <!-- SOAPUI mock -->
username="username"
password="secret" />
<!- username and password are for wsdl basic authentication -->
Javaコードでは、次のようになります
@Autowired
com.xxx.payment.Payment client;
..
// Set all needed parameters.
PaymentGetBalanceResponse response = null;
PaymentGetBalance getBalance = new PaymentGetBalance();
RequestGetBalance value = new RequestGetBalance();
value.setTransactionId("transActionId");
getBalance.setRequest(value );
// Now call the WS and get the response
response = client.getBalance(getBalance); // generated by the cxf -client argument.
「応答」行は、例として CXF によって生成されます。次に、Eclipse は何かが不足していること (getbalance) を通知し、オプションでそれを行の上に作成します。次に、他の何か (値) が欠落しているなどです。最後に、すべてのパラメーターが正しく入力されます。欠落しているすべてのもの/変数/オブジェクトは、生成されたスタブ コードにあります。
これは魅力のように機能しますが、アドレスは春の設定でハードコードされた atm です。アプリケーションの構成パラメーターは、単純なデータベースに保管されます。Spring Bean を使用してコンテンツにアクセスできるため、config.getValue(URL); のようなものを使用して、コードの最後にある変数を取得できます。
上記のコードで「アドレス」(url WS) を変更できることを望んでいましたが、それを行う方法が見つかりませんでした。生成されたスタブ コードでセッターが見つかりません。別の方法は、Spring servlet-context.xml ファイルで変数を使用することですが、これらの変数はデータベースから取得する必要があります。2 番目の代替案。おそらく/うまくいけば、一番下から始めて、Objectfactorys (スタブ内) を使用してオブジェクトを作成します。次に、正しいパラメータを ('new' または setter のいずれかで) 設定し、一番上まで進みます。同僚がこれを行いました ('address' ではありません)。また、静的ではなく、ユーザー名とパスワードを構成可能にしたいと考えています。CXF サイトでかなりの RTM を実行しましたが、役に立ちませんでした。
JaxWsProxyFactoryBean について何か読んでも、Springs @autowire 機能を使用しているため、ここで適用する方法がわかりません。
私はこの問題について頭を悩ませてきましたが、ニューロンがぐるぐる回っているようです. どんな助け/ポインタも本当に感謝しています。