2012-11-20 58 views
1

托管bean的JSF加载机制存在一个错误,注释的注释为@ManagedBean。当通过mvn码头运行应用程序时,该机制未被激活:运行。这个bug在这里报道:https://bugs.eclipse.org/bugs/show_bug.cgi?id=288243如何在Jetty上处理JSF注释处理错误?

这是一个非常讨厌的事情,因为码头:运行有很大的优势在调试时:

  • 速度快
  • 它与JSF文件工作直接从工作区,无需使用FileSync插件

但是,不支持注释需要降级到XML配置。

这个bug是否有任何工作?

+0

但这是一个奇怪的错误。任何想法,如果它固定在更新版本的jsf? –

回答

1

源:你在你的问题中提供的链接,阅读托马日Lipinsi评论

嗨,我发现这个问题的简单的解决方法。其实我没有 使用Jetty,但是Tomcat和Sysdeo Tomcat启动器却行为与 相同。 JSF2在两个地方寻找注释类: - WEB-INF/classes - 如果应用程序没有打包到.war中,则该目录不存在 - 类路径jar(WEB-INF/lib) - 类似于上述I试图覆盖默认的com.sun.faces.spi.AnnotationProvider到我自己,所以我可以为他提供我的类的列表(请参阅此类的JavaDoc)。 当我试图做到这一点,然后我想到一个想法,我可以 只是简单地把我的压缩类放入WEB-INF/classes目录。将 添加到pom.xml中解决了这个问题:
src/main/webapp/WEB-INF/classes 缺点是现在我已经编译了源代码中的类 dir,但最重要的是它的工作原理。

建议您阅读那里的所有评论。

+0

哦,是的,你说得对,它似乎工作。我的头脑一定是过滤了这种'淘气'的解决方案,但是将版本控制的src目录编译为dir ...好吧...它会伤害 –

+0

@lechlukasz,是的,但它仍然会更好,然后编写xml配置;) –

1

为了避免src和类之间的搭配,你可以在你的Maven的POM设置一些这样的:

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

</build> 

而且在码头的Maven的插件的配置,你可以试试这个:
编辑:码头的使用的版本是6.1.26,如果标签“资源”不工作的尝试“resourcesAsCSV”,而不是

**注:webdefault.xml是设置需要疏通文件,而一个init-PARAM喷ty正在运行,参数是:

<init-param> 
    <param-name>useFileMappedBuffer</param-name> 
    <param-value>false</param-value> 
</init-param>