1

JAX-RSWebサービスを作成しています。クライアントの呼び出しに次のように応答します。

  1. データベースから一部の情報を取得する
  2. 外部サーバーに電話をかける

2)の場合、サーバーはWebサービスインターフェースを公開しません(つまり、WSDLインターフェースまたはREST APIは公開しません)。代わりに、TCPIPを介したカスタムプロトコルを使用します。JAX-RSリソースからこのサーバーに直接クライアント呼び出しを行いたいのですが、JAX-RSリソースへの呼び出しごとに接続を開き、認証し、接続を閉じる必要はありません。これを回避する方法はありますか?言い換えれば、Java EEアプリで利用できる「ソケット接続プール」のようなものはありますか?ESBのようなものを使用する必要がありますか?または私が見落としている代替案はありますか?

4

1 に答える 1

1

これを行う「正しい」方法は、外部サーバー用のJCAコネクタを作成することです。JCAはJavaEEスタックの一部であり、まさにそのためのものです。つまり、アプリケーションサーバーから外部システムへのインバウンドおよびアウトバウンド接続を提供することです。プーリング認証、トランザクションなどをサポートします(データベースとJMSブローカーはJCAコネクタを介したアクセスです)。

ただし、このようなアダプタを作成するのは非常に難しい場合があります。たぶん、一般的なプーリングライブラリ(commons-pool、またはc3p0で何か面白いものを見つけたかもしれません)がより簡単かもしれない軽量のアプローチを調査してください。

TCP接続プールに関するこの回答もご覧ください。

于 2010-03-03T08:26:52.527 に答える