将Liferay函数公开给另一个Web应用程序

时间:2014-02-03 14:44:22

标签: java liferay server-communication

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

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

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

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

将我的应用程序转换为portlet并不是一个真正的选择,因为这些应用程序非常庞大并且已经存在了很长时间。所以我想让它们大部分保持不变 - 除了认证之外。

谢谢和问候 塞巴斯蒂安

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

几个选项:

  • 只需从您的应用程序访问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服务器)并自动(隐式)登录到您的webapp以及Liferay。如果两者都访问相同的用户存储,例如,在LDAP上。