WebLogic在Ubuntu上的常见问题及解决方案
1. 控制台登录缓慢
现象:启动WebLogic后,访问localhost:7001/console
时页面长时间刷新,无法快速进入管理界面。
原因:JVM在Linux环境下调用随机数生成器/dev/random
时,因等待足够的熵值(系统随机性数据)导致阻塞,严重影响启动和登录速度。
解决方案:
- 推荐方法:修改WebLogic启动参数,在
setDomainEnv.sh
(位于user_projects/domains/base_domain/bin/
)中添加-Djava.security.egd=file:/dev/./urandom
,强制JVM使用/dev/urandom
(非阻塞随机数生成器),替代默认的/dev/random
。 - 备选方法:通过命令创建符号链接,将
/dev/random
指向/dev/urandom
(需谨慎操作,可能影响系统其他依赖/dev/random
的服务):mv /dev/random /dev/random.ORIG; ln -s /dev/urandom /dev/random
。
2. jar包冲突(如Spring与Hibernate的asm包冲突)
现象:部署Spring项目时,控制台报错java.lang.NoSuchMethodError
或java.lang.NoClassDefFoundError
,常见于org.objectweb.asm.ClassVisitor.visit
方法。
原因:WebLogic自带的weblogic.jar
与项目中引入的antlr-2.7.6.jar
(Spring依赖)或Hibernate的asm.jar
、asm-attrs.jar
存在类路径冲突,导致方法调用失败。
解决方案:
- 针对Spring与antlr冲突:修改域的启动脚本
startWebLogic.sh
,将项目中的antlr-2.7.6.jar
添加到CLASSPATH
前面,覆盖weblogic.jar
中的旧版本(例如:CLASSPATH="${ DOMAIN_HOME} /lib/antlr-2.7.6.jar:${ SAVE_CLASSPATH} "
)。 - 针对Spring与Hibernate的asm包冲突:移除项目中Hibernate自带的
asm.jar
、asm-attrs.jar
、cglib-2.1.3.jar
,替换为Spring提供的asm-2.2.2.jar
、asm-commons-2.2.2.jar
、asm-util-2.2.2.jar
、cglib-nodep-2.1_3.jar
(避免重复加载冲突的asm类)。
3. 端口冲突
现象:启动WebLogic时,控制台报错Address already in use
(地址已被使用),导致服务器无法启动。
原因:WebLogic默认使用的端口(如7001、7002、8001等)已被Ubuntu系统中的其他服务(如Apache、Nginx、MySQL)占用。
解决方案:
- 查找占用端口的进程:使用
sudo lsof -i :7001
(替换为冲突端口)命令,获取进程ID(PID)。 - 终止冲突进程:执行
sudo kill -9 < PID>
(谨慎操作,确认进程无重要业务依赖)。 - 修改WebLogic端口:若无法终止冲突进程,可通过
config/config.xml
(域配置文件)或管理控制台修改端口(如将Admin Server的ListenPort
从7001改为8001),重启后生效。
4. 权限不足导致无法启动或访问
现象:
- 启动WebLogic时,
startWebLogic.sh
报错Permission denied
(权限不足),无法执行脚本。 - 访问控制台时,浏览器提示
403 Forbidden
(禁止访问),无法加载页面。
原因:WebLogic安装目录或域目录的权限设置不当,导致运行WebLogic的用户(如weblogic
)无法读取或执行文件;或域用户未被授予足够的访问权限。
解决方案: - 设置正确的目录权限:将WebLogic安装目录(如
/opt/weblogic
)和域目录(如/opt/weblogic/user_projects/domains/base_domain
)的所有权赋予weblogic
用户及组,执行sudo chown -R weblogic:weblogic /opt/weblogic
;并设置适当的权限(如755用于目录、644用于文件):sudo chmod -R 755 /opt/weblogic
。 - 确保以
weblogic
用户身份启动服务:使用sudo su - weblogic
切换到weblogic
用户,再进入域目录执行./startWebLogic.sh
。
5. JDK版本不兼容
现象:启动WebLogic时,控制台报错Unsupported major.minor version
(不支持的版本),或无法找到JAVA_HOME
环境变量。
原因:Ubuntu系统安装的JDK版本与WebLogic要求的版本不匹配(如WebLogic 12c需要JDK 8及以上,而系统默认安装了JDK 7);或JAVA_HOME
未正确配置,导致WebLogic无法定位JDK。
解决方案:
- 安装兼容的JDK:使用
sudo apt install openjdk-11-jdk
(Ubuntu 20.04+)或下载Oracle JDK(如JDK 8)并解压到指定目录(如/usr/local
)。 - 配置
JAVA_HOME
环境变量:编辑/etc/profile
文件,添加export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
(根据实际JDK路径调整),并执行source /etc/profile
使配置生效。 - 验证JDK版本:运行
java -version
,确认输出的版本符合WebLogic要求。
6. 内存不足导致启动失败或性能低下
现象:
- 启动WebLogic时,控制台报错
OutOfMemoryError: Java heap space
(堆内存溢出),无法完成启动。 - 部署应用后,服务器响应缓慢,甚至出现
OutOfMemoryError: PermGen space
(永久代空间溢出,Java 8及以上为Metaspace
)。
原因:WebLogic分配的JVM内存不足,无法满足应用的内存需求(如应用占用大量堆内存或元空间)。
解决方案: - 调整JVM内存参数:编辑域的启动脚本
setDomainEnv.sh
,修改JAVA_OPTIONS
变量,增加堆内存(-Xms
初始堆、-Xmx
最大堆)和元空间(-XX:MaxMetaspaceSize
)大小(例如:JAVA_OPTIONS="-Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=512m"
,根据服务器内存调整)。 - 优化应用内存使用:检查应用是否存在内存泄漏(如未关闭的数据库连接、缓存未清理),减少不必要的对象创建,使用连接池复用资源。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: WebLogic在Ubuntu上的常见问题及解决方案
本文地址: https://pptw.com/jishu/726162.html