0

多くの Jetty http(s) サーバーがあり、すべて異なるファイアウォールの背後にあります。http サーバーはお客様のサイトにあります (当社の管理下ではありません)。これらのサイトのファイアウォールでポートを開くことはできません。現在、これらのサーバーは、REST 要求に応答して JSON ドキュメントのみを提供しています。

URL パラメーターまたはヘッダー値に基づいて、特定の http サーバーと対話する必要がある Web クライアントがあります。

これは、ファイアウォールを除いて、単純なプロキシ サーバーの状況のように見えます。

私が現在試みているアプローチはこれです:

リモート http サーバーからのインバウンド登録要求をリッスンする集中プロキシ サーバー (これも Jetty ベース) を用意します。登録要求は Websocket 接続の形式で行われ、リモート HTTP サーバーが利用可能である限り維持されます。登録時に、プロキシ サーバーは websocket 接続をキャプチャし、それをリソース識別子にマップします。

Web クライアントはプロキシ サーバーに接続し、URL またはヘッダーにリソース識別子を含めます。

プロキシ サーバーは、使用する適切な Websocket を決定し、要求を HTTP サーバーに渡します。したがって、リクエストとレスポンスは Websocket を経由します。応答が受信されると、Web クライアントに返されます。

したがって、これは理論的にはすべてうまくいっています-私が理解しようとしているのは次のとおりです。

a)これを達成するためのより良い方法はありますか?

b) パイプの HTTP サーバー側でプロキシを行うように Jetty をセットアップする最良の方法は何ですか?

Jetty の HttpClient を使用できると思いますが、実際にやりたいことは、Websocket から HTTP バイトを取得して、Jetty コネクタに直接パイプすることです。すべてを解析するのは意味がないようです。ローカルホストで通常のソケット接続を開き、websocket からバイトを取得して、そのように実行できると思いますが、そのように OS を介してルーティングするのはばかげているようです (私は既にHTTP サーバーの Jetty 環境で動作しています)。 .

これは、すでに解決されている可能性のある問題のように思えます...おそらく、TCP/IPソケットの代わりにWebSocketで動作するカスタムjetty接続を使用することでしょうか?


更新: 私はこれで遊んでいたので、別のトリッキーな問題は、要求/応答の動作をどのように処理するか (そして、理想的には websocket チャネルを介した多重化をサポートすること) のようです。私が見つけた潜在的なリソースの 1 つは、Websockets の WAMP サブプロトコルです: http://wamp.ws/

4

1 に答える 1

0

他の誰かがこれに対する答えを探している場合 - RESTEasy には、完全なサーブレット コンテナを介さずに REST 機能を呼び出すために使用できるモック フレームワークがあります: http://docs.jboss.org/resteasy/docs/2.0 .0.GA/userguide/html_single/index.html#RESTEasy_Server-side_Mock_Framework

これを WAMP と組み合わせると、私が探していることを実行しているように見えます。

于 2014-02-11T04:30:24.367 に答える