在tomcat上部署web应用,测试一切正常,迁移到weblogic上之后就出现了问题,换了生产环境的数据库。
功能是将数据写入数据库,同时还需要上传附件。
开始怀疑是数据库的问题,后来测试数据库也是正常的,可以正常读写。
于是开始怀疑weblogic ,在weblogic的日志文件中看到
<[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <af2f485f3f5f761c:33748c76:1363908d34b:-8000-0000000000000055> <1332397123373> <BEA-000000> <java.lang.NoSuchMethodError: org/apache/commons/fileupload/FileUpload.setSizeMax(I)V>
因为在tomcat上运行是正常就不可能是jar没有加载进来,只可能是与weblogic自带的jar产生了冲突。
在/bea/weblogic/modules中找到与 FileUpload相关的jar包,备份,删除。
重启weblogic,一切正常,OK!
启动的过程中可能会出现如下的异常,不用管它,应为在应用中已经加载了相应的jar包。
java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.newInstance0(Class.java:326)
at java.lang.Class.newInstance(Class.java:308)
Truncated. see log file for complete stacktrace