0

同じアプリケーション内に、大まかな構造を持ついくつかのプロジェクトがあります。

    • ejb
    • 持続性
    • ウェブ

私は Maven を使用してすべての依存関係を解決し、すべてを WAR にうまくバンドルして、後で JBoss にデプロイします。

私の問題は、モデルのほとんどが ejb プロジェクトにあり、それらの Bean が (Web の) バッキング Bean ロジックで、または (Web の) JSF .xhtmls で直接呼び出される必要があることです。

スタック オーバーフローを含め、インターネットを精査し、SPRING に関する大量の例とモジュールのインポート/エクスポート方法を見つけました。うーん、使ってないからどうしたらいいのかわからない。

では、これらの Bean を別のプロジェクトからインポート/使用するにはどうすればよいですか?

どんな助けでも大歓迎です!

4

1 に答える 1

1

あなたが言及したテクノロジースタックを使用しているので、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 を明確に分離していますが、必要に応じて組み合わせる必要はありません。奪うべきポイント:

  1. WAR のWEB-INF/libクラス内の任意の jar/WEB-INF/classesが実行時にマップされる
  2. beans.xmlCDI を有効にする
  3. faces-config.xmlJSF アノテーションのスキャンを有効にします
  4. ejb-jar.xmlどこでも必須ではありませんが、それを利用できます
  5. web.xmlに住むことができますがWEB-INF/、必須ではありません
  6. web-fragment.xmlMETA-INF内の任意の jarのフォルダーに存在できWEB-INF/lib、マージされますweb.xml
  7. .xhtmlJSF ファイルは、Web アプリ ルート (パブリック) 内WEB-INF/(プライベート) 内、および内部META-INF/resourcesの任意の jar 内に存在WEB-INF/libできます。これらのファイルはすべて、Web アプリ ルートにマップされます (つまりWEB-INF/、jar 内にある場合、論理的に内部に配置できますMETA-INF/resource/WEB-INF) 。
  8. persistence.xml内部の任意の瓶の中WEB-INFまたは内部に住むことができますMETA-INFWEB-INF/lib

それはちょうどそれをカバーする必要があります - 何か不明な点や追加できることがあれば教えてください.

于 2013-08-17T00:47:16.710 に答える