在Glassfish中部署JSF应用程序时出错
我曾经在Glassfish服务器上部署过JSF+Primefaces应用程序,没有任何问题。最近我升级了我的NetBeans版本。在那之后,我对大多数应用程序都没有任何问题。但当我尝试进行部署时,其中一个失败,错误消息如下: 部署期间出错:加载应用程序时出现异常: java.lang.IllegalStateException:ContainerBase.addChild:start: org.apache.catalina.LifecycleeException:java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: java.util.concurrent.ExecutionException: com.sun.faces.config.ConfigurationException:无法分析文档 'jar:file:/opt/glassfish3/glassfish/domains/domain1/applications/[应用程序名称]/WEB-INF/lib/javax.faces.jar/META-INF/mojarra_ext.taglib.xml': 无效的有关详细信息,请参阅server.log 看起来项目一切正常(清理和构建良好),但错误不断出现。这就是我正在使用的环境:在Glassfish中部署JSF应用程序时出错,jsf,netbeans,glassfish,Jsf,Netbeans,Glassfish,我曾经在Glassfish服务器上部署过JSF+Primefaces应用程序,没有任何问题。最近我升级了我的NetBeans版本。在那之后,我对大多数应用程序都没有任何问题。但当我尝试进行部署时,其中一个失败,错误消息如下: 部署期间出错:加载应用程序时出现异常: java.lang.IllegalStateException:ContainerBase.addChild:start: org.apache.catalina.LifecycleeException:java.lang.Runti
- NetBeans 7.3.1
- JSF2.2(莫哈拉)
- GlassFish开源版本3.1.1(构建12)
/WEB-INF/lib
中附带了JSF2.2和webapp,而不是升级GlassFish本身。由于GlassFish3本身附带了一个JSF2.1实现,您需要指示它不要加载它,以避免版本冲突。你没有说你在做什么,所以我想这就是你问题的全部原因
Glassfish本身已经附带了JSF绑定,默认情况下,JSF绑定的类加载优先级高于webapp中绑定的类加载优先级。您基本上需要告诉Glassfish使用webapp捆绑的JSF
为了实现这一点,编辑/WEB-INF/glassfish WEB.xml
,添加以下两行
如果文件不存在,请创建它,您可以找到一个示例xml文件。然后将上面的两行添加到
标记中
GlassFish随后将禁止加载自己的捆绑JSF,并依赖webapp捆绑JSF
或者,如果您对Glassfish拥有完全的管理控制权,您还可以将
javax.faces.jar
文件从JSF 2.2复制到/Glassfish/modules
目录中,从而替换旧文件,为了将其从JSF 2.1升级到JSF 2.2,以便应用于所有Web应用程序。AFAIK JSF 2.2应用程序部署在GlassFish v4上,不确定它们是否可以部署在GlassFish v3上。x@Luiggi:他们可以。Servlet 3.0是最低要求。GF3是Servlet 3.0.Luiggi Mendoza,@BalusC,谢谢你的回答。最后,我解决了将JSF降级到2.1.25的问题,因为我不需要JSF2.2中的任何新特性。通过您的回答,您间接地解决了我遇到的另一个问题,那就是JSF2.1在Glassfish 4中表现得非常糟糕—这些似乎是版本的部署问题。我还需要学习很多关于部署的知识。再次感谢!请原谅我使用了这个线程,我也有同样的问题@BalusC它应该在glassfish-web.xml中的什么位置?我不能让它工作