项目在tomcat中正常,但是在weblogic中找不到类。
项目是使用ssh框架开发的。spring版本是3.1.1 在tomcat7+jdk7和tomcat7+jdk8和weblogic10+jdk7正常,在weblogic 12.2.1.3.0上不正常。报找不到类,但是又不想升级spring怕各种不兼容。
首先创建weblogic.xml配置文件,内容如下这是ssh框架的,别的自己百度。
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app
xmlns="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/ejb-jar_3_0.xsdhttp://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.2/weblogic-web-app.xsd">
<container-descriptor>
<!--<prefer-web-inf-classes>true</prefer-web-inf-classes> -->
<!--解决weblogic的ClientInstanceInvocationHandler和org.apache.cxf.frontend.ClientProxy冲突 -->
<!-- 不用,有大问题 -->
<!-- <prefer-application-resources> -->
<!-- <resource-name>META-INF/services/javax.xml.ws.spi.Provider</resource-name> -->
<!-- </prefer-application-resources> -->
<prefer-application-packages>
<package-name>net.sf.cglib.*</package-name>
<package-name>javax.persistence.*</package-name>
<package-name>antlr.*</package-name>
<package-name>org.apache.commons.lang.*</package-name>
<package-name>org.apache.commons.lang3.*</package-name>
<package-name>org.apache.xerces.*</package-name>
</prefer-application-packages>
<!-- servlet-reload-check-secs的默认值也是1,每隔1秒检查servlet是否被修改并需要重新编译, 很影响性能。这里建议修改为-1,表示永不检查 -->
<!-- <servlet-reload-check-secs>-1</servlet-reload-check-secs> -->
</container-descriptor>
</weblogic-web-app>
然后新建一个空白的类导出jar放在项目的lib中即可。
package org.springframework.aop.framework;
public class AbstractAdvisingBeanPostProcessor {
}
个人推测是因为项目中可以在@Test 测试类或者其他孤岛类A中引用了不存在的类(接口)B,引用的方式可以是继承或者实现,而类A又没有在任何地方使用,所以在tomcat上使用正常。在weblogic因为会在项目启动的时候去加载所有的类。所以会找不到B(以上纯属个人猜测,如果有误欢迎指正)。