2

Websphere 7サーバーを使用していますが、JPA2.0をサポートしていません。そのため、WAS 7JPA2.0アプリケーションでは実行できません。

しかし、SpringユーザーがTomcatまたはJettyでHibernateをどのように実行するのか疑問に思っていますか?このサーブレットコンテナも(WAS 7として)JavaEE6をサポートしていません。

つまり、WAS 7でHibernateを実行すると、TomcatやJettyと同じ結果が得られるということですか?

はいの場合、JPAにアプリサーバーを使用する利点は何ですか?すべての開発者がアプリサーバーの代わりにサーブレットコンテナを使用しないのはなぜですか?

また、いくつかの追加機能を可能にする「コンテナ管理」のものについて聞いたことがあります。つまり、多くの開発者(Spring on JettyとTomcatを使用している)は、アプリサーバーのコンテナー管理機能を使用するメリットを享受していないということですか?

Feature PackPS JPA2.0サポート用のWAS7で利用可能なパッチについては知っていますが、質問はありません。

4

4 に答える 4

5

適切な jar を WEB-INF/lib フォルダーに含めることで、多くの機能を導入できますが、サーブレット コンテナーは、機能に関してはまったく役に立ちません。実際には、機能とうまく統合されない可能性が高くなります。コンテナによって提供されます。典型的な例は、独自の JSF 2.0 ライブラリーを持ち込むことです。

コンテナで実装を使用する本当の利点は、コンテナが複数のホスト間のクラスタリングを支援し、JDBC 接続プールなどを提供できることです。

そのため、たとえば Hibernate を自分で含めるときはより注意する必要があり、独自の展開内ですべての構成を行う必要がありますが、それは可能です。

于 2012-12-25T13:04:27.487 に答える
3

「すべての Java EE 6 サーバーに含まれているのに、JPA 2 でベア サーブレット コンテナーを使用する理由は何ですか?」というまったく逆の質問をすることもできます。

基本的には、次のいずれかに要約されます。

  • 軽量のコンテナーと重いアプリケーション (Spring の方法) を使用し、
  • 軽量のアプリケーションと重いコンテナー (Java EE 6 方式) を使用します。

何年にもわたる進化の後、Spring と Java EE 6 を使用してアプリケーションを構築するモデルは収束し、クラスを見ただけでは、それが Spring か CDI Bean かを実際には判断できない場合があります。したがって、実際の違いは主に構成にあります。

于 2012-12-25T13:05:28.840 に答える
2

アプリケーション サーバーは一連のサービスを「そのまま」提供するため、提供されるサービスが必要なものであれば、より簡単に使用できます。アプリケーションをパッケージ化してデプロイするだけで、機能します。さらに、ほとんどのテクノロジはアプリケーション サーバーによってインスタンス化されるため、多くのクラスローダーの問題を回避できます。

アプリケーション サーバーの問題は、アプリケーション サーバーが提供するものと互換性のない特定のフレームワークやサービスなどの特定のバージョンを選択する必要がある場合があることです (実際にはかなり頻繁に)。そのような場合、通常はアプリケーション サーバーをいじる必要があり、場合によっては、実行したいことをアプリケーション サーバーでは実行できないことさえあります。

たとえば、Weblogic 10.x は Java EE 5 アプリケーション サーバーであるため、デフォルトで JSF 1.2 と JPA 1 が提供されます。より新しいものを使用する場合は、追加のライブラリ (JSF 2.0) を手動で展開するか、パッチを適用する必要があります。サーバー (JPA 2.0)。

別の例: Glassfish 3.1 では、Glassfish EL の代わりに Tomcat EL を使用できませんでした。Tomcat EL は varargs メソッドの呼び出しをサポートしていますが、Glassfish EL はサポートしていません。

Java EE アプリケーション サーバーの柔軟性により、多くの人が Tomcat や Jetty などのスタンドアロンのサーブレット コンテナー向けに開発することを好むようになっます。アプリケーションと一緒にパッケージ化することもできます。これは開発中はより快適ですが、コンテナーごとに複数のアプリケーションをデプロイすると問題が発生する可能性があります (リソースの無駄、クラスロードの問題、クラスローダーのリークなど)。

アップデート:

SE 環境 (Tomcat など) で JPA を使用する場合と、Java EE コンテナー内で JPA を使用する場合とでは、いくつかの違いがあります。基本的:

  • インスタンスを手動で管理する必要がEntityManagerFactoryありEntityManagerます。
  • Tomcat はインジェクションを行わないため、@PersistenceContextアノテーションなどは機能しません。

一部のコンテナー (Spring など) は、これらの詳細を非表示にするように構成できるため、Java EE コンテナー内にいるかのように作業できます。

EE 環境ではなく SE 環境で実行する場合の詳細については、JPA 仕様を参照してください

別のライブラリに関しては、一般的にいくつかの小さな違いがあります。たとえば、JAX-WS では Web アプリケーションのサーブレットとリスナーを登録する必要がありますが、それ以外はすべて同じにする必要があります。通常、スタンドアロンのサーブレット コンテナ内で実行する方法については、ドキュメントを検索できます。

于 2012-12-25T15:04:34.040 に答える
0

WAS7.0用のJPA2.0機能パックがあります。これはあなたを助けるかもしれません。

于 2012-12-25T23:47:08.030 に答える