webLogic版本:10.3.6.0
cas服务端版本:3.5.2.1
事件背景:
部署一套SSO环境,选用CAS最新版做为服务端,在开发阶段选用Tomcat6做为应用容器未出现任何问题,业务功能整合完毕后准备将CAS服务端移植到weblogic环境下,然后问题出现了。
问题列表:
在整个部署过程中,主要遇到两个问题
一:找不到log4j.xml文件
异常信息摘录如下:
Caused By: java.io.FileNotFoundException: class path resource [log4j.xml] cannot be resolved to absolute file path because it does not reside in the file system: zip:/home/weblogic/Oracle/Middleware/user_projects/domains/yourdomain/servers/AdminServer/tmp/_WL_user/authServer2/gksqn0/war/WEB-INF/lib/_wl_cls_gen.jar!/log4j.xml
二:jsp编译失败
异常信息摘录如下:
Caused By: javax.servlet.ServletException: weblogic.servlet.jsp.CompilationException: Failed to compile JSP /WEB-INF/view/jsp/default/ui/casLoginView.jsp casLoginView.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". <jsp:directive.include file="includes/top.jsp" /> ^-----------------------------------------------^
解决方案:
问题一:
对于第一个问题的出现,网上也是说什么的都有,反正就是找不到Log4j的文件从而初始化失败。
解决方案有两种:
1:使用目录方式进行应用的部署
如果使用WAR包部署的话,会出现这种错误,换成目录的方式进行部署就没有这个问题了。
2:改变Log4j的初始化方式
如果非得使用WAR包进行部署的话,就不能使用CAS默认的Spring方式来初始化Log4j的配置文件了,可以使用Servlet的方式将Log4j的配置文件进行初始化,我的servlet代码:
/** * 自定义LOG4J启动类 * cas打成WAR包部署到weblogic上因找不到log4j.xml文件而出错 * @author zz */ public class Log4jInit extends HttpServlet { public void init() throws ServletException { String file = getInitParameter("log4j"); System.out.println("...........log4j start"); if(null != file) { Properties ps=new Properties(); try { ps.load(getServletContext().getResourceAsStream(file)); } catch (IOException e) { e.printStackTrace(); } PropertyConfigurator.configure(ps); } } }然后配置到web.xml中,并设置优先加载。
<servlet> <servlet-name>log4jLoader</servlet-name> <servlet-class>com.zz.util.Log4jInit</servlet-class> <init-param> <param-name>log4j</param-name> <param-value>/WEB-INF/log4j.properties</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet>这里我将默认的log4j.xml转换成了log4j.properties文件。
然后将CAS默认的初始化方式进行屏蔽:修改WEB-INF/spring-configuration/log4jConfiguration.xml文件,将初始化的bean注释掉:
<!-- <bean id="log4jInitialization" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetClass" value="org.springframework.util.Log4jConfigurer"/> <property name="targetMethod" value="initLogging"/> <property name="arguments"> <list> <value>${log4j.config.location:classpath:log4j.xml}</value> <value>${log4j.refresh.interval:60000}</value> </list> </property> </bean> -->至此,针对找不到log4j配置文件的问题得以解决,为了方便以后的部署工作,我采用的是第二种解决方案,也就是WAR包形式进行部署。
问题二:
对于第二个问题,解决的时候是走了不少弯路,主要还是网上的解决方案太操蛋了。
该问题的意思是说解析jsp文件出错了,网上的解决方案基本比较统一,如:加个weblogic.xml优先加载项目JAR,删除xml-api.jar。
但经过试验发现,如果删除xml-api.jar,在启动APP的时候就会出错,提示找不到:org.w3c.dom.ElementTraversal
经过各种测试,在我的项目里,解决方案就是将项目中的xml-api.jar移到weblogic下domain的lib中,注意,是移动,而不是复制,
目录:/home/weblogic/Oracle/Middleware/user_projects/domains/yourdomain/lib。
在解决该问题时,记得时常删除缓存文件,目录:
/home/weblogic/Oracle/Middleware/user_projects/domains/yourdomain/servers/AdminServer/tmp/_WL_user/
相关推荐
Weblogic 部署项目详细步骤使用手册 Weblogic 是一种流行的 Java EE 服务器,可以部署各种类型的 Web 应用程序。本文将详细介绍如何使用 Weblogic 部署 Web 项目,旨在帮助初学者快速上手。 前提条件 在开始部署...
Weblogic 部署中的常见错误解决方法总结 在使用 Weblogic 服务器时,经常会遇到一些常见的问题和错误,本文总结了其中的一些解决方法,旨在帮助开发者快速排除错误,提高开发效率。 1. Unmarshaller failed 问题的...
### WebLogic部署项目乱码问题解决方案 #### 一、引言 在Web应用程序开发与部署过程中,字符编码问题经常导致中文或特殊字符显示为乱码。对于使用Oracle WebLogic Server作为应用服务器的企业级项目而言,确保正确...
标题"weblogic部署项目jar冲突解决"指出的核心问题是JAR包冲突。这是因为不同的应用服务器可能内置了不同版本的库,或者在类加载机制上有差异,导致原本在Tomcat上运行良好的应用在WebLogic上出现问题。以下是一些...
9. **故障排查和优化**:学习如何诊断和解决部署过程中可能遇到的问题,以及如何优化WebLogic Server的性能。 通过这份详细的部署图解,用户不仅可以了解WebLogic Server的部署流程,还能掌握各种配置和管理技巧,...
标题中的“用JBOSS CACHE做CAS集群在weblogic上部署的问题”涉及到的是一个特定的分布式缓存解决方案在不同应用服务器环境下的集成问题。CAS(Central Authentication Service)是一种开源的身份验证服务,它允许...
### WebLogic部署接口环境说明 #### 一、概述 本文档旨在详细介绍如何在WebLogic服务器环境中部署特定的应用程序,特别是针对“maximo.ear”应用的部署流程与配置要点。通过对给定描述与部分文件内容的理解,我们...
### WebLogic部署应用程序详解 #### 引言 在企业级应用开发中,Oracle WebLogic Server作为一款高性能的Java EE中间件服务器,被广泛应用于各种复杂的企业应用环境中。它提供了多种方式来部署Java应用程序,包括...
【标题】:“WebLogic部署测试WAR包” 在Java企业级应用开发中,Web服务器和应用服务器扮演着至关重要的角色。WebLogic是Oracle公司提供的一款强大、功能丰富的Java EE应用服务器,而WAR(Web ARchive)文件则是一...
WebLogic部署应用程序(图解) 在本节中,我们将详细介绍如何使用WebLogic Server管理控制台来部署J2EE应用程序。WebLogic Server提供了三种方法来部署J2EE应用程序:自动部署、使用WebLogic.Deployer、WLShell和...
本文将详细介绍这三种部署方法,并提供在部署过程中可能遇到的问题及解决方法。 #### 二、控制台部署 控制台部署是最常见的部署方式之一,适合于初学者或者手动进行的小规模部署。 1. **启动WebLogic服务**:确保...
2. **遇到的问题及解决**:实验初期可能遇到未编译JAVA文件就打包的问题,解决方法是在打包前先确保所有源代码都已正确编译。 3. **后续扩展**:可以尝试部署更复杂的Servlet与Jsp应用,探索更多高级功能,如会话...
WebLogic Server是一款由甲骨文公司提供的企业级Java应用服务器,它是基于Java EE(Java Platform, Enterprise Edition)标准的,用于构建、部署和管理企业级应用程序的重要工具。本指南将详细阐述WebLogic的部署...
WebLogic 部署手册 WebLogic 是一款功能强大、支持多种技术的 Web 应用服务器,包括 EJB、JSP、Servlet、JMS 等。部署 WebLogic 需要按照特定的步骤进行,下面是 WebLogic 部署手册的详细步骤。 安装 WebLogic 在...