原文地址:http://chenjc-it.iteye.com/blog/1626014
1. weblogic自带了很多jar包 当工程中的jar和weblogic自带jar版本不一致时 往往会出现错误。
解决方案:
方案一:通过weblogic的配置,优先加载应用的jar包
(1)为了解决在weblogic中jar包冲突的问题 你可以在WEB-INF下创建一个weblogic.xml。
- <?xml version="1.0"?>
- <weblogic-web-app
- xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
- <container-descriptor>
- <!-- 优先加载web工程中的jar包,默认为false-->
- <prefer-web-inf-classes>true</prefer-web-inf-classes>
- </container-descriptor>
- </weblogic-web-app>
(2)重启weblogic。
方案二:通过修改启动脚本来优先加载某些jar包
(1)将冲突的JAR包拷贝到${DOMAIN_HOME}/lib目录下。
(2)${DOMAIN_HOME}/bin下找到startWeblogic.sh文件用文本编辑器将其打开,并在里面加入如下内容:
- export first_classpath=${DOMAIN_HOME}/lib/xxxx.jar
- SAVE_CLASSPATH="${first_classpath}:${CLASSPATH}"
方案三:替换weblogic.jar里面对应的目录
(1)删除C:\bea\weblogic10\server\lib\weblogic.jar中的冲突的文件夹。
(2)copy 冲突的XXX.jar到C:\bea\weblogic10\server\lib。
(3)重启weblogic。
2.weblogic解析web.xml时不支持通配符
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- classpath*:/applicationContext*.xml
- </param-value>
- </context-param>
修改为:
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- classpath*:applicationContext.xml,applicationContext_service.xml,applicationContext-action.xml
- </param-value>
- </context-param>
注:我自己的项目下web.xml用的web-app_2_5.xsd,不支持上面的classpath写法(其它版本的没试过),而应该这样写:
classpath:
applicationContext.xml,classpath:applicationContext_service.xml.xml,classpath:applicationContext-action.xml
3.spring配置JNDI数据源
如果开发是在Tomcat中进行的,部署是在weblogic上,都配置了JNDI数据源,两个J2EE容器对JNDI的名称要求不一样,怎么统一起来呢?可以通过在spring文件中将数据源修改以下:
- <jee:jndi-lookup id="dataSource" jndi-name="jdbc/user" />,