3

ネットワーク マシン上のデスクトップ アプリケーションでメソッドを呼び出す必要がある Java Server Faces Web アプリケーションがあります。このマシンは、特定のマシンでいくつかのロジックを実行します。これが完了したら、Web アプリケーションでメソッドを呼び出して、その状態を報告する必要があります。どちらのメソッドもvoid's になりますが、パラメーターが必要です。

これを開発する最良の方法は何ですか?私はいくつかのオプションを検討しました:

  • ソケット: Web アプリケーションでソケットを使用してはならないという複数の投稿を読みました。
  • Soap: Web アプリではサーバーをセットアップできますが、デスクトップ アプリではセットアップできません。
  • JCA アダプター: これに関する知識はありません。

ウェブアプリ

    class WebAppClient {
        public void start(String x, List<String> y) {
            // Call DesktopServer.start(x, y);
        }
    }

    interface WebAppServer {
        public void reportBack(String info);
    }

デスクトップアプリ

    class DesktopClient
        public void reportBack(String info) {
            // Call WebAppServer.reportBack(info);
        }
    }

    interface DesktopServer {
        public void start(String x, List<String> y);
    }
4

1 に答える 1

0

ソケットについては正しいです。使い方は簡単ですが、多くのネットワークは単純な TCP ソケットをブロックし、HTTP のみを許可し、HTTP プロキシ経由のみを許可することもあります。

HTTP が適していますが、HTTP ではサーバーが会話を開始することはできず、要求応答モデルで作業する必要があります。

ただし、この制限を克服するために使用できる方法がいくつかあります。

  • シンプルなポーリング: 新しいメッセージを受信したかどうかを知るために、サーバーを定期的にポーリングするだけです。

  • ロングポーリング: サーバーをポーリングしますが、サーバーが何かを言うまでリクエストは開いたままになります。これは「コメット」プロトコルとも呼ばれ、jetty のような実装があります。

  • websockets: html5 の機能で、名前が示すように、http を介した真の双方向ソケットを提供します。これはまだすべてのネットワーク設定でサポートされているわけではありません。たとえば、一部のプロキシがブロックします。

各方法について調査を行い、ケースに適した方法を選択する必要があります。

幸運を。

于 2012-12-17T03:24:11.590 に答える