xwi*_*nus 3 jsf jboss java-ee primefaces
我想在我的Java EE 6(Jboss AS 7.1.1Final)应用程序中使用PrimeFaces,具有以下结构:
EAR
|- lib/
| |- primefaces-4.0.jar
|
|- ejb-module.jar
|- webbapp1.war
|- webapp2.war
Run Code Online (Sandbox Code Playgroud)
但是,在部署到JBoss AS 7时,我遇到了几个例外,例如:
java.lang.LinkageError: Failed to link org/primefaces/context/PrimeFacesContextFactory
Run Code Online (Sandbox Code Playgroud)
(请参阅PasteBin上的完整堆栈跟踪)
对于EAR的pom.xml,我正在使用PrimeFaces的Maven依赖:
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>4.0</version>
<type>jar</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但是,当我将依赖项放入一个WAR的pom.xml时,它可以工作,但我想在多个WAR之间共享primefaces库.
我已经google了很多但没有找到任何解决方案.谢谢你的任何建议.
你不能.Webapp库不属于EAR/lib,但属于WAR/WEB-INF/lib.对于EAR/libEAR的所有WAR项目,它从未被用作"共享库".它仅适用于EAR的所有EJB项目(业务服务).
在LinkageError因为像JSF API/IMPL(默认)特定的web应用,库不能为使用的类加载器上你面临的一个具体PrimeFaces级引起EAR/lib.这会导致EAR/lib具有(虚拟)依赖关系的所有库WAR/WEB-INF/lib失败,类加载错误就像LinkageError.
如果你真的需要一个所有WAR项目的"共享库",那么最好的办法是将库放在Java EE容器本身中(就像默认情况下已经为JSF API/impl库完成的那样).在JBoss的情况下,这被称为"模块".但是我不建议这样做,因为这使得webapp不能在容器之间移植,而没有通过serveradmin专门配置容器.只需为每个webapp提供一组自己的webapp库.
| 归档时间: |
|
| 查看次数: |
1673 次 |
| 最近记录: |