私たちは、プロダクト環境とプリプロード環境で異なるエンドポイントを持つSOAPサービス(Javaアプリケーションで)を使用しようとしています。 wsimportを使用してクライアントコードを生成し、バインディングプロバイダを使用してエンドポイントをオーバーライドしようとしました。実行時にSOAPエンドポイントを置き換える問題
バインディングプロバイダは事前プロダクション環境で正しく動作します(自動生成コードは事前プロダクト環境のwsdlからのものでした)。ただし、本番環境でテストを実行しようとすると、バインディングプロバイダはエンドポイントをオーバーライドできません。 プロダクション環境では、「接続する前に接続できませんでした」がスローされます。 バインディングプロバイダは、preprod wsdlとprod wsdlがエンドポイントをオーバーライドするためにアクセスする必要があることを知りました。セキュリティグループの制限のため、prodからwsdlにアクセスすることはできません。
実行時にprod wsdlからサービスを呼び出すことでエンドポイントを読み取ろうとしましたが、wsdlのポート情報が一部のIPアドレスにハードコードされていて変更できず、prod wsdlを修正することができません。
実行時にエンドポイントを上書きする方法はありますか。
私は可能なソリューションをUDDIとゲートウェイサービスで分析しています。平均時間には、将来のコーディングからの他の迅速なソリューションがありますか? 現在、アプリケーションではゲートウェイは使用されていません。また、UDDIプロセスでは複数の承認が必要となりますので、何か素早く確認するだけです。 – user3452558
Axis2のソースコードを参照して、コールの前にエンドポイントを変更する方法を確認できます。この例を参照し、Axis2のsrcコードを確認してください:https://axis.apache.org/axis2/java/core/docs/userguide-creatingclients-xmlbeans.html – amitmah
提案に感謝していただきありがとうございます。私はこの問題の解決を得ました。実際には、主な問題であった自動生成されたスタブファイル内に奇妙な静的ブロックと静的パラメータがありました。文字通り、自動生成されたコードを変更し、ロジックを書き直し、使用していないコンストラクタや静的メソッドを読んだ。そこで私は、自動生成されたファイルを変更して、それらが配備で置き換えられないことを確認することで、より迅速な方法を見つけました。しかし、まだあなたの提案をお寄せいただきありがとうございます。私は引き続き探求する新しいアイデアを開いています。 – user3452558