从安装到跑通第一个Demo:我的WebLogic 12c/14c避坑实录(Windows环境)

发布时间:2026/6/9 3:53:52

从安装到跑通第一个Demo:我的WebLogic 12c/14c避坑实录(Windows环境) 从安装到跑通第一个Demo我的WebLogic 12c/14c避坑实录Windows环境第一次在企业级项目中接触WebLogic时那种既兴奋又忐忑的心情至今记忆犹新。作为Oracle旗下的重量级Java EE应用服务器WebLogic在金融、电信等行业占据着不可替代的地位但它的安装配置过程却远没有Spring Boot那样的开箱即用体验。本文将分享我在Windows环境下从零开始部署WebLogic 12c/14c的全过程重点解析那些官方文档没有明确提示、却能让新手开发者抓狂的典型问题。1. 环境准备那些容易被忽视的前置条件1.1 JDK版本的选择陷阱WebLogic对JDK版本的兼容性要求严格到近乎苛刻。我最初随手安装了最新的JDK 17结果在安装向导刚开始就遭遇了不支持的JDK版本错误。经过查阅文档才发现WebLogic 12c (12.1.3) 最高支持JDK 8WebLogic 14c (14.1.1) 支持JDK 8和JDK 11推荐组合方案WebLogic版本推荐JDK版本下载来源12.1.3JDK 8u281Oracle官网或OpenJDK发行版14.1.1JDK 11.0.12AdoptOpenJDK或Amazon Corretto提示安装前务必执行java -version确认当前JDK版本避免因系统存在多个JDK导致的环境混乱。1.2 安装包的获取与验证官方下载需要Oracle账户且流程复杂。我推荐以下两种更便捷的方式通过Oracle eDelivery访问edelivery.oracle.com搜索WebLogic Server选择对应版本下载包含fmw_12.1.3.0.0_wls.jar或fmw_14.1.1.0.0_wls.jar的安装包使用Docker先行体验docker pull store/oracle/weblogic:12.2.1.3 docker run -d -p 7001:7001 --name wls12c store/oracle/weblogic:12.2.1.3安装包下载完成后务必校验SHA256值避免因网络传输导致的文件损坏。2. 安装过程中的死亡陷阱2.1 路径中的隐藏杀手执行安装命令时java -jar fmw_12.1.3.0.0_wls.jar我遇到了第一个坑——安装路径包含中文。错误提示晦涩难懂The installer cannot proceed because the selected Oracle Home contains non-ASCII characters.解决方案使用全英文路径如C:\Oracle\Middleware路径中不要有空格避免使用Program Files最好不超过3层目录深度2.2 安装类型的选择策略在安装类型选择界面新手常会困惑于三个选项典型安装包含管理服务器、示例等适合学习定制安装可选择性安装组件推荐生产环境精简安装仅核心功能适合资源受限环境我的建议开发环境选择典型安装确保所有组件完整生产环境务必选择定制安装移除不需要的示例应用3. 配置向导中的关键决策点3.1 节点管理器配置的玄机配置向导中的节点管理器选项让许多新手困惑。简单来说节点管理器相当于WebLogic实例的看门狗开发环境可以跳过选择无生产环境建议配置可实现自动重启崩溃的服务远程管理多个服务器实例配置示例节点管理器类型Per Domain 监听地址localhost 监听端口55563.2 域创建的最佳实践创建域时以下几个设置需要特别注意域位置建议与Oracle Home分离便于后续升级管理员账户避免使用默认的weblogic/welcome1域模式开发模式自动部署、快速启动生产模式严格安全检查推荐的安全配置# 在domain.properties中设置 admin.usernamemyadmin admin.passwordComplexPwd123 start.modedev4. 验证与第一个Demo部署4.1 服务启动的排错指南启动管理服务器时常见的两个问题问题1端口冲突Error: Port 7001 is already in use解决方案netstat -ano | findstr 7001 taskkill /PID [占用进程ID] /F问题2内存不足java.lang.OutOfMemoryError: PermGen space修改startWebLogic.cmdset MEM_ARGS-Xms1024m -Xmx2048m -XX:MaxPermSize512m4.2 部署第一个War包的实战以简单的HelloWorld应用为例打包应用jar -cvf hello.war index.jsp WEB-INF/通过控制台部署访问http://localhost:7001/console导航至部署→安装选择war文件选择作为应用程序安装验证访问curl http://localhost:7001/hello/遇到部署失败时检查DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log中的错误信息。5. 性能调优与日常维护5.1 JVM参数优化配置生产环境推荐配置修改setDomainEnv.cmdset MEM_ARGS-Xms4g -Xmx4g -XX:MetaspaceSize512m -XX:MaxMetaspaceSize1g set JAVA_OPTIONS%JAVA_OPTIONS% -XX:UseG1GC -XX:MaxGCPauseMillis2005.2 日志管理技巧关键日志文件位置域日志DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log访问日志DOMAIN_HOME/servers/AdminServer/logs/access.log节点管理器日志DOMAIN_HOME/nodemanager/nodemanager.log推荐日志轮转配置log-file file-namelogs/AdminServer.log/file-name rotation-typebyTime/rotation-type file-time-span24/file-time-span number-of-files-limitedtrue/number-of-files-limited file-count10/file-count /log-file6. 开发环境高效工作流6.1 热部署技巧传统部署方式需要重启服务开发效率低下。推荐以下替代方案自动部署目录mkdir DOMAIN_HOME/autodeploy cp hello.war DOMAIN_HOME/autodeploy/使用weblogic.Deployer工具java weblogic.Deployer -adminurl t3://localhost:7001 -username myadmin -password ComplexPwd123 -name hello -source hello.war -redeploy6.2 IDE集成指南在Eclipse中配置WebLogic服务器安装Oracle Enterprise Pack for Eclipse新建服务器适配器选择Oracle→WebLogic 12c配置域目录指向你的域位置设置调试端口默认8453IntelliJ IDEA配置更简单在Run/Debug Configurations中添加WebLogic Server指定域路径和启动脚本位置启用Update classes and resources on frame deactivation7. 生产环境注意事项7.1 安全加固清单必须修改的默认配置修改控制台端口非7001禁用T3协议匿名访问启用管理通道Administration Port配置SSL证书关键安全配置示例security-configuration enforce-valid-basic-auth-credentialstrue/enforce-valid-basic-auth-credentials allow-unencrypted-null-cipherfalse/allow-unencrypted-null-cipher /security-configuration7.2 高可用配置要点典型集群配置步骤创建集群环境→集群→新建添加托管服务器至少两个实例配置会话复制cluster multicast-address239.192.0.1/multicast-address multicast-port7001/multicast-port replication-typeasync/replication-type /cluster配置负载均衡器如Apache HTTPD8. 监控与性能分析8.1 关键指标监控使用WLST脚本获取性能数据connect(myadmin,ComplexPwd123,t3://localhost:7001) serverRuntime() cd(JVMRuntime/AdminServer) heap cmo.getHeapSizeCurrent() print Current heap: str(heap/1024/1024)MB推荐监控指标JVM堆内存使用率活动会话数JDBC连接池等待数执行队列待处理请求8.2 线程转储分析获取线程转储jps -l # 获取WebLogic进程ID jstack -l pid thread_dump.txt分析工具推荐TDAThread Dump AnalyzerVisualVM带线程分析插件Eclipse Memory AnalyzerMAT9. 常见问题速查手册9.1 启动类问题症状服务启动后立即退出检查查看DOMAIN_HOME/servers/AdminServer/logs/AdminServer.out确认JDK版本兼容性检查config.xml是否有语法错误9.2 部署失败排查典型错误weblogic.application.ModuleException排查步骤检查war包完整性jar -tvf hello.war查看应用特定日志DOMAIN_HOME/servers/AdminServer/logs/hello.log验证weblogic.xml配置container-descriptor prefer-web-inf-classestrue/prefer-web-inf-classes /container-descriptor10. 进阶资源推荐10.1 官方文档精要必读文档《WebLogic Server Administration Console Online Help》《Developing Applications for Oracle WebLogic Server》《Performance and Tuning for Oracle WebLogic Server》快速访问方式# 本地文档安装后可用 start chrome http://localhost:7001/console-help10.2 社区资源优质技术博客Oracle WebLogic Team BlogMiddleware MagicWebLogic Tips Tricks实用工具集合WLST Script Generator自动化管理脚本生成WebLogic Maven Plugin集成部署到构建流程Jenkins WebLogic Deploy PluginCI/CD集成在最近的一个金融项目中我们团队花了三天时间才解决了一个诡异的类加载问题——根本原因是WebLogic和应用的SLF4J版本冲突。这个经历让我深刻体会到掌握WebLogic的类加载机制特别是APP-INF/lib和LIB-INF/lib的区别和学会分析PreferWebInfClasses参数的重要性。

相关新闻