EJB 3 以降、組み込み可能な EJB コンテナーがあり、JPA 実装はアプリケーション サーバーなしで使用でき、コンテキストと依存性注入のための Weld などがあります。多くのシステムでは Tomcat しか利用できないため、Java EE をアプリケーション サーバーなしで、Tomcat のようなサーブレット コンテナーと共に使用できるのではないかと考えています。
Java 環境をセットアップするにはどうすればよいですか? どのような欠点が見られますか?
EJB 3 以降、組み込み可能な EJB コンテナーがあり、JPA 実装はアプリケーション サーバーなしで使用でき、コンテキストと依存性注入のための Weld などがあります。多くのシステムでは Tomcat しか利用できないため、Java EE をアプリケーション サーバーなしで、Tomcat のようなサーブレット コンテナーと共に使用できるのではないかと考えています。
Java 環境をセットアップするにはどうすればよいですか? どのような欠点が見られますか?
Tomcat はアプリケーション サーバーであることに注意してください。そうは言っても、10 月に、Tomcat に不足している JavaEE の部分を追加したApache TomEEをリリースし、Oracle の公式 TCK を使用して Java EE 6 を認定しました。
スタックは単に「OpenEJB/Tomcat」と呼ばれていたものから進化したもので、悪名の便利なスタックでした :) 「EJB」部分のために見過ごされがちですが、Tomcat にトランザクション、JMS、Web サービスなども提供しました。 . 新しい名前ははるかに優れており、JBoss や GlassFish のように正式に認定されています。私たちはその将来に非常に興奮しています。
よくわかりましたら、サーブレットコンテナ内でEJB3/JPAを使いたいと思います。
JPA のスタンドアロン実装だけでなく、 OpenEJBや Glassfish組み込み可能コンテナーなどの組み込み可能なEJB3 コンテナーもあります。したがって、EJB3 を使用するために、サーブレット コンテナーからこのような組み込み可能なコンテナーを開始することを妨げるものは何もありません。
(注: トランザクションに関するすべての詳細を知っているわけではありません。本格的なアプリケーション サーバーでは、JTA と分散トランザクション マネージャーがあります。Tomcat などのサーブレット コンテナーにはそれがありません。JPA は JTA と連携します。プレーンな JDBC が必要ですが、JTA なしで埋め込み可能なコンテナーがどのように機能するかは正確にはわかりません.それでも、そのような埋め込み可能なコンテナーは、JTA 分散トランザクション マネージャーがないと思われる単体テストにも使用されることを考えると、うまくいくと思います.)
別のアプローチは、Spring を使用することです。Spring と EJB3 は実によく似ています。Servlet コンテナー内で Spring DI コンテナーを開始すると、多かれ少なかれ EJB3 と同じ機能 (宣言型トランザクションなど) を利用できます。Spring vs. EJB3に関するこの投稿を参照してください。
これらのテクノロジーはすべて、特に Java EE プロファイルを使用してかなりモジュール化されています。Sevlets、EJB3、JMS、JPA、さらには JTA を互いに独立して使用できます。また、Spring または Java EE を使用して、必要なものを選択する環境を作成することもできます。問題は、それが意味を成さず、むしろアプリを使用するのはいつになるかということです。すべてが利用可能で管理しやすいサーバーです。Servlet/EJB3/JPA が限界だと思います。さらに必要な場合は、アプリを使用してください。サーバ。
通常、コンテナが Java EE 関連のサービスを提供しない場合でも、何らかのコンテナが必要になります。結局のところ、実行中のコードをホストするには、存続期間の長い JVM プロセスが必要です。Tomcat と Jetty はうまく機能し、基本的なサーブレット サービスに加えて、接続プールなど、関連するいくつかの便利な追加機能を提供します。