1. 项目概述为什么我们还在用Weblogic如果你在Java企业级应用开发领域摸爬滚打超过五年Weblogic这个名字对你来说可能既熟悉又陌生。熟悉是因为它曾是J2EE时代的“王者”是无数银行、电信、政府大型项目的标准配置陌生则是因为在云原生和微服务浪潮下Spring Boot、Kubernetes等轻量级方案似乎占据了所有头条。但现实是大量的存量核心业务系统尤其是金融、能源等对稳定性、事务一致性要求极高的领域Weblogic依然是不可动摇的基石。接手一个老项目维护或者为特定客户部署一套符合其技术栈要求的系统掌握Weblogic的完整部署流程依然是一项硬核且实用的技能。今天我就以一个老运维的视角带你走一遍Weblogic从下载、安装、配置到项目部署的全流程。这不是一个简单的“下一步、下一步”的安装向导我会穿插这些年踩过的坑、总结的最佳实践以及面对那些让人头疼的乱码、启动失败问题时我的排查思路。无论你是需要快速搭建一个测试环境的新手还是临危受命要去维护一套生产系统的“救火队员”这篇内容都能给你提供一份可落地的“作战地图”。2. 核心准备获取安装包与理解版本选择2.1 官方渠道与版本策略Weblogic是Oracle公司的商业产品其正版授权需要从Oracle官网获取。对于学习和测试Oracle提供了功能完整的免费版本但需要注意许可协议。直接搜索“Oracle Weblogic Download”找到官方下载页面是关键。这里你会面临第一个选择版本。目前主流的有两个大版本12c12.2.x和 14c14.1.x后统一归入Oracle Fusion Middleware版本线。对于大多数传统项目12.2.1.4.0是一个经过长期验证、极其稳定的版本社区资料和兼容性解决方案也最丰富。而14c或更新版本则包含了对最新JDK和Java EE规范的支持。我的建议是除非新项目有明确要求否则优先选择12.2.1.4.0。它的稳定性经过了无数生产环境的锤炼你遇到的大多数问题几乎都能在搜索引擎里找到答案。下载时你会看到一个巨大的安装包通常是一个.jar文件如fmw_12.2.1.4.0_wls_lite_generic.jar。这个“Lite”版本是基础服务器包对于绝大多数场景已经足够。记住Weblogic的安装包是平台通用的Generic这意味着它在Windows、Linux、Unix上的安装过程几乎一致。注意从非官方渠道下载所谓的“绿色版”、“破解版”安装包是极度危险的行为。这些包可能被植入恶意代码或存在文件缺失会导致部署后出现各种灵异问题在安全审计严格的企业环境中是绝对的红线。2.2 环境预检JDK与系统资源Weblogic是纯Java应用服务器所以它的运行完全依赖于JDK。这里有一个至关重要的版本匹配关系Weblogic 12c (12.2.1.3/12.2.1.4)官方支持 JDK 8 和 JDK 11特定版本。实测中JDK 8u202或u211等长期支持LTS版本兼容性最佳。强烈不建议使用最新的JDK 8小版本或JDK 17可能会遇到不兼容的类或启动参数问题。Weblogic 14c支持 JDK 11 及更高版本。你需要预先在服务器上安装好匹配的JDK并正确配置JAVA_HOME环境变量。检查方法是在命令行执行java -version。除了JDK还需要关注磁盘空间安装目录建议预留至少5GB空间这包括了产品二进制文件、域Domain目录以及后续的日志和部署文件。内存即使是单机测试也建议系统有至少4GB可用物理内存。Weblogic自身进程Admin Server和Managed Server在启动时就会占用数百MB到上GB的内存。临时空间安装程序在解压和配置时需要临时空间确保/tmpLinux或%TEMP%Windows有足够空间。3. 安装流程详解图形化与静默安装3.1 图形化界面安装推荐新手对于初学者或在有图形界面的测试机上图形化安装是最直观的方式。过程并不复杂但有几个关键点决定后续使用的便利性。启动安装程序打开终端或命令提示符导航到安装包所在目录执行java -jar fmw_12.2.1.4.0_wls_lite_generic.jar这会启动Oracle Universal Installer (OUI)。如果长时间没有界面弹出检查DISPLAY环境变量Linux或Java图形库是否正常。跳过更新安装向导会提示注册Oracle支持并检查更新。为了加快安装速度通常选择“跳过自动更新”。我们可以在安装完成后手动打补丁。选择安装类型这里提供“典型”和“自定义”。我强烈建议选择**“自定义”**。在典型安装中OUI会默认创建一个Weblogic域Domain但我习惯于将“产品安装”和“域创建”这两个步骤分开。分开的好处是一个干净的产品安装目录可以用于创建多个不同用途的域如开发域、测试域互不干扰。指定安装位置这是最重要的步骤之一。不要使用带有空格或中文字符的路径。在Linux下类似/opt/oracle/middleware这样的路径是标准做法在Windows下C:\Oracle\Middleware也可以。这个路径我们称之为MW_HOMEMiddleware Home。记住这个路径后续所有配置都会引用它。选择安装组件在自定义安装中确保“WebLogic Server”被选中。其他如Coherence缓存网格、示例代码等除非特定需要否则可以不选以保持环境简洁。JDK选择安装程序会自动检测系统的JAVA_HOME。请确认它指向了你预先安装好的、版本匹配的JDK目录。不要使用安装程序自带的JDK因为自带的JDK版本可能较旧或难以统一管理。完成安装后续步骤一路“下一步”即可。安装完成后不要勾选“快速启动配置向导”。我们将在下一步手动创建域以获得更精细的控制。3.2 静默安装适用于自动化与生产环境在生产环境或需要通过脚本批量部署时静默安装是唯一选择。它依赖于一个响应文件response file。你可以先通过图形化安装生成一个模板。生成响应文件模板在首次图形化安装时安装向导的最后一个界面有一个“保存响应文件”的选项。将它保存为weblogic_install.rsp。编辑响应文件用文本编辑器打开这个.rsp文件。你需要关注并修改以下几个关键参数[ENGINE] Response File Version1.0.0.0.0 [GENERIC] DECLINE_AUTO_UPDATEStrue # 拒绝自动更新 ORACLE_HOME/opt/oracle/middleware # 指定MW_HOME INSTALL_TYPECustom # 安装类型 MYORACLESUPPORT_USERNAME # 留空 MYORACLESUPPORT_PASSWORD # 留空 ...中间省略... SELECTED_DISTRIBUTIONWebLogic Server~12.2.1.4.0 # 确保选中WebLogic Server你可以删除不必要的组件行并确保路径符合你的规划。执行静默安装使用以下命令安装过程将无界面进行所有日志输出到指定文件。java -jar fmw_12.2.1.4.0_wls_lite_generic.jar -silent -responseFile /path/to/weblogic_install.rsp -invPtrLoc /path/to/oraInst.loc这里的oraInst.loc文件是指向oraInventory目录位置的文件内容通常为inventory_loc/path/to/oraInventory。静默安装成功后在命令行会看到The installation was successful.的提示。实操心得无论用哪种方式安装完成后务必检查MW_HOME目录下的wlserver文件夹是否存在。可以尝试运行MW_HOME/wlserver/server/bin/setWLSEnv.shLinux或setWLSEnv.cmdWindows来验证环境脚本是否正常。这个脚本用于设置运行Weblogic所需的所有环境变量。4. 创建与管理域Domain应用服务器的独立王国产品安装只是搭好了舞台域Domain才是你真正运行应用的“独立王国”。一个域包含一个管理服务器AdminServer、零个或多个受管服务器Managed Server、集群配置、部署的应用、安全策略等。4.1 使用配置向导Configuration Wizard创建域进入MW_HOME/wlserver/common/bin目录执行config.shLinux或config.cmdWindows启动配置向导。选择创建新域模板选择“基本WebLogic Server域”这包含了最核心的功能。配置管理员账户这里设置的是Weblogic控制台Console的管理员用户名和密码。请务必使用强密码并牢记。生产环境中这个账户的安全至关重要。我习惯将用户名设为weblogic但密码一定是复杂且唯一的。选择域模式与JDK开发模式启动速度快支持自动部署Auto-Deploy和热替换但安全性较低。仅用于本地开发。生产模式启动时会进行更严格的安全检查和优化性能更好是生产环境的唯一选择。 JDK选择系统已安装的、匹配的JDK。配置数据库可选如果你的应用需要使用Weblogic内置的JDBC数据源并且希望将域配置如数据源定义保存到数据库中称为“数据库存储”可以在这里配置。对于大多数入门和测试场景选择默认的“基于文件的存储”即可。配置服务器默认会创建一个名为AdminServer的管理服务器监听端口7001。你可以在这里修改端口但如果7001未被占用建议保留因为几乎所有文档和示例都基于此端口。 你可以选择同时创建受管服务器如ManagedServer_1和集群但对于初次创建可以先只保留AdminServer后续再通过控制台添加。指定域位置与名称为你的域指定一个独立的目录如/opt/oracle/user_projects/domains/my_domain。域目录绝对不能放在MW_HOME内部这是为了隔离方便升级和维护。域名可以取一个有意义的名字如dev_domain。创建完成后域目录下会生成startWebLogic.sh或.cmd、stopWebLogic.sh等启动停止脚本。4.2 域的启动、停止与状态检查启动域进入域目录bin文件夹执行./startWebLogic.sh。你会看到大量的日志输出到控制台。当看到类似Server started in RUNNING mode的信息时表示启动成功。首次启动生产模式域可能会提示你输入之前创建的管理员用户名和密码。访问控制台启动成功后打开浏览器访问http://服务器IP:7001/console。使用创建域时设置的管理员账号登录。Weblogic控制台是管理所有资源的核心。停止域在启动域的控制台按下CtrlC可以正常关闭。更规范的做法是在另一个终端进入域目录bin文件夹执行./stopWebLogic.sh然后根据提示输入管理员账号密码。后台运行与日志生产环境通常需要后台运行。可以使用nohup命令nohup ./startWebLogic.sh /path/to/domain.log 21 所有日志将输出到domain.log文件。域的日志文件位于domains/your_domain/servers/AdminServer/logs目录下AdminServer.log是主日志遇到问题首先查看这里。注意事项启动时如果报错“Address already in use”说明端口被占用。使用netstat -tlnp | grep 7001Linux或netstat -ano | findstr :7001Windows查找并终止占用进程或修改域的端口号通过控制台或修改config/config.xml。5. 项目部署与核心配置实战5.1 应用部署WAR包与EAR包部署是企业级应用的核心。Weblogic支持直接部署WARWeb Application Archive和EAREnterprise Application Archive包。通过控制台部署登录控制台在左侧域结构中找到“部署”。点击“安装”上传或指定你的应用包WAR/EAR在服务器上的路径。选择“将此部署安装为应用程序”下一步。在“目标选择”中选择要将应用部署到哪个或哪些服务器上例如AdminServer。完成安装后在部署列表中选中刚安装的应用点击“启动”-“为所有请求提供服务”。这是最直观的方式适合手动部署测试。自动部署仅开发模式在开发模式下你可以将WAR包直接复制到域目录下的autodeploy文件夹中例如domains/my_domain/autodeploy/。Weblogic会监控此目录并自动部署、重部署。生产环境严禁使用此方式因为缺乏版本控制和回滚机制。命令行部署weblogic.Deployer这是自动化脚本和CI/CD流水线的标准方式。命令示例如下java weblogic.Deployer -adminurl t3://localhost:7001 -username weblogic -password your_password -deploy -name MyApp -source /path/to/myapp.war -targets AdminServer这个命令通过t3协议连接管理服务器进行部署非常适合集成到脚本中。5.2 核心配置数据源与JNDI对于需要数据库访问的应用配置数据源是必须的。创建数据源在控制台“服务”-“数据源”-“新建”-“一般数据源”。设置属性给数据源起名如MyDSJNDI名通常为jdbc/MyDS这是应用代码中查找的名称。选择数据库驱动如Oracle的*Oracle‘s Driver (Thin) for Instance connections; Versions:Any。连接参数填写数据库URL、用户名、密码。URL格式例如jdbc:oracle:thin://host:port/service_name。测试配置在最后一步一定要点击“测试配置”确保能连上数据库。目标选择选择将此数据源部署到哪些服务器上。配置完成后在你的应用代码如web.xml或Spring配置中就可以通过java:comp/env/jdbc/MyDS或直接jdbc/MyDS来获取数据源连接了。5.3 性能调优入门内存与线程池对于生产环境默认配置通常需要调整。JVM内存参数修改域目录下bin/setDomainEnv.sh或.cmd文件找到USER_MEM_ARGS设置。例如export USER_MEM_ARGS-Xms4096m -Xmx4096m -XX:MaxPermSize512m-Xms和-Xmx设置堆内存初始和最大值根据服务器物理内存设置通常设为相同值以避免运行时调整开销。-XX:MaxPermSizeJDK 8或-XX:MaxMetaspaceSizeJDK 8设置元空间大小。线程池在控制台“环境”-“服务器”-点击具体服务器如AdminServer-“配置”-“调优”。可以调整“执行线程数”默认25。对于并发量高的应用可以适当增加如50-100但不要超过操作系统线程数上限。监控线程空闲率如果持续很低说明需要增加。6. 故障排查与经典问题实录6.1 启动日志乱码问题这是最常见的问题之一尤其是在Windows服务器或某些Linux终端环境下。症状是启动脚本输出的日志中中文或特殊符号显示为“”或乱码方块。根本原因操作系统、终端、Weblogic JVM三者之间的字符编码不一致。Weblogic默认使用操作系统的默认编码。解决方案永久解决修改启动参数编辑域目录下的bin/startWebLogic.shLinux或startWebLogic.cmdWindows。 在设置JAVA_OPTIONS的地方添加-Dfile.encodingUTF-8参数。例如JAVA_OPTIONS${JAVA_OPTIONS} -Dfile.encodingUTF-8 export JAVA_OPTIONSWindows.cmd文件中是set JAVA_OPTIONS%JAVA_OPTIONS% -Dfile.encodingUTF-8 这个参数强制JVM使用UTF-8编码处理所有I/O。检查终端编码确保你的SSH客户端或终端模拟器如Xshell, SecureCRT的字符编码也设置为UTF-8。检查系统Locale在Linux上运行locale命令确保LANG或LC_ALL环境变量包含UTF-8如LANGen_US.UTF-8。可以通过export LANGen_US.UTF-8临时设置或修改/etc/locale.conf文件永久设置。6.2 应用部署失败常见原因问题现象可能原因排查步骤部署时提示“无法访问归档文件”WAR/EAR包路径错误、权限不足、包已损坏。1. 检查文件路径是否正确。2. 用ls -l检查文件权限确保Weblogic进程用户有读权限。3. 尝试用jar -tf your.war命令解压测试看包是否完整。应用启动后报ClassNotFoundException或NoClassDefFoundError应用依赖的库未找到。Weblogic和应用的类加载器冲突。1. 检查WAR包的WEB-INF/lib下是否有相关jar。2. 检查是否将jar包放错了位置如直接放在域lib下。3. 对于Weblogic已提供的库如Servlet API在weblogic.xml中配置prefer-application-packages优先使用应用自带的。控制台显示应用状态为“部署失败”应用初始化过程中出错如Spring Context初始化失败。1.首要查看domains/your_domain/servers/AdminServer/logs/MyApp.log应用独立日志。2. 查看AdminServer.log尾部寻找ERROR或Exception堆栈信息。堆栈信息是定位问题的关键。6.3 内存溢出OOM问题排查生产环境长时间运行后可能会遇到java.lang.OutOfMemoryError。立即行动在启动参数中添加HeapDump参数以便下次OOM时自动生成dump文件分析。JAVA_OPTIONS${JAVA_OPTIONS} -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/path/to/dump_dir监控分析启用Weblogic自带的SNMP或JMX监控或使用jstat、jmap、jvisualvm等JDK工具监控堆内存使用情况、GC频率和耗时。常见原因内存泄漏通常是应用代码中未关闭的连接、集合类对象无限增长等。分析HeapDump文件使用Eclipse MAT或JProfiler工具查看占用内存最大的对象和引用链。堆内存设置过小根据服务器物理内存和应用压力适当增加-Xmx值。PermGen/Metaspace溢出应用部署、重部署次数过多或使用了大量动态类生成技术如CGLib。增加-XX:MaxPermSize或-XX:MaxMetaspaceSize并考虑减少不必要的重部署。6.4 连接数耗尽与线程阻塞应用变慢甚至无响应可能是数据库连接池或执行线程耗尽。诊断在Weblogic控制台“监视”-“服务器”-点击具体服务器-“监视”-“性能”查看“执行线程空闲计数”和“待处理请求”。如果空闲计数持续为0且待处理请求堆积说明线程池已满。 在数据源监控页面查看“活动连接数”是否接近“最大容量”。解决线程池适当增加“执行线程数”但更要排查应用是否有同步阻塞操作如长时间等待外部服务、数据库慢查询这些操作会占住线程不放。数据源适当增加“最大容量”但同样要排查应用是否有连接泄漏获取连接后未关闭。可以开启“连接保留测试”或“泄漏检测”功能辅助排查。踩过这些坑之后我的体会是Weblogic的稳定性是建立在正确配置和良好监控之上的。它像一台精密的机床默认设置能跑起来但要根据你加工的“工件”应用特性去调整不同的“参数”。把日志级别调到DEBUG或TRACE能帮你看到更多细节但生产环境记得调回INFO或WARNING。对于任何配置的修改在测试环境验证后再上生产这是铁律。最后备份你的域目录尤其是config文件夹在出问题时它能给你一次宝贵的“重来”机会。