1

アノテーション@ManagedBeanでアノテーションが付けられたマネージド Bean の JSF 読み込みメカニズムにバグがあります。mvn jetty:runを介してアプリを実行すると、メカニズムはアクティブになりません。バグはここで報告されています: https://bugs.eclipse.org/bugs/show_bug.cgi?id=288243

jetty:run はデバッグ時に大きな利点があるため、これは非常に厄介なことです。

  • それは速いです
  • FileSyncプラグインを使用する必要なく、ワークスペースからjsfファイルを直接操作します

ただし、アノテーションをサポートしない場合は、XML 構成にダウングレードする必要があります。

このバグの回避策はありますか?

4

2 に答える 2

1

source : 質問で提供したリンク。 Tomaz Lipinsi のコメントを読んでください。

こんにちは、この問題の簡単な回避策を見つけました。実際、私は Jetty を使用していませんが、Tomcat と Sysdeo Tomcat Launcher を使用していますが、動作は同じです。JSF2 は 2 つの場所で注釈付きのクラスを探しています: - WEB-INF/classes - アプリが .war にパッケージ化されていない場合、このディレクトリは存在しません - クラスパス jar (WEB-INF/lib) - 上記と同様にデフォルトの com.sun.faces.spi.AnnotationProvider を自分のものにオーバーライドしようとしたので、彼に私のクラスのリストを提供できました (このクラスについては JavaDoc を参照してください)。これをやろうとしているときに、コンパイルしたクラスを WEB-INF/classes dir に置くだけでよいという考えにたどり着きました。これを pom.xml に追加すると問題が解決しました:
src/main/webapp/WEB-INF/classes 欠点は、ソースディレクトリにクラスをコンパイルしたことですが、最も重要なのはそれが機能することです。

そこにあるすべてのコメントを読むことをお勧めします。

于 2012-11-20T15:05:41.210 に答える
1

src とクラスの混在を避けるために、Maven の POM に次のように設定できます。

<build>
    <finalName>my-project</finalName>
    <directory>target</directory>
    <outputDirectory>${basedir}/target/main/webapp/WEB-INF/classes</outputDirectory>
 ....

</build>

そして、jetty の maven-plugin の構成で、これを試すことができます:
編集: 使用される Jetty のバージョンは 6.1.26です。タグ「resources」が機能しない場合は、代わりに「resourcesAsCSV」を試してください。

<configuration>
    ...
  <webAppConfig>
     <defaultsDescriptor>${basedir}/src/main/webapp/WEB-NF/webdefault.xml</defaultsDescriptor>
     <baseResource implementation="org.mortbay.resource.ResourceCollection">
          <resources>${basedir}/target/main/webapp,${basedir}/src/main/webapp</resources>
     </baseResource>
  </webAppConfig>
    ...
</configuration>

**注: webdefault.xml は、jetty の実行中にファイルのブロックを解除するために必要な init-param を設定するためのものです。パラメーターは次のとおりです。

<init-param>
  <param-name>useFileMappedBuffer</param-name>
  <param-value>false</param-value>
</init-param> 
于 2013-05-16T20:30:07.057 に答える