【问题标题】:Two portlets with same database具有相同数据库的两个 portlet
【发布时间】:2013-05-15 09:43:30
【问题描述】:

我正在开发 Liferay 门户,我有一个处理门户管理员端和客户端端的 portlet。问题是客户端无法看到管理员页面(包括 portlet)。我还为门户创建了自定义数据库(我使用 Service Builder 在 Liferay 数据库中包含了我自己的表)。现在我想使用同一个数据库,这样我就可以使用客户端 portlet 从中获取信息。

有什么想法吗?

我正在使用 Liferay 6.1 和 Tomcat 以及用于 Eclipse 的 Liferay SDK 插件。

【问题讨论】:

    标签: liferay portlet liferay-6 liferay-ide


    【解决方案1】:

    您可以从 Web-Inf/lib 复制 [portlet name]-service.jar,并将其粘贴到任何其他 portlet 的 lib 文件夹中。如果您可以使用 maven 执行此操作并将此 jar 添加为依赖项,那就更好了。这样您就可以访问您的服务提供的 Util 类,访问任何其他 Portlet

    【讨论】:

    • 如果你使用 Liferay 的插件 SDK 会更好,在 liferay-plugin-package.properties 中设置 required-deployment-contexts,它会在编译时自动复制最新的并确保它在它的服务使用的插件之后部署。
    • @rp 听起来很酷,老实说不知道这个功能。感谢分享
    【解决方案2】:

    插件项目中的所有 portlet 共享由该插件创建的服务构建器服务(因为它们最终位于一个 war 文件中,因此共享运行时上下文)。因此,您可以将两个 portlet 放在同一个插件中,它们都可以访问该插件的服务构建器服务/表。我想你会发现这是一种常用的方法。您提到的权限和可见性问题不受此组织的影响。

    这样做可以让部署变得简单——只需部署插件的战争,就完成了。

    如果有超出您控制范围的原因要求 Portlet 位于单独的插件中,那么这将变得更加困难—— yannicuLar 的方法是一种方法。

    【讨论】:

      【解决方案3】:

      如果您有两个 portlet 共享相同的表/实体,您可以将 service.jar 复制到 tomcat-7.0.27\lib\ext 一个公共位置,这两个 portlet 可以在运行时访问这个 .jar。

      【讨论】:

        猜你喜欢
        • 2020-12-28
        • 2018-12-18
        • 2013-03-24
        • 1970-01-01
        • 1970-01-01
        • 2016-04-02
        • 1970-01-01
        • 2010-12-29
        • 1970-01-01
        相关资源
        最近更新 更多