weblogic创建数据源失败
解决:检查各项配置:ip,port,数据库名,账号,密码,驱动类型,防火墙权限
NoSuchMethodError: xxxxx、NoClassDefFoundError:xxxx、NoSuchFieldError: xxxxx
eg:java.lang.NoSuchMethodError:javax.persistence.Table.indexes()[Ljavax/persistence/Index;
解决:基本断定为包冲突导致,指定war包内的类优先加载
在WEB-INF目录下添加weblogic.xml
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
<container-descriptor>
<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
<!-- 优先加载 web-inf 中的类
<prefer-web-inf-classes>true</prefer-web-inf-classes> -->
<!-- 优先加载 web-inf 中部分类 -->
<prefer-application-packages>
<package-name>org.apache.commons.*</package-name>
<package-name>org.hibernate.jpa.internal.*</package-name>
<package-name>javax.persistence.*</package-name>
<package-name>com.fasterxml.jackson.*</package-name>
</prefer-application-packages>
</container-descriptor>
</weblogic-web-app>
方法二:
用javax.persistence_2.0.0.jar替换weblogic本地jar包(modules/java.persistence.*.jar);
?如果weblogic为10.x,可能为servlet版本导致的问题,项目使用了servlet的特性,需要使用weblogic12.x及以上的版本
后台无端端 NullPointException:xxx
解决:可能为浏览器缓存导致,先清空浏览器缓存
java.lang.IllegalStateException: The async-support is disabled on this request: weblogic.servlet.internal.ServletRequest
解决:将web.xml中所有的async-supported属性都删除了
Error create bean xxxx
may:可能为配置文件使用通配符问题(weblogic环境,配置文件无法用*号匹配);可能为数据源不正确
解决:在weblogic中,配置文件无法用*号匹配。项目中涉及到使用通配符加载的都需要明确指定!
Error : oracle/jdbc/driver xxxxx
解决:驱动包版本问题:不使用ojdbc14,应该使用ojdbc6
启动报错 2.4
解决:修改web.xml版本,为2.5
could not extract resultSet
may:1.项目spring-ds.xml数据库方言 2.数据表结构不正确
解决:检查sql
String index out of range: 21553
解决:出现问题环境为:Weblogic12c
该问题较诡异,未发现其具体的原因,
已知可行方案,即将web.xml中的标签修改如下:(version3.0 -> 2.4)
Weblogic开启debug模式(debugFlag=true)导致异常
Caused By: java.lang.AssertionError: Encryptor.MasterSalt must be at least 16 bytes. Length is: 9 bytes.
解决:出现问题环境为:Weblogic12c
使用传统debug模式可解决:
修改opt/Oracle/Middleware/user_projects/domains/base_domain/bin/setDomainEnv.sh,
[文件顶部]添加如下内容:
DEBUG_PORT=
D
E
B
U
G
P
O
R
T
:
=
8453
J
A
V
A
O
P
T
I
O
N
S
=
"
{DEBUG_PORT:=8453} JAVA_OPTIONS="
DEBUGPORT:=8453JAVAOPTIONS="JAVA_OPTIONS -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n"
重启weblogic即可
Weblogic前台发生异常,但是看不到日志(或没有打印日志)
解决:
1、Weblogic中,使用log4j打印日志不输出,使用传统system.out.println()可以输出日志。
可能原因:项目内有多套日志实现,slf4j绑定的实现可能为logback(grep ‘Actual binding’ nohup.log),需要为该实现添加配置文件 log4j.xml/logback.xml
2、代码中大多的try{}catch(Exception e){},只catch了Exception,当发生Error错误时,无法捕获。建议将Exception修改为Throwable。
Eg:javax.servlet.ServletRequest.getServletContext()为Servlet3.0才开始支持,在Weblogic10环境中使用会报错:NoSuchMethodError。
解决:weblogic10(基于Servlet2.5) -》12(支持Servlet3)
3、slf4j包冲突问题:项目slf4j与weblogic的slf4j模块冲突。在weblogic.xml添加如下配置:
weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool JDBC Data Source-0 to allocate to applications,please increase the size of the pool and retry
解决:在weblogic控制台管理界面,修改数据源的连接池数
FileVO_$$_javassist_96 cannot be cast to javassist.util.proxy.Proxy
可能1:包冲突问题(javassist-xx.jar),可能是项目里有多个jar,也可能项目jar和weblogic自带jar冲突。
https://stackoverflow.com/questions/22481540/hibernate-exception-javassist-0-cannot-be-cast-to-javassist-util-proxy-proxy
在weblogic.xml添加一行配置
<prefer-application-packages>
<package-name>javassist</package-name>
</prefer-application-packages>
另:
查看类加载路径:
修改opt/Oracle/Middleware/user_projects/domains/base_domain/bin/setDomainEnv.sh,
[文件顶部]添加如下内容:
JAVA_OPTIONS="$JAVA_OPTIONS -verbose:class"
重启weblogic即可
https://blogs.oracle.com/luzmestre/classloading-errors-in-weblogic-server