【问题标题】:How to work-a-round with JSF annotation processing bug on Jetty?如何解决 Jetty 上的 JSF 注释处理错误?
【发布时间】:2012-11-20 15:01:23
【问题描述】:

使用注释@ManagedBean 注释的托管bean 的JSF 加载机制存在错误。通过 mvn jetty:run 运行应用程序时,该机制未激活。该错误报告在这里:https://bugs.eclipse.org/bugs/show_bug.cgi?id=288243

这是一件很讨厌的事情,因为jetty:run在调试的时候有很大的优势:

  • 速度很快
  • 它直接与工作区中的 jsf 文件一起工作,无需使用 FileSync 插件

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

这个错误有什么解决办法吗?

【问题讨论】:

  • 但那是一个奇怪的错误。知道它是否在更新版本的 jsf 中得到修复?

标签: jsf maven jetty managed-bean


【解决方案1】:

来源:您在问题中提供的链接,请阅读 Tomaz Lipinsi cmets

您好,我找到了解决此问题的简单方法。其实我不 使用 Jetty 但 Tomcat 和 Sysdeo Tomcat Launcher 但它的行为 相同的。 JSF2 在两个地方寻找带注释的类: - WEB-INF/classes - 所以如果app没有打包成.war,这个目录就不存在了 - 类路径 jars (WEB-INF/lib) - 与上面类似我尝试将默认的 com.sun.faces.spi.AnnotationProvider 覆盖为我自己的,所以我 可以向他提供我的课程列表(请参阅此类的 JavaDoc)。 当我试图这样做时,我想到了一个想法,我可以 只需简单地将我编译的类放在 WEB-INF/classes 目录中。添加 这对 pom.xml 解决了问题:
src/main/webapp/WEB-INF/classes 缺点是现在我已经在源代码中编译了类 dir 但最重要的是它可以工作。

建议你阅读那里的所有 cmets。

【讨论】:

  • 哦,是的,你是对的,而且它似乎有效。我的脑子一定是过滤了这种“顽皮”的解决方案,但是将编译器放到版本控制的 src 目录中……嗯……很痛
  • @lechlukasz ,是的,但它仍然应该比编写 xml 配置更好;)
【解决方案2】:

为了避免 src 和类之间的混合,您可以在 maven 的 POM 中设置如下:

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

</build>

在码头的 maven-plugin 的配置中,你可以试试这个:
编辑:码头使用的版本是 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> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 2022-06-13
    • 2017-12-23
    • 2020-03-10
    • 2019-01-31
    • 1970-01-01
    相关资源
    最近更新 更多