1

私の Maven EAR プロジェクトには、2 つの WAR モジュールと 1 つの EJB モジュールがあります。EJB モジュールには FacesConverter クラスがあり、WAR モジュールの 1 つからそれを使用しようとすると、例外がスローされます。このコンバーターをアノテーション @FacesConverter("org.util.ObjectConverter") で登録し、JSF ページで使用します

javax.servlet.ServletException: 式エラー: 名前付きオブジェクト: org.util.ObjectConverter が見つかりません。

ObjectConverter が WAR モジュールにある場合、正常に動作しますが、EJB モジュールからはロードされません。

ここで何が欠けていますか?

乾杯

4

1 に答える 1

3

なぜEJBモジュールに入れるのですか?フロントエンド (読み: JSF) アーティファクトは WAR モジュールに入れる必要があります。EJB モジュールには、JSP /サーブレット、Struts2 SpringMVC、JAX-RS など、JSF 以外のフロントエンドで再利用できるビジネス サービスのみを含める必要があります。javax.faces.*コードで。

JSF は、EJB モジュール内のコンバーター (バリデーター、マネージド Bean、Facelets ファイルなどの他の JSF 関連のアーティファクトは言うまでもなく) を検索しませんが、WAR モジュール内のみを検索します。それらをWARモジュールに保持するだけです。WAR モジュールと EJB モジュールの間で共有する必要があると思われるコードはすべて、個別の Java プロジェクトにリファクタリングして、最終的に EAR モジュールの共通 JAR ファイルにする必要があります (これには、JSF 固有のアーティファクトも含まれないことに注意してください。

于 2012-11-14T20:54:14.823 に答える