You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Weblogic 12.1.2环境下JSF集成RichFaces遇依赖问题求助

解决Weblogic 12.1.2上RichFaces 4.5.x的依赖与配置问题

看起来你之前踩了两个关键坑:用了错误版本的Atmosphere依赖,以及引入了Tomcat/JBoss专属的容器Jar(这些和Weblogic完全不兼容,只会引发冲突)。结合你的环境(Weblogic 12.1.2、JSF 2.0、Java EE 6),我给你一套手动配置的可行方案,不需要Maven:

第一步:清理现有依赖,移除冲突Jar

先把WEB-INF/lib里这些Jar删掉,它们是导致你后续ClassNotFound和容器冲突的根源:

  • catalina-comet.jar(Tomcat专属,Weblogic不需要)
  • reflections-0.9.6_jboss_errai_r2.jar(JBoss专属,Weblogic不兼容)
  • atmosphere-runtime-1.0.2.jar(版本过低,和RichFaces 4.5.x不匹配)

第二步:添加正确的RichFaces 4.5.17.Final依赖Jar

RichFaces 4.5.x(推荐用最新稳定版4.5.17.Final)需要的核心依赖如下,全部放入WEB-INF/lib:

  • richfaces-a4j-4.5.17.Final.jar
  • richfaces-core-4.5.17.Final.jar
  • richfaces-rich-4.5.17.Final.jar
  • richfaces-page-fragments-4.5.17.Final.jar
  • cssparser-0.9.18.jar
  • sac-1.3.jar
  • guava-19.0.jar(Weblogic自带的Guava版本可能过低,需要手动添加)
  • atmosphere-runtime-2.3.1.jar(这是RichFaces 4.5.x对应的正确Atmosphere版本,之前的1.x完全不兼容)
  • commons-beanutils-1.9.3.jar
  • commons-collections-3.2.2.jar
  • commons-logging-1.2.jar(覆盖Weblogic自带的旧版本commons-logging)

第三步:配置Weblogic类加载优先级(关键!)

Weblogic自带了很多Java EE库,会和你手动添加的Jar产生版本冲突。需要在WEB-INF/weblogic.xml中配置优先加载WEB-INF/lib的Jar,创建或修改该文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.7/weblogic-web-app.xsd">
    <container-descriptor>
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
        <!-- 如果你不想全局优先,也可以指定具体包优先加载,比如:
        <prefer-application-packages>
            <package-name>org.apache.commons.*</package-name>
            <package-name>com.google.common.*</package-name>
            <package-name>org.atmosphere.*</package-name>
            <package-name>org.richfaces.*</package-name>
        </prefer-application-packages>
        -->
    </container-descriptor>
    <context-root>your-app-name</context-root>
</weblogic-web-app>

第四步:配置web.xml中的RichFaces相关组件

确保你的web.xml包含以下配置,支持RichFaces的核心功能和Atmosphere:

<!-- RichFaces Bootstrap Listener -->
<listener>
    <listener-class>org.richfaces.webapp.RichFacesBootstrapListener</listener-class>
</listener>

<!-- Atmosphere Servlet (RichFaces Ajax推送需要) -->
<servlet>
    <servlet-name>AtmosphereServlet</servlet-name>
    <servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
    <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
    <servlet-name>AtmosphereServlet</servlet-name>
    <url-pattern>/atmosphere/*</url-pattern>
</servlet-mapping>

<!-- 可选:RichFaces皮肤配置 -->
<context-param>
    <param-name>org.richfaces.skin</param-name>
    <param-value>blueSky</param-value>
</context-param>
<context-param>
    <param-name>org.richfaces.enableControlSkinning</param-name>
    <param-value>true</param-value>
</context-param>

第五步:测试简单的RichFaces页面

创建一个测试页面test.xhtml,验证是否能正常运行:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:a="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich">
<h:head>
    <title>RichFaces Test</title>
</h:head>
<h:body>
    <h:form>
        <rich:panel header="RichFaces Test Panel">
            <h:outputText value="Current time: #{testBean.currentTime}" />
            <a:commandButton value="Refresh Time" action="#{testBean.refreshTime}" render="@form" />
        </rich:panel>
    </h:form>
</h:body>
</html>

对应的TestBean(放在你的源码包中):

import java.io.Serializable;
import java.util.Date;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class TestBean implements Serializable {
    private Date currentTime;

    public TestBean() {
        refreshTime();
    }

    public void refreshTime() {
        this.currentTime = new Date();
    }

    public Date getCurrentTime() {
        return currentTime;
    }
}

关键注意事项

  • 不要引入任何Tomcat/JBoss专属的Jar包,Weblogic有自己的容器实现,这些Jar只会带来冲突。
  • Atmosphere版本必须匹配RichFaces 4.5.x,官方指定的是2.3.x系列,不要用1.x版本。
  • Weblogic的类加载配置是核心,否则容器自带的旧版本库会覆盖你添加的Jar,导致各种奇怪的错误。

内容的提问来源于stack exchange,提问作者hagrawal7777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:53:31