4

Spring をアプリケーション サーバー コンテナーの外に配置するのではなく、Tomcat にデプロイする利点を探しています。

私のプロジェクトは Web サポートを必要としません。トランザクション管理、DB プール、JMX、低レイテンシー、より一般的な Java-ee テクノロジーなどのテクノロジーが必要です。

では、なぜ tomcat を使用するのでしょうか。DB POOL があるという理由だけであれば、自分で実装できます。低遅延ソリューションを探しています。

繰り返しますが、私のプロジェクトは完全なバックエンドであり、Web サポートは必要ありません。

それで、私はここで何が恋しいですか?

4

5 に答える 5

3

「より一般的な Java EE テクノロジー」とは、実際にはどういう意味ですか?

「単なるバックエンド」の場合、フロントエンドとは何ですか? アプリケーションはバックエンドとどのように通信しますか?

Web インターフェイスが必要ない場合、Web コンテナーを使用するメリットはありません。

複雑なトランザクション管理が必要な場合は、既存の管理/管理インターフェースがあるため、(Web コンテナーではなく)アプリケーションサーバーの下でセットアップする方が簡単なメッセージ キューなどが必要です。それらはすべて独自に設定することできますが、より面倒になる可能性があります.Springを使用すると、その痛みが多少軽減される場合があります.

ただし、「より一般的な Java EE テクノロジ」が必要なため、スタンドアロン アプリの実装については少し神経質になります。アプリ コンテナには、その「一般的な Java EE テクノロジ」がすべて組み込まれ、テスト済みで機能します。共通の Java EE アプリ コンテナーを使用せずに、さまざまなパッケージをまとめて「共通の Java EE テクノロジ」を提供する場合は、アプリ コンテナーを使用する方が簡単な可能性があります。さまざまなソースからのサービス。

于 2012-06-18T10:45:54.017 に答える
1

アプリがWebアプリでない場合は、ここの[すべての既知の実装クラス]にリストされているWeb固有ではないアプリケーションコンテキストのいずれかを使用できます 。次に、実行可能なjarのmainメソッドからコンテキストを初期化できます。

于 2012-06-18T10:00:40.483 に答える
1

Webサポートが必要ない場合は、Tomcatやその他のアプリサーバーを使用する必要はありません。Springは、必要な機能のほとんどを提供します。接続プールには、c3p0やapachedbcpなどの多くのオプションがあります。そのうちの1つを使用できます。

あなたが心配しなければならない唯一のことはあなたのプロセスのクリーンなシャットダウンです。あなたはあなた自身のシャットダウンフックを実装することによってそれをすることができます。

于 2012-06-18T11:10:46.487 に答える
0

アプリケーションをデプロイする理由の1つはtomcat、接続の負担、スレッド管理などのすべてを提供することです。自分で実装できなかったことは何もありません。ただし、これtomcatは堅牢であり、そのロジックを実装する際のすべての問題にすでに対処していることを忘れないでください。

それ以外に、アプリケーションコンテナを使用する意味はほとんどありません(その量のコードを開発して維持する必要がないのは簡単だと思う場合)。

于 2012-06-18T09:59:30.360 に答える
0

tomcat などを使用しないでください。春はもうコンテナ。1 つの単純なスレッドでスプリングを初期化し、適切なクリーンアップ フローがあることを確認します。それだけです。以前は、さまざまなプロトコルを介して他のサーバーに割り当て、通信するいくつかのサーバー側統合アプリケーションで作業していましたが、すべては Web コンテナーまたは J2ee アプリケーション サーバーなしで簡単に実行できました。Spring はほとんどすべてをサポートしており、場合によっては 3d パーティのライブラリ (キャッシング、トランザクション、プールなど....) をサポートしています。簡略化されたバージョンは次のようになります。

...
pubcic static  void main (String args[]){
 Server.server = new Server(...);
 server.initSpringContext()
 server.keepAlive();
 server.cleanupResources();
}

..
abstract class Server{

abstract void initSpring();
abstract void cleanUpResources();
abstract void shutdown(){
  this.state = STOP;
};
public void keepAlive()
 while(state!=STOP){
  sleep(1000)
 }

}
于 2012-06-26T05:33:57.310 に答える