1

JSF (com.sun.faces 2.1.12) は、tomcat7 maven プラグイン (v2.2) を使用して実行すると、ターゲット/クラスで注釈付きのクラスを見つけることができません。

デバッグするときは、Tomcat7:run プラグインを Maven で使用してアプリケーションを実行します。tomcat7 プラグインは、起動時に webapp のクラスパスを構築するときに、ターゲット/クラスをクラス ディレクトリとして webapp クラスパスに追加し、src/main/webapp を webapp ルート ディレクトリとして構成します。これは、WEB-INF/classes にクラスがなく、com.sun.faces 注釈スキャナーが @ManagedBeans のターゲット/クラスをスキャンしないことを意味します。

META-INF/faces-config.xml を src/main/resources に追加して、注釈スキャナーをだましてターゲット/クラスをスキャンさせようとしました。MET-INF/faces-config.xml が target/classes で見つかったので、これはほとんど機能しましたが、com.sun.faces.config.ConfigManager.ProvideMetadataToAnnotationScanTask は jar に含まれていなかったためスキップしました。WEB-INF/classes をスキャンするコードを見つけるのに苦労しました。

@ManagedBeans の target/classes ディレクトリをスキャンするように com.sun.faces を説得するにはどうすればよいですか?

4

2 に答える 2

0

Maven プロジェクトで、次の内容のファイル src/main/tomcatconf/context.xml を作成します。

<?xml version='1.0' encoding='utf-8'?>
<Context>
    <Resources
        className="org.apache.naming.resources.VirtualDirContext"
        extraResourcePaths="/WEB-INF/classes=target/classes"/>
</Context>

Tomcat 7 Maven プラグインは、起動時にこのファイルを検索します。Context インターフェースの実装 org.apache.naming.resources.VirtualDirContext により、ディレクトリを特定のリソースの場所にマッピングできます。この場合、プロジェクトのクラスのディレクトリをリソース /WEB-INF/classes にマップします。

于 2014-03-07T10:19:04.143 に答える
0

どのバージョンのプラグインを使用していますか? これは通常 2.2 で修正されています ( http://tomcat.apache.org/maven-plugin-2.2/tomcat7-maven-plugin/run-mojo.html#jarScanAllDirectoriesを参照)。ありがとう

于 2014-01-16T00:32:38.083 に答える