加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

jsf – 无法将PrimeFaces添加为EAR的库

发布时间:2020-12-15 04:15:04 所属栏目:Java 来源:网络整理
导读:我想在我的 Java EE 6(Jboss AS 7.1.1Final)应用程序中使用PrimeFaces,具有以下结构: EAR|- lib/| |- primefaces-4.0.jar||- ejb-module.jar|- webbapp1.war|- webapp2.war 但是,在部署到JBoss AS 7时,我遇到了几个例外,例如: java.lang.LinkageError: Fai
我想在我的 Java EE 6(Jboss AS 7.1.1Final)应用程序中使用PrimeFaces,具有以下结构:

EAR
|- lib/
|    |- primefaces-4.0.jar
|
|- ejb-module.jar
|- webbapp1.war
|- webapp2.war

但是,在部署到JBoss AS 7时,我遇到了几个例外,例如:

java.lang.LinkageError: Failed to link org/primefaces/context/PrimeFacesContextFactory

(请参阅完整堆栈跟踪here on PasteBin)

对于EAR的pom.xml,我正在使用PrimeFaces的Maven依赖:

<dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>4.0</version>
    <type>jar</type>
</dependency>

但是,当我将依赖项放入一个WAR的pom.xml时,它可以工作,但我想在多个WAR之间共享primefaces库.

我已经google了很多但没有找到任何解决方案.谢谢你的任何建议.

解决方法

你不能. Webapp库不属于EAR / lib,但属于WAR / WEB-INF / lib. EAR / lib从未被用作EAR所有WAR项目的“共享库”.它仅适用于EAR的所有EJB项目(业务服务).

您正面临的PrimeFaces特定类上的LinkageError是由于(默认的)特定于webapp的库(如JSF API / impl)不可用于EAR / lib使用的类加载器.这会导致EAR / lib中与WAR / WEB-INF / lib中具有(虚拟)依赖关系的所有库都因类加载错误(如LinkageError)而失败.

如果你真的需要一个所有WAR项目的“共享库”,那么最好的办法是将库放在Java EE容器本身中(就像默认情况下已经为JSF API / impl库完成的那样).在JBoss的情况下,这被称为“模块”.但是我不建议这样做,因为这使得webapp不能在容器之间移植,而没有通过serveradmin专门配置容器.只需为每个webapp提供一组自己的webapp库.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读