0

JavaApplicationが起動すると、ソケットを開いて接続(サーバーなど)をリッスンします。また、JavaApplicationからデータを取得してWebBrowserに表示するWebApplicationもあります。これを実装するために、私は次のように考えました。

  1. サーブレットを使用して、ソケットを使用してそのJavaApplicationに接続し、データを取得できます
  2. WebServiceの作成:WebApplicationはWebServiceにリクエストを送信し、WebServiceはソケットを開いてJavaApplicationに接続します。
  3. あなたのアプローチ

これはすべて同じサーバーにあります。

最終的にソケットを開いてサーブレットから実行でき、途中でWebServiceと通信しないため、2番目のアプローチは見過ごされますか?

4

3 に答える 3

2

この質問に対する答えはありません。この決定の基礎となる情報はありません。

Webサービスを作成するのは大変な作業なので、アプローチ#1は「無駄な」作業を回避します。一方、他のアプリケーション(または他のWebサービス)がWebサービスを使用してJavaサービスと通信できるため、Javaサービスを他の用途で使用できるようになります。

したがって、この作業が他の人にも役立つ場合は、Webサービスとして実装してください。これにより、Webサービスを単独でデプロイすることもできるため、Javaアプリへのアクセスは、Webアプリが実行されているかどうかに依存しません。

于 2012-08-15T10:48:13.817 に答える
0

IMO、これを「正しく」実行したい場合は、少なくとも2つの方法で実装することを計画する必要があります。これを行うには、後で使用する通信メカニズムとは関係なく、Javaアプリケーションで「サービス」を定義する必要があります。

そのサービスインターフェイスを定義したら、かなり多くの可能性から、使用する2つの方法を選択する必要があります。

  • ファイル
  • データベーステーブル
  • rawソケット
  • JMS
  • AMQP
  • Webソケット
  • SOAPベースのWebサービス
  • RESTfulWebサービス
  • 他の多くの人、しかしあなたは要点を理解します

別の回答で述べられているように、普遍的な「正しい」選択はありません。決定は、解決しようとしている問題の詳細によって決定されます。2つの可能性を選択したら、それら2つの中で最適な候補を実装します。実際に2つ目が必要な場合は、それも実装するか、後で使用するために保存しておくことができます。これにより、設計がそのような成長に容易に対応できるようになります:)

于 2012-08-15T11:44:51.197 に答える
0

まず、「サーバー」Javaコードを直接統合する可能性はありますか?呼び出し可能なライブラリを作成しますか?

次に、サーブレットへのリクエストとサーバーからのデータのフェッチとの関係は何ですか?リクエストごとに異なるデータを取得しますか?

一般的に、リクエストごとにサーバーと通信するためのソケットを開いたり閉じたりするのは好きではありません。そのような接続のプールの場合のように思えます。

私の本能、あなたの要件についてほとんど知らない。ソケットを開いてデータを取得するスレッドセーフなJavaコンポーネントを作成します。サーブレットリクエストが使用を取得してプールに戻ることができるようなオブジェクトのプールを用意します。

Java EEには、サーブレットとEJBで許可される内容についていくつかの制限があります。アプリサーバーには、実際にコネクタオブジェクトを使用する「ワーカー」の概念がある場合があります。

于 2012-08-15T12:58:22.253 に答える