在 osgi 文件夹中复制后,Liferay 7 tomcat 中的战争在哪里爆炸

Posted

技术标签:

【中文标题】在 osgi 文件夹中复制后,Liferay 7 tomcat 中的战争在哪里爆炸【英文标题】:where is war exploded in Liferay 7 tomcat after getting copied in osgi folder 【发布时间】:2017-04-11 03:15:22 【问题描述】:

我在 liferay 7 中部署了一个 portlet,它已成功部署并可供使用。我想替换 jsp 文件,在早期版本中,我可以在 tomcat/webapps 文件夹中看到我的应用程序并快速替换它。 现在我无法在 liferay 7 中找到爆炸的战争。我只能在 osgi/war 文件夹中看到战争。 有人可以帮我吗。 提前致谢。

【问题讨论】:

Liferay IDE 团队正在为 Liferay 7.0 开发类似的功能:issues.liferay.com/browse/IDE-3743。如果您有兴趣,请为该问题投票。 【参考方案1】:

虽然我基本同意 Olaf 所写的内容,但我确实理解能够在 JSP 文件中进行更改并在开发过程中快速尝试它们的必要性。恐怕我还没有解决方案。

但是,让我回答你提出的问题:

在被复制到 osgi 文件夹后,Liferay 7 tomcat 中的战争在哪里爆炸

它不是 (至少不是应用程序服务器完成的方式)!当您在 Liferay 7 中部署 WAR 文件时,它会自动(即时)将其转换为 OSGi 包并安装在 OSGi 运行时中。这样现在 Liferay 完全负责部署插件,不需要依赖各种应用服务器。

请注意:每个捆绑包都有自己的状态文件夹。在 Liferay 中,这些位于 <LIFERAY_HOME>/osgi/state。如果您知道捆绑 ID,您可以轻松找到它。可能(我没有检查过)您会在那里找到一些 JSP 文件。我写这篇文章的原因是警告你(如果你自己想出来的话)永远不要手动修改包的状态文件夹。这样做可能会破坏整个环境。在更糟糕的情况下,您可能必须在干净的环境中重新部署所有内容。

【讨论】:

【参考方案2】:

你不应该依赖这样的行为。在以前的版本中,应用服务器的任务是在运行时编译更改的 JSP。但是,这在生产系统中是不好的做法,并且完全破坏了您的可维护性。如果您需要经常更新一些 UI 代码,我建议您更改实现以利用 ADT(应用程序显示模板),例如通过 Freemarker 或 Velocity。这些是在运行时更新的,其中 JSP 更新是 Tomcat 的默认(开发友好,生产敌对)配置的副作用

【讨论】:

感谢您的回复。我认为必须习惯新的 ADT 东西。我同意 JSP 是 timcat 的副作用

以上是关于在 osgi 文件夹中复制后,Liferay 7 tomcat 中的战争在哪里爆炸的主要内容,如果未能解决你的问题,请参考以下文章

在 Liferay 7 中创建自定义标签库

Liferay SDK 6.2与7.0中build.[$username].properties 文件的配置

启动 OSGi 模块 httpclient-osgi-4.5.3.jar 时出现 Liferay SAXException

Liferay7 BPM门户开发之38: OSGi Bndtools开发入门

Liferay 模块(OSGi 捆绑包)停留在“Stopping”

Liferay 7 module项目的依赖问题