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

问题情境:现在有一套tomcat7下正常运行的工程,本地jdk版本是jdk1.7。现在要把这个套工程转换为weblogic工程运行在Weblogic11g上。需要注意的事项有:

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

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

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

  原因:catalinaapache 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及以下版本。

5.把项目部署到weblogic服务器的时候提示:The server does not support version 3.0 of the J2EE Web module specification

原因:weblogic11g最多支持Servlet 2.5,而现在要import的项目是3.0版本的。

解决方法:

在项目根目录下有一个.settings的文件夹,该文件夹下有一个org.eclipse.wst.common.project.facet.core.xml文件,内容如下:

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="java"/>
<fixed facet="jst.web"/>
<fixed facet="wst.jsdt.web"/>
<installed facet="java" version="1.6"/>
<installed facet="jst.web" version="3.0"/>
<installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>
复制代码

<installed facet="jst.web" version="3.0"/>

改为

<installed facet="jst.web" version="2.5"/>

即可

6.weblogic启动报:weblogic.application.ModuleException:Failed to load webapp

问题解决:

工程启动在weblogic后台打出这样的LOG:weblogic.application.ModuleException:Failed to load webapp 你部署的web项目

找了很久问题没找出来,最后发现原因是,在删除废旧代码的时候,把servlet删掉了,但是web.xml里面仍然有servlet “Axis2”的描述,导致这个描述找不到,装载失败,遇到这种没有log的情况,有可能是web.xml有问题。











  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李晓LOVE向阳

你的鼓励是我持续的不断动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值