在tomcat上跑的好好的项目到weblogic上问题多多,解决的原则是尽量从项目入手解决,减少修改weblogic的配置文件。
一)引入的jar包版本不对
项目部署到weblogic上优先使用的是weblogic自带的jar包,tomcat部署的项目优先使用的是项目自身的jar包。
有些jar包可以跨版本使用,有些jar包因为打包出来的时候使用jdk版本问题导致对应的jar在低版本的jdk上无法使用,有些jar因为版本变更做了重构,造成无法兼容
解决方案:
1)先确定要部署的项目的weblogic版本,找出对应weblogic版本下使用的jar是哪个版本的,对应的版本尽量向weblogic靠齐,特别是使用jax-ws发布webservice时,由于weblogic自身的优化,版本不对时很容易出现问题
2)开发项目时使用weblogic.jar
在weblogic 9.2以下的版本都可以从server/lib目录下找到weblogic.jar
welogic 10版本以上就不能使用weblogic.jar了,需要通过命令生成
cd E:\javaserver\Middleware\wlserver_10.3\server\lib\server\lib --自己server目录 java -jar E:\javaserver\Middleware\modules\com.bea.core.jarbuilder_1.7.0.0.jar
以上命令会在server/lib目录下生成wlfullclient.jar,该jar就是我们要引用的weblogic.jar
二)配置文件配置差异
1)web.xml中配置文件路径时:
使用classpath来配置文件路径,不要使用文件路径的来配置
2)web-app中servlet版本问题
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
weblogic 10 不支持servlet 3
3)命名空间的不同
使在weblogic解析jsp是如果URI是一http打头的话,他是直接上网查询的,不是读取你的注册信息
tomcat 中 <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> weblogic中 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> tomcat中 <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> weblogic中 <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c"%>
4)web.xml中配置默认拦截器的时候
<!--配置 静态资源不走springmvc --> <!-- 当springmvc 配置的url-pattern为/时,所有的请求资源都会被springmvc处理 静态资源不需要springmvc处理,写在DispatcherServlet的前面, 让 defaultServlet先拦截,这样就不会进入Spring了 需要在springmvc-context.xml中写上<mvc:default-servlet-handler /> Tomcat, Jetty, JBoss, and GlassFish 默认 Servlet的名字 - "default" Google App Engine 默认 Servlet的名字 - "_ah_default" Resin 默认 Servlet的名字 - "resin-file" WebLogic 默认 Servlet的名字 - "FileServlet" WebSphere 默认 Servlet的名字 - "SimpleFileServlet" --> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping>
三)jdk版本问题
开发时就将jdk版本协调一致,如果因为迁移环境,由低版本升级为高版本,特别是jdk1.5升级到jdk1.6的时候,问题多多,最多还是webservice上。
四)增加weblogic.xml优先使用工程jar包
<?xml version="1.0" encoding="UTF-8"?> <wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.3/weblogic-web-app.xsd"> <wls:weblogic-version>10.3.6</wls:weblogic-version> <wls:context-root>/platform</wls:context-root> <wls:container-descriptor> <!-- prefer-web-inf-classes 和prefer-application-packages 不能共存 <prefer-web-inf-classes>true</prefer-web-inf-classes> <show-archived-real-path-enabled>true</show-archived-real-path-enabled> --> <wls:prefer-application-packages> <wls:package-name>antlr.*</wls:package-name> <wls:package-name>javax.persistence.*</wls:package-name> <wls:package-name>org.apache.xerces.*</wls:package-name> <wls:package-name>org.apache.xalan.*</wls:package-name> <wls:package-name>org.apache.commons.*</wls:package-name> <wls:package-name>org.springframework.*</wls:package-name> <wls:package-name>org.hibernate.*</wls:package-name> <wls:package-name>org.stringtemplate.*</wls:package-name> <wls:package-name>org.antlr.*</wls:package-name> <wls:package-name>javax.jws.*</wls:package-name> <wls:package-name>com.sun.xml.ws.*</wls:package-name> <wls:package-name>javax.jws.*</wls:package-name> <wls:package-name>org.jvnet.jax_ws_commons.*</wls:package-name> <wls:package-name>com.bea.xbean.*</wls:package-name> <wls:package-name>com.bea.xml.*</wls:package-name> </wls:prefer-application-packages> </wls:container-descriptor> <wls:charset-params> <wls:input-charset> <wls:resource-path>/*</wls:resource-path> <wls:java-charset-name>UTF-8</wls:java-charset-name> </wls:input-charset> </wls:charset-params> </wls:weblogic-web-app>
文章评论