最近因为业务需求要把项目从tomcat容器移植到weblogic,踩了很多坑,在此记录下。
1.首先weblogic不支持3.0,需要在web.xml将3.0改为2.5,注意一般有两个地方需要改。
<web-app http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
2.jar包冲突
这个只要删除冲突的无用的包就好了,记得WEB-INF文件夹下的jar包也要删除。
3.由于weblogic本来支持log4j,所以原来tomcat里用到的log4j相关配置要修改。
1)修改web.xml,注释掉log4j相关配置
<!--
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
-->
2)此外,还要增加weblogic.xml,注意配置context-root,这是请求的根路径,不然就用默认的了
<weblogic-web-app>
<context-root>/</context-root>
<container-descriptor>根路径
<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</container-descriptor>
</weblogic-web-app>
4.处理完上面两步,基本项目就可以成功部署了,但是访问一直报404,研究了很久发现是因为用了注解@WebServlet映射url,将所有有关servlet的url都改成在web.xml里配置
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/url</url-pattern>
</servlet-mapping>
5.此时,项目已经可以访问了,但是由于项目本身的设计,需要在项目部署后,拷贝文件到部署后解压得到的文件夹中,但是weblogic用war包部署的项目没有保存解压后的文件夹,这就难倒我了,还好机智的同事发现weblogic可以用文件部署,解决办法就是在服务域中解压war包,然后在页面设置项目路径就可以了,完美解决。
6.项目应该可以正常运行了吧。但是,处理请求的时候出现了内存溢出,报java.lang.OutOfMemoryError:Physical memory usage is to high。。。
需要在服务域的domains/my_domain/bin/setDomainEnv文件中修改jvm堆的大小
WLS_MEM_ARGS_32BIT="-Xms512m -Xmx1024m"
这两个值按照项目需求设置就好了
终于搞定,真的很是曲折了
本文记录了将项目从Tomcat迁移到WebLogic过程中遇到的问题及解决方案,包括:web.xml版本调整、jar包冲突处理、log4j配置调整、注解Servlet映射改为web.xml配置、文件部署策略解决文件拷贝问题以及调整WebLogic内存设置以解决内存溢出问题。

5921

被折叠的 条评论
为什么被折叠?



