あなたが言及したテクノロジースタックを使用しているので、CDIも同様に使用できます。とにかく、すべてを WAR としてパッケージ化する場合、それは実行時に 1 つのモジュールにすぎません。次の構造があるとします。
--- WAR
|--- any *.xhtml files can live here (public)
|--- WEB-INF
|--- web.xml (optional)
|--- persistence.xml (optional) - declare persistence unit used from WEB-INF/classes
|--- beans.xml (optional) enable CDI annotation scanning for WEB-INF/classes
|--- faces-config.xml (optional) enable JSF annotation scanning in WEB-INF/classes
|--- *.xhtml files can live here (private - usually templates, ui:composition, etc.)
|--- classes
|--- com.example - put managed beans here, EJBs, JPA etities or just about any other *.class
|---lib
|--- jpa.jar
|--- META-INF
|--- persistence.xml - persistence unit used in this jar
|--- com.example - JPA entities can live here, gets mapped to WEB-INF/classes at runtime
|--- ejb.jar
|--- META-INF
|--- ejb-jar.xml (optional) but can declare resources here
|--- com.example - ejbs can live here, gets mapped to /WEB-INF/classes at runtime
|--- faces.jar
|--- META-INF
|--- faces-config.xml - enables scanning JSF specific annotations in this jar
|--- resources - this gets mapped to the WAR root at runtime, .xhtml can live here
|--- com.example - put your @ManagedBean s here and @EJB inject anything from ejb.jar, gets mapped to /WEB-INF/classes at runtime
|--- cdi.jar
|--- META-INF
|--- beans.xml - marks this as CDI bean archive
|--- com.example - CDI beans can live here, gets mapped to WEB-INF/classes at runtime
上記の構造では、jpa.jar、ejb.jar、faces.jar、および CDI.jar を明確に分離していますが、必要に応じて組み合わせる必要はありません。奪うべきポイント:
- WAR の
WEB-INF/lib
クラス内の任意の jar/WEB-INF/classes
が実行時にマップされる
beans.xml
CDI を有効にする
faces-config.xml
JSF アノテーションのスキャンを有効にします
ejb-jar.xml
どこでも必須ではありませんが、それを利用できます
web.xml
に住むことができますがWEB-INF/
、必須ではありません
web-fragment.xml
META-INF
内の任意の jarのフォルダーに存在できWEB-INF/lib
、マージされますweb.xml
.xhtml
JSF ファイルは、Web アプリ ルート (パブリック) 内WEB-INF/
(プライベート) 内、および内部META-INF/resources
の任意の jar 内に存在WEB-INF/lib
できます。これらのファイルはすべて、Web アプリ ルートにマップされます (つまりWEB-INF/
、jar 内にある場合、論理的に内部に配置できますMETA-INF/resource/WEB-INF
) 。
persistence.xml
内部の任意の瓶の中WEB-INF
または内部に住むことができますMETA-INF
WEB-INF/lib
それはちょうどそれをカバーする必要があります - 何か不明な点や追加できることがあれば教えてください.