2

JSF2 をフロント エンドとして使用し、ステートレス EJB3 セッション Bean を使用してトランザクションを処理し、JPA を使用してエンティティを永続化する機能を作成することで、EJB3 と JPA について少し独学しようとしています。

理想的には、EJB アプリケーションをリモート サーバーに置き、JSF2 war ファイルを別のサーバーに置き、リモートで通信して、分散プロジェクトをシミュレートしたいと考えています。しかし、同じ JPA エンティティークラスを共有してほしい (フロントエンドで使用するためだけに他の DTO オブジェクトに変換するのは無意味に思えるため、JPA プロジェクトが独自のプロジェクト内にある場合は意味があります)

私が理解に苦しんでいるのは、さまざまなコンポーネントを最適にパッケージ化して展開する方法です。1) サーバー 1: JPA jar ファイルを含む EAR ファイルと EJB モジュールを 1 つのサーバーに配置するのが最適です。しかし、これを行う場合、persistence.xml ファイルはどこに配置する必要がありますか? jpa jar ファイルまたは ejb モジュールでしょうか?

2) サーバー 2: JSF アプリケーションを含む war ファイルと、この war の WEB-INF ライブラリ内の JPA jar ファイル。この場合、EJB インターフェースも jar ファイルに外部化して web-inf/lib? に含める必要があると思います。

または私は完全に間違った方法で考えていますか?

私がやろうとしていることを達成するためのベストプラクティスはどうあるべきかについて、何か考えをいただければ幸いです。私がすべて間違ったことをしている場合は、事前に謝罪してください...それは学習経験です!

4

1 に答える 1

0

最初の JPA オブジェクトは永続コンテキストによって管理されるため、そのオブジェクトを Web レイヤーに渡すことはお勧めしません。JAXB オブジェクトを使用して Web レイヤーに送信できます。JPA エンティティ オブジェクトを読み取って JAXB オブジェクト フィールドに設定し、同じものを返す必要があります。

pojo マッピング フレームワークよりも高速で簡単です。

于 2013-10-06T18:48:32.253 に答える