【问题标题】:Expose Liferay functions to another web application将 Liferay 函数暴露给另一个 Web 应用程序
【发布时间】:2014-02-03 14:44:21
【问题描述】:

这是我的情况:我在域模式下运行具有多个节点的 JBoss 7。一个节点负责我的 Liferay 6.2,另一个节点运行其他几个 Web 应用程序。现在我想实现一些单点登录例程。因此,要使用我的 Web 应用程序,您必须先通过 liferay。再次验证 liferay,然后转到其中一个 Web 应用程序。

所以问题是是否有办法公开一些 liferays 方法来访问用户存储并检查访问 Web 应用程序的用户是否与登录 liferay 的用户相同。开发某种桥梁对我来说很好。我正在考虑一个portlet,它与liferay 进行所有交互并公开一些方法,如readUser()。也许我可以对这个 portlet 或嵌入在这个 portlet 中的组件进行 jndi 查找,以便从我的其他 Web 应用程序调用 readUser()。我觉得这听起来有点像 EJB 的东西。

使用 Liferays API、Services 和 LocalServices 来读取用户信息等应该不是那么困难(已经玩过一点)。我只是不知道如何在 web 应用程序和 liferay 之间建立通信。

如果它不能以这种方式工作,我会选择其他方式,也许是 web 服务或其他有意义的方式,但我想先尝试 EJB/JNDI 方法(除非这完全没有意义)。也许有人可以指出我正确的方向。

将我的应用程序转换为 portlet 并不是一个真正的选择,因为这些应用程序非常大并且已经存在了相当长的一段时间。所以我想让它们大部分保持不变 - 除了身份验证的东西。

感谢和问候 塞巴斯蒂安

【问题讨论】:

    标签: java liferay server-communication


    【解决方案1】:

    您可以使用服务构建器并将您的服务公开为远程。

    【讨论】:

      【解决方案2】:

      几个选项:

      • 只需从您的应用程序中访问 Liferay 的 API 方法。您可以通过 http://www.example.com/api/jsonws 访问 JSON API。
      • 还有一个 SOAP 接口 (http://www.example.com/api/axis),通常只能从 localhost 获得(您可以在 portal-ext.properties 中进行其他配置)
      • 您可以通过创建自己的服务来封装对这些服务的调用。使用您选择的工具或 Liferay 的服务构建器。您可以创建空实体并仅引用 Liferay 自己的实体。如果您允许,Servicebuilder 将生成 JSON 或 SOAP WS。 (Slimen Belhajali 提到的)

      当您专门讨论用户身份检查时,您甚至可能想考虑一个完全不同的解决方案,而只需看看单点登录 (SSO) 解决方案。这样,您只需登录一次(到 SSO 服务器)并自动(隐式)登录到您的 web 应用程序以及 Liferay。如果两者都访问相同的用户存储,这效果最好,例如在 LDAP 上。

      【讨论】:

        猜你喜欢
        • 2012-01-16
        • 1970-01-01
        • 1970-01-01
        • 2015-08-08
        • 1970-01-01
        • 2018-08-19
        • 1970-01-01
        • 2019-02-24
        • 2020-12-08
        相关资源
        最近更新 更多