如何使用POM中指定的JSF版本(而不是app server one)?

时间:2013-01-02 10:57:49

标签: jsf java-ee maven glassfish

我的应用服务器是Glassfish 3.1.1,使用的是Mojarra 2.0.3 FCS(据我所知)。我希望我的应用程序使用JSF 2.1.2。我已经找到了在我的maven构建中使用的正确工件。

现在,我如何确保从这个工件加载JSF类,而不是遵循“经典”委托给Glassfish libvrary类加载器(它将加载JSF 2.0.3并为我的omnifaces / richfaces附加组件生成ClassNotFoundException)?

1 个答案:

答案 0 :(得分:2)

通常,如何从存档中覆盖特定的Java EE工件是特定于应用程序服务器的。对于GlassFish,如果我没有弄错,你可以在WEB-INF / glassfish-web.xml中使用以下内容:

<glassfish-web-app error-url="">
    <class-loader delegate="false" />
    <property name="useBundledJsf" value="true" />
</glassfish-web-app>

还可以替换 [glassfish home] / glassfish / modules 中的jar。这正是JSF构建脚本所做的,所以应该保证它能够正常工作。

请注意,如果你从低至2.0.3的东西变为当前版本,你会发现从2个罐子到1个罐子的变化。所以在那种情况下 [glassfish home] /glassfish/domains/domain1/config/default-web.xml [glassfish home] /glassfish/lib/templates/default-web.xml 删除条目jsf-api.jar和jsf-impl.jar,并用一个javax.faces.jar替换它们。

或许更简单的选择是download最新版本的GlassFish(3.1.2.2)。