【问题标题】:Liferay Web Application Integration (WAI) problemLiferay Web 应用程序集成 (WAI) 问题
【发布时间】:2011-06-02 21:25:30
【问题描述】:

我正在尝试让现有应用程序在 Liferay 中显示为 portlet。我已经确认 WAR 文件将部署在 Tomcat/Jetty 中。显然,我应该能够简单地将 WAR 文件复制到 Liferay 的部署文件夹,然后 Liferay 会处理其余的工作。

portlet 确实显示在“添加”菜单中,但添加后出现 404 错误。路径似乎是错误的。

Liferay 似乎试图去的路径是:http://localhost:8080/web/guest/home/-/waiapp/jms-gui/

但是,应用程序运行在:http://localhost:8080/jms-gui/secure/jmsPortlet

我不确定要更改什么或如何配置它以使其正常工作。任何帮助将不胜感激。

谢谢, 迈克尔·科拉科夫斯基

【问题讨论】:

    标签: web-applications portlet liferay


    【解决方案1】:

    显然,我应该能够简单地 将 WAR 文件复制到 Liferay 的部署中 文件夹和 Liferay 会处理 其余的。

    不,这不是真的。

    Liferay 是 portlet 容器。 “现有应用程序”可能是指通常的 java webapp,基于 Servlet API。 Portlet 有自己的 API,你不能只把基于 Servlet 的 webapp 变成 portlet webapp 而不改变代码,因为 Portlet 和 Servlet 不同。

    在您的情况下,您可能会选择 iFrame portlet,它将 iFrame 您的 webapp,如果您愿意,您可以将其部署到运行 Liferay 的同一个 Tomcat。 但是你不应该通过 Liferay 部署过程来部署它,因为那是为 Liferay 插件设计的,而不是为通常的 webapps 设计的。

    【讨论】:

    • 感谢您的信息。我阅读的文档似乎暗示 Liferay 会从战争中“生成”一个 portlet,我认为这不会起作用,但我对这些东西还很陌生。其实这里是链接:liferay.com/community/wiki/-/wiki/Main/…
    • 不客气。我对这个 WAI 的东西并不熟悉,所以看起来我实际上并不完全正确。但是,正如文档所说,它实际上并没有比 iFrame 做更多的事情,而且(我怀疑是诚实的)它似乎无法正常工作。该路径是 Liferay 友好的 URL 路径(请参阅 liferay.com/community/wiki/-/wiki/Main/FriendlyURLMapper ),但为什么它不起作用很难说。您可能需要检查 access.log 中的 404。
    【解决方案2】:

    是的,您应该可以,但有一些限制。这里Liferay Wiki是相关文档,如是。我最近才发现这一点,将一个 grails 应用程序放入我的 liferay 服务器的热部署目录,看看会发生什么。部署后,我开始在 webapps 文件夹中四处查看,并惊讶地看到 portlet.xml 和 liferay-portlet.xml 文件。果然,一旦我登录并查看 Add Portlet 菜单,就会出现一个“未定义”类别,并且我的 grails 应用程序是一个 portlet。身份验证不共享,我相信如果您的 web 应用程序在站点外有外部链接,您可以破坏它。尽管如此,还是很有趣的黑客!

    【讨论】: