Weblogic部署CAS3.5问题解决方案
- - ITeye博客webLogic版本:10.3.6.0. cas服务端版本:3.5.2.1. 部署一套SSO环境,选用CAS最新版做为服务端,在开发阶段选用Tomcat6做为应用容器未出现任何问题,业务功能整合完毕后准备将CAS服务端移植到weblogic环境下,然后问题出现了. 在整个部署过程中,主要遇到两个问题.
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
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启动类 * 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文件。
<!-- <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包形式进行部署。