转自:http://blog.youkuaiyun.com/yang_95/article/details/7386002
在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
weblogic10.3 异常:org.hibernate.hql.ast.HqlToken
weblogic10.3 中部署java应用程序时报错
org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken
解决方法:
进入weblogic的安装目录,修改setDomainEnv.sh文件中的参数PRE_CLASSPATH(红色字体)
[root@localhost bin]# cd /bea/weblogic/user_projects/domains/mydomain/bin
[root@localhost bin]# ls
nodemanager server_migration service_migration setDomainEnv.sh startManagedWebLogic.sh startWebLogic.sh stopManagedWebLogic.sh stopWebLogic.sh
[root@localhost bin]# vi setDomainEnv.sh
#!/bin/sh
PRE_CLASSPATH=/bea/user_projects/domains/mydomain/applications/appName/WEB-INF/lib/antlr-2.7.6rc1.jar:
export PRE_CLASSPATH
# WARNING: This file is created by the Configuration Wizard.
# Any changes to this script may be lost when adding extensions to this configuration.
# --- Start Functions ---
BP=100
SP=$BP