2016-07-14 9 views
0

私たちは、プロダクト環境とプリプロード環境で異なるエンドポイントを持つSOAPサービス(Javaアプリケーションで)を使用しようとしています。 wsimportを使用してクライアントコードを生成し、バインディングプロバイダを使用してエンドポイントをオーバーライドしようとしました。実行時にSOAPエンドポイントを置き換える問題

バインディングプロバイダは事前プロダクション環境で正しく動作します(自動生成コードは事前プロダクト環境のwsdlからのものでした)。ただし、本番環境でテストを実行しようとすると、バインディングプロバイダはエンドポイントをオーバーライドできません。 プロダクション環境では、「接続する前に接続できませんでした」がスローされます。 バインディングプロバイダは、preprod wsdlとprod wsdlがエンドポイントをオーバーライドするためにアクセスする必要があることを知りました。セキュリティグループの制限のため、prodからwsdlにアクセスすることはできません。

実行時にprod wsdlからサービスを呼び出すことでエンドポイントを読み取ろうとしましたが、wsdlのポート情報が一部のIPアドレスにハードコードされていて変更できず、prod wsdlを修正することができません。

実行時にエンドポイントを上書きする方法はありますか。

答えて

0

スタブがハードコードされたQAエンドポイントを持っていたという主な原因は問題でした。私はクライアントスタブコードを修正し、ハードコードされたエンドポイントをプロキシ生成コードから削除し、バインディングプロバイダは正常に動作し始めました。他のすべてのソリューションは時間がかかり、ゲートウェイサービスを使用するためには環境レベルの変更が必要でした。

0

UDDIのようなソリューションを使用して、SOAPエンドポイントのバージョン管理を維持することも、ゲートウェイサービスを使用することもできます。この単一のサービスは、実行時に内部的に異なるサービスにコールを誘導します。

多くの柔軟性があるので、私はUDDIを好んでいます。 参照:https://docs.oracle.com/cd/E17904_01/admin.1111/e15867/uddi.htm#OSBAG392

+0

私は可能なソリューションをUDDIとゲートウェイサービスで分析しています。平均時間には、将来のコーディングからの他の迅速なソリューションがありますか? 現在、アプリケーションではゲートウェイは使用されていません。また、UDDIプロセスでは複数の承認が必要となりますので、何か素早く確認するだけです。 – user3452558

+0

Axis2のソースコードを参照して、コールの前にエンドポイントを変更する方法を確認できます。この例を参照し、Axis2のsrcコードを確認してください:https://axis.apache.org/axis2/java/core/docs/userguide-creatingclients-xmlbeans.html – amitmah

+0

提案に感謝していただきありがとうございます。私はこの問題の解決を得ました。実際には、主な問題であった自動生成されたスタブファイル内に奇妙な静的ブロックと静的パラメータがありました。文字通り、自動生成されたコードを変更し、ロジックを書き直し、使用していないコンストラクタや静的メソッドを読んだ。そこで私は、自動生成されたファイルを変更して、それらが配備で置き換えられないことを確認することで、より迅速な方法を見つけました。しかし、まだあなたの提案をお寄せいただきありがとうございます。私は引き続き探求する新しいアイデアを開いています。 – user3452558

関連する問題