Web项目在tomcat运行正常,移至weblogic后页面报错的问题

一个IPP5.1.1产品在从Tomcat迁移到WebLogic 10.3.6时遇到页面报错,主要表现为JSTL标签解析错误。问题定位为`<prefer-web-inf-classes>`参数设置。通过将antlr-2.7.6.jar复制到WebLogic服务器库路径,修改startWeblogic.sh启动配置文件以及调整`<prefer-web-inf-classes>`参数为false,成功解决了页面无法打开和工程启动问题。

万分感谢     厦门老胡http://blog.youkuaiyun.com/hdfyq/article/details/5752912   的分享,解决了困扰我半个月的难题。


特将问题记录,以备日后需要:


问题描述:IPP5.1.1(我们产品的名字)部署在weblogic10.3.6上,运行正常,但是登录后台后页面报错,报错信息如下:

javax.servlet.ServletException: weblogic.servlet.jsp.CompilationException: Failed to compile JSP /WEB-INF/jsp/frame/perspective_content.jsp
perspective_content.jsp:1:1: The validator class: "org.apache.taglibs.standard.tlv.JstlCoreTLV" has failed with the following exception: "java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory cannot be cast to javax.xml.parsers.SAXParserFactory".
<%@ page contentType="text/html; charset=utf-8"%>


问题分析:经过一步步的定位排查,确定问题是jstl标签解析错误导致(页面包含:<%@ taglib prefix="c" uri="/tags/c.tld"%>, 去掉后页面就能正常打开)。

   多次测试后发现,当weblogic.xml中的<prefer-web-inf-classes>true</prefer-web-inf-classes> 参数改为“false”时,jstl中的c标签能解析正常,但是工程又

  无法正常启动,于是进入一个矛盾地:

<prefer-web-inf-classes>参数为true,工程启动正常,但是配置了<%@ taglib prefix="c" uri="/tags/c.tld"%>的页面无法打开;

<prefer-web-inf-classes>参数为true,配置了<%@ taglib prefix="c" uri="/tags/c.tld"%>的页面能打开,但是工程无法启动(通过测试小程序发现,

因为工程无法启动,该工程下的页面是无法访问的)

  这个问题就像一个无解的结困扰着我。


问题解决:多亏了厦门老胡http://blog.youkuaiyun.com/hdfyq/article/details/5752912 的博客

   问题解决总共分了三部:

1.将工程/WEB-INF/lib/下的 antlr-2.7.6.jar  复制到weblogic下  /home/Oracle/Middleware/wlserver_10.3/server/lib  路径下;

2.修改weblogic的启动配置文件startWeblogic.sh(/home/Oracle/Middleware/user_projects/domains/base_domain/bin)

在CLASSPATH="${SAVE_CLASSPATH}" 下面加入以下内容:

PRE_CLASSPATH="${WL_HOME}/server/lib/antlr-2.7.6.jar:"
CLASSPATH="${PRE_CLASSPATH}${SAVE_CLASSPATH}"

如下图:


3.将WEB-INF/weblogic.xml中的<prefer-web-inf-classes>true</prefer-web-inf-classes>参数修改为false(若无此文件,则不需要此步骤);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值