0

0

Tomcat 启动时 WAR 文件位置与 Liferay 7.x 部署机制解析

霞舞

霞舞

发布时间:2026-03-04 12:18:02

|

174人浏览过

|

来源于php中文网

原创

Tomcat 启动时 WAR 文件位置与 Liferay 7.x 部署机制解析

本文详解在 liferay 7.x 环境下 tomcat 启动行为的特殊性:web 应用并非传统 war 部署,而是通过 osgi 容器动态加载;明确说明 war 文件可能根本不存在于文件系统中,并提供定位、更新与重部署的可靠路径。

本文详解在 liferay 7.x 环境下 tomcat 启动行为的特殊性:web 应用并非传统 war 部署,而是通过 osgi 容器动态加载;明确说明 war 文件可能根本不存在于文件系统中,并提供定位、更新与重部署的可靠路径。

在 Liferay 7.x 及更高版本中,Tomcat 已退居为底层 Servlet 容器载体,而非应用部署管理主体。Liferay 自身构建了一套基于 OSGi(Equinox 或 Felix)的模块化运行时环境,所有 Portlet、Service、Theme 等插件均以 .jar(非 .war)格式作为 OSGi Bundle 进行注册、解析与激活。这意味着:

  • 没有传统意义上的“解压 WAR 到 webapps/”过程:你找不到 webapps/portlet-folder-name.war,是因为它从未被部署为 WAR;
  • tomcat/webapps/ 下通常仅包含 Liferay 核心(如 ROOT、osgi、manager 等)和极少数兼容性适配器,你的自定义插件不会出现在此处
  • ✅ work/ 和 temp/ 目录的清理无效——OSGi Bundle 的缓存位于 liferay-home/osgi/state/、liferay-home/osgi/marketplace/ 或 liferay-home/osgi/modules/,而非 Tomcat 工作目录。

? 如何确认插件实际部署位置?

Liferay 7.x 默认将已部署插件存放于以下路径(以标准安装为例):

# Liferay Home(通常独立于 Tomcat 目录,如 /opt/liferay/data 或 $LIFERAY_HOME)
$LIFERAY_HOME/osgi/modules/          # 已安装的模块(.jar)
$LIFERAY_HOME/osgi/marketplace/      # 通过控制台上传的插件副本
$LIFERAY_HOME/osgi/war/              # (极少使用)遗留 WAR 插件适配层

⚠️ 注意:$CATALINA_BASE/webapps/ 中的 portlet-folder-name/ 目录,很可能是 Liferay 运行时动态生成的 Web Context 快照(由 OSGi Web Container 构建),并非源文件。你手动替换 WEB-INF/lib/ 中的 JAR,会被下次 Bundle 重启或容器刷新自动覆盖——这正是你观察到“旧 SDK 又回来”的根本原因。

Lexica
Lexica

一个搜索 AI 生成图片的网站,可以上传图片或prompts搜索图片。

下载

✅ 正确更新 SDK 依赖的操作流程

  1. 停止 Liferay(非仅 Tomcat)
    确保 OSGi 框架完全关闭,避免状态残留:

    $LIFERAY_HOME/tomcat-*/bin/shutdown.sh
    # 等待进程退出后再操作
  2. 更新插件工程的 build.gradle(推荐)
    在你的 Liferay Workspace 或 Module Project 中,修改依赖项:

    dependencies {
        compileOnly group: "com.example.sdk", name: "my-sdk", version: "2.3.0"
        // 替换旧版本,然后执行:
    }

    运行构建并生成新 .jar:

    ./gradlew clean build
    # 输出路径示例:modules/my-portlet/build/libs/my-portlet-1.0.0.jar
  3. 部署新 Bundle(两种权威方式)

    • 方式一:放入 deploy/ 目录(最常用)
      将生成的 .jar 复制到 $LIFERAY_HOME/deploy/,启动 Liferay 后自动检测、安装、启动:
      cp modules/my-portlet/build/libs/my-portlet-1.0.0.jar $LIFERAY_HOME/deploy/
      $LIFERAY_HOME/tomcat-*/bin/startup.sh
    • 方式二:Gogo Shell 动态卸载/重装(适合调试)
      启动后访问 http://localhost:8080/system/console/gogo,或使用 telnet:
      g! lb | grep my-portlet        # 查找 Bundle ID(如 542)
      g! stop 542                    # 停止
      g! uninstall 542                 # 卸载(彻底移除)
      g! install file:/path/to/my-portlet-1.0.0.jar  # 重新安装
      g! start 543                   # 启动新 Bundle(ID 可能变化)

? 关键注意事项总结

  • ❌ 不要直接修改 tomcat/webapps/xxx/WEB-INF/lib/ ——这是运行时快照,非源;
  • ❌ 不要依赖 tomcat/work/ 或 temp/ 清理来“刷新依赖”——OSGi 缓存独立存在;
  • ✅ 所有依赖变更必须反映在 Bundle 工程源码 + 构建产物(.jar) 中;
  • ✅ 部署路径始终以 $LIFERAY_HOME/deploy/ 为准,而非 $CATALINA_BASE/webapps/;
  • ✅ 使用 Liferay Control Panel → System Settings → OSGi → Installed Bundles 可实时查看 Bundle 状态、依赖树与导出包。

理解这一架构转变,是高效维护 Liferay 7+ 应用的前提。告别 WAR 思维,拥抱 OSGi Bundle 生命周期管理——这才是现代 Liferay 开发的正确起点。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
如何配置Tomcat环境变量
如何配置Tomcat环境变量

配置Tomcat环境变量需要在系统中添加CATALINA_HOME变量,并将Tomcat的安装路径添加到PATH变量中。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

117

2023.10.26

idea如何集成Tomcat
idea如何集成Tomcat

idea集成Tomcat的步骤:1、添加Tomcat服务器配置;2、配置项目部署;3、运行Tomcat服务器;4、访问项目;5、注意事项;6、关闭Tomcat服务器。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

172

2024.02.23

怎么查看Tomcat源代码
怎么查看Tomcat源代码

查看Tomcat源代码的步骤:1、下载Tomcat源代码;2、在IDEA中导入Tomcat源代码;3、查看源代码;4、理解Tomcat的工作原理;5、参与社区和贡献;6、注意事项;7、持续学习和更新;8、使用工具和插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

98

2024.02.23

常见的tomcat漏洞有哪些
常见的tomcat漏洞有哪些

常见的tomcat漏洞有:1、跨站脚本攻击;2、跨站请求伪造;3、目录遍历漏洞;4、缓冲区溢出漏洞;5、配置漏洞;6、第三方组件漏洞。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

169

2024.02.23

tomcat日志乱码怎么解决
tomcat日志乱码怎么解决

tomcat日志乱码的解决办法:1、修改tomcat的日志编码设置;2、检查ide的编码设置;3、检查操作系统的编码设置;4、使用过滤器处理日志;5、检查外部系统的编码设置;6、检查文件编码方式等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

157

2024.02.23

weblogic和tomcat有哪些区别
weblogic和tomcat有哪些区别

weblogic和tomcat的区别:1、功能;2、性能;3、规模;4、价格;5、安全性;6、配置和管理;7、社区支持;8、集成能力;9、升级和更新;10、可靠性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

200

2024.02.23

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

244

2024.02.23

tomcat启动闪退怎么解决
tomcat启动闪退怎么解决

tomcat启动闪退的解决办法:1、检查java环境;2、检查环境变量配置;3、检查端口被占用;4、检查配置文件编码;5、检查启动时需要的配置文件;6、检查相关文件是否丢失;7、检查防火墙和杀毒软件设置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

169

2024.02.23

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

4

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Tomcat核心原理解析
Tomcat核心原理解析

共57课时 | 7.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号