1. WebLogic基础概念与企业级价值在企业级Java应用开发领域WebLogic Server长期占据着核心地位。作为Oracle旗下的旗舰级应用服务器它提供了完整的Java EE现Jakarta EE实现特别适合处理高并发、高可用的关键业务系统。我第一次接触WebLogic是在2013年一个银行系统升级项目中当时就被它稳定的表现和丰富的管理功能所折服。核心组件的理解是掌握WebLogic的基础Domain域这是WebLogic的顶级组织单元相当于一个独立的管理边界。可以把Domain想象成一个虚拟的王国里面包含各种资源和服务。实际项目中我通常按业务线划分不同Domain比如支付Domain、会员Domain等。Admin Server管理服务器每个Domain必须有一个Admin Server它是整个域的大脑。通过内置的Web管理控制台端口默认7001我们可以配置所有资源。记得有次生产事故就是通过Admin Server的实时监控快速定位到内存泄漏问题。Managed Server受管服务器真正运行业务应用的服务器实例。在电商大促时我们曾动态扩展过20个Managed Server来应对流量洪峰。与Tomcat等轻量级容器相比WebLogic的核心优势在于企业级事务管理支持分布式事务XA协议这在金融交易场景中至关重要完善的高可用机制包括会话复制、故障自动转移等细粒度的安全控制与LDAP、AD等企业目录服务深度集成可视化监控体系提供JMX、SNMP等多种监控接口2. Linux环境下的WebLogic安装实战2.1 环境准备与依赖检查在CentOS 7上安装WebLogic 12c前需要确认以下基础环境操作系统建议使用RedHat/CentOS 7.x以上版本实测CentOS 8会有兼容性问题内存至少4GB生产环境建议8GBJDK版本WebLogic 12.2.1.3需要JDK 8u191推荐Oracle JDK# 检查系统版本 cat /etc/redhat-release # 检查内存 free -h # 检查Java版本 java -version我强烈建议创建专用用户来运行WebLogic这能有效隔离权限。以下是具体操作# 创建用户组和用户 sudo groupadd weblogic sudo useradd -g weblogic -m -d /home/weblogic weblogic sudo passwd weblogic # 设置sudo权限可选 echo weblogic ALL(ALL) NOPASSWD:ALL | sudo tee /etc/sudoers.d/weblogic2.2 安装包获取与安装过程从Oracle官网下载安装包时需要注册账号注意选择正确的版本通用安装包fmw_12.2.1.3.0_wls.jar快速安装包fmw_12.2.1.3.0_wls_quick.jar上传安装包后需要设置正确的权限sudo chown weblogic:weblogic fmw_12.2.1.3.0_wls.jar chmod x fmw_12.2.1.3.0_wls.jar安装过程建议使用图形化向导需要X11转发或VNC# 切换到weblogic用户 su - weblogic # 启动安装向导 java -jar fmw_12.2.1.3.0_wls.jar安装过程中有几个关键选择点安装类型选择定制安装可以控制安装组件JDK选择使用系统已安装的JDK避免重复安装安装目录建议设为/opt/weblogic符合Linux目录规范3. Domain的创建与核心配置3.1 Domain规划原则创建Domain前需要考虑以下因素环境类型开发环境可以使用单一Domain生产环境建议按业务划分资源隔离不同Domain的JVM参数、日志目录等应该物理隔离命名规范建议采用业务线_环境的格式如payment_prod通过配置工具创建Domaincd /opt/weblogic/oracle_common/common/bin ./config.sh -modeconsole在交互式界面中有几个关键配置项选择创建新Domain模板选择Basic WebLogic Server Domain管理员账号设置生产环境建议修改默认用户名运行模式选择生产模式会启用更多安全限制3.2 目录结构解析成功创建的Domain会有如下目录结构base_domain/ ├── autodeploy/ # 自动部署目录开发模式有用 ├── bin/ # 启停脚本 ├── config/ # 核心配置 │ ├── config.xml # 主配置文件 │ ├── jdbc/ # 数据源配置 │ └── security/ # 安全相关 ├── lib/ # 共享库 ├── servers/ # 服务器实例 │ └── AdminServer/ │ ├── logs/ # 日志文件 │ └── tmp/ # 临时文件 └── startup/ # 启动临时目录config.xml是这个结构的核心它采用XML格式记录所有配置。曾经有个故障案例某次修改后忘记激活更改导致配置未生效后来通过检查pending目录发现问题。4. 管理控制台深度使用4.1 控制台登录与基础配置启动Admin Server后访问http://服务器IP:7001/console即可进入管理控制台。首次登录时建议修改默认密码安全 领域 myrealm 用户和组配置SSL环境 服务器 AdminServer 常规 启用SSL监听端口设置会话超时首选项 用户首选项控制台左侧的导航菜单分为几个关键区域域结构查看和管理整个Domain的资源部署管理应用部署支持热部署服务配置JDBC、JMS等中间件服务监控查看实时性能指标4.2 配置变更管理机制WebLogic采用独特的配置变更流程获取锁点击锁定并编辑按钮防止多人同时修改修改配置如新建数据源、调整线程池等保存更改生成pending配置不会立即生效激活更改将pending配置应用到运行环境这个机制在集群环境中尤为重要。有次在金融系统升级时我们通过分批次激活配置实现了零停机的参数调整。对于生产环境我建议每次变更后立即在servers/AdminServer/logs/AdminServer.log检查日志重要变更前备份config目录使用WLST脚本实现批量配置比界面操作更可靠5. 生产环境最佳实践5.1 安全加固措施根据多年运维经验WebLogic安全配置要点包括网络层防护修改默认端口7001改为非常用端口配置防火墙只开放必要端口启用SSL并禁用弱加密算法账户安全# 密码策略配置示例 cd /opt/weblogic/oracle_common/common/bin ./wlst.sh connect(weblogic,密码,t3://localhost:7001) edit() startEdit() cd(/SecurityConfiguration/base_domain/Realms/myrealm/PasswordPolicy/myrealm_PasswordPolicy) cmo.setMinimumPasswordLength(8) cmo.setLockoutEnabled(true) cmo.setLockoutThreshold(5) save() activate()日志审计配置日志轮转避免磁盘写满将访问日志与操作日志分离集成ELK等日志分析系统5.2 性能调优参数以下JVM参数经过多个生产环境验证# 在startWebLogic.sh中添加 JAVA_OPTIONS-server -Xms4096m -Xmx4096m -XX:MetaspaceSize256m -XX:MaxMetaspaceSize512m -XX:UseG1GC -XX:MaxGCPauseMillis200 -Djava.security.egdfile:/dev/./urandom关键组件调优建议线程池根据实际负载调整默认25个线程可能不够JDBC连接池初始值5最大值CPU核心数×10JMS队列高吞吐场景需要增加存储限制6. 常见问题排查指南6.1 启动故障处理当AdminServer无法启动时按以下步骤排查检查日志尾行tail -n 100 /opt/weblogic/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.log常见错误及解决方案端口冲突修改config.xml中的端口号内存不足调整setDomainEnv.sh中的内存参数证书过期重新生成Demo证书或导入正式证书应急启动方式# 跳过启动检查 ./startWebLogic.sh -Dweblogic.management.startupModeBYPASS6.2 控制台访问问题如果无法访问控制台可以检查防火墙状态sudo firewall-cmd --list-ports sudo firewall-cmd --add-port7001/tcp --permanent sudo firewall-cmd --reload验证服务状态netstat -tulnp | grep java ps -ef | grep weblogic重置控制台配置慎用mv /opt/weblogic/user_projects/domains/base_domain/servers/AdminServer/data/ldap/ldapfiles/DefaultAuthenticatorInit.ldift /tmp/在实际运维中我发现80%的问题都能通过日志分析解决。建议养成定期检查日志的习惯特别是Access.log和ManagedServer.log。对于复杂的集群环境可以考虑集成PrometheusGrafana实现可视化监控。