端口冲突是WebLogic在CentOS上的常见问题,主要因端口被其他进程占用或配置不当导致。以下是系统化的解决步骤:
首先需确认冲突端口及占用进程,常用命令如下:
netstat命令:sudo netstat -tulnp | grep <端口号>(如7001),显示端口的TCP/UDP监听状态及占用进程的PID和名称。ss命令:sudo ss -tulnp | grep <端口号>,功能与netstat类似,但更高效。lsof命令:sudo lsof -i :<端口号>,直接列出占用端口的进程信息(包括用户、进程ID、命令)。fuser命令:sudo fuser -v -n tcp <端口号>,显示端口的进程ID、用户及访问类型(如LISTEN)。若占用端口的进程非系统关键服务(如java进程可能是其他Java应用),可通过以下命令终止:
sudo kill -9 <PID>(-9表示强制终止)。sudo fuser -k -n tcp <端口号>(-k表示杀死进程)。sshd、httpd等系统服务)。若不想终止其他应用,需修改WebLogic的监听端口,有两种方式:
http://<服务器IP>:<原端口>/console(如http://localhost:7001/console)。环境 → 服务器 → <服务器实例>(如AdminServer)。8080),点击“保存”。$DOMAIN_HOME/config/config.xml(DOMAIN_HOME为WebLogic域目录,如/home/weblogic/user_projects/domains/base_domain)。<server>标签(对应要修改的服务器实例,如AdminServer),修改<listen-port>属性为新端口(如8080)。<server name="AdminServer">
    <listen-port>8080</listen-port>
    <listen-address>localhost</listen-address>
</server>
修改配置后,需重启服务使更改生效:
sudo ./stopWebLogic.sh(位于$DOMAIN_HOME/bin目录)。sudo ./startWebLogic.sh(同上)。若CentOS启用了防火墙(firewalld),需开放新端口:
sudo firewall-cmd --permanent --zone=public --add-port=<新端口>/tcp(如8080)。sudo firewall-cmd --reload。若SELinux处于强制模式(Enforcing),可能阻止WebLogic使用新端口,需调整:
sestatus(若显示Enforcing,则需修改)。sudo setenforce 0(重启后恢复Enforcing)。/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive,然后重启系统。sudo netstat -tulnp | grep <新端口>或curl http://localhost:<新端口>。$DOMAIN_HOME/servers/<服务器实例>/logs/<服务器实例>.log,确认无端口冲突错误。通过以上步骤,可彻底解决CentOS下WebLogic的端口冲突问题。若仍有异常,建议检查应用程序配置(如WAR包中的web.xml)是否硬编码了旧端口。