WebLogic 异常问题记录

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值