您的位置:首页 > 运维架构 > Tomcat

Tomcat迁移到WebLogic 11g部署项目注意事项

2017-03-28 18:19 453 查看
最近将web项目从tomcat中迁移到weblogic中产生了很多问题,特此记录一下:

Tomcat 迁移到 WebLogic 11g部署项目注意事项

==============================

1.不要依赖容器特有类库

  现象:interface接口中使用了org.apache.catalina.tribes.util.Arrays.equals(byte[],byte[]) API,导致在weblogic中运行时报错。抛出异常,异常信息为:null.

  原因:catalina为apache tomcat项目名,即包org.apache.catalina下的API都为tomcat环境下的类库,weblogic
lib下不含有此类库,导致出现异常。

  方案:项目编译时不要依赖web容器中的类库,以便于项目可以跨web容器

 

2.在WEB-INF下增加weblogic.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE weblogic--web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic-810-web-jar.dtd">

<weblogic-web-app>

 <container-descriptor>

  <prefer-web-inf-classes>true</prefer-web-inf-classes>

 </container-descriptor>

</weblogic-web-app>

原因:上述xml文件可以使得WebLogic优先加载项目web-inf下的jar包,防止WebLogic加载自身的jar包导致版本冲突。

 

3./WEB-INF/lib需要删除xml-apis-1.0.b2.jar

现象:出现

weblogic.xml.jaxp.RegistrySAXParserFactory cannot be cast to javax.xml.parsers.SAXParserFactory

       错误
原因:weblogic使用jdk自带的javax.xml.parsers.SAXParserFactory接口来解析配置,项目中的xml-apis-x.jar中也有这个接口,根据上述的weblogic.xml中的配置,首选加载xml-apis-x中的接口,由于加载两者的classLoader不同,所以无法转换。
 
4.在web.xml中将servlet版本改为2.5
 原因:weblogic 11g不支持servlet3.0及以上的版本。只兼容servlet及以下版本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: