当第三方客户端调用我的网络服务时调用控制器

Call Controller when third party client call my web-service

我身边公开了 Web 服务,当有人点击 URL 时我可以调用它,例如

curl http://localhost:8080/api/jsonws/XXXXX-Portlets.foo/verify-service \

-u 测试@liferay.com:测试\ -d 动作=''

这里 verifyService(String action) 是我在 class 中的方法,现在当有人用 curl 访问此服务时,我只是以 curl 为例。 您也可以像下面这样调用此服务,

http://localhost:8080/api/jsonws/XXXXX-Portlets.foo/verify-service/action/{valueOfparameter}

现在这个服务被第三方客户端访问,我想要实现的是当有人调用这个 web 服务时我想用那个参数更新我的 jsp 或者想调用我的控制器。 我正在使用 MVC 模式,所以它就像我必须从我的网络服务 class 的方法 (verifyService) 调用我的控制器 class。

如果 "Controller" 在您的情况下意味着 "Portlet"(Liferay 上下文表明这一点),我会说您的体系结构有误。把需要调用的代码移到一个服务中,调用起来就很自然了。让 portlet 和服务使用您的可重用代码调用相同的服务。

将 portlet 世界视为应用程序的 UI。您不会从业务(或服务)层调用 UI 层代码 - 您会调用其 UI,尤其是在可能存在大量并发用户的网络服务器上。

为了回答您对此 post 的第一条评论,我不确定您所说的 "CMS endpoint" 是什么意思。 Liferay 的 API 可用,由于历史原因,CMS 接口的名称以 "Journal" 开头,因此您实际上可以通过委托 JournalArticleService 等从您自己的服务创建或阅读文章。这使您可以访问内容另一方面,changing/creating 页面也有很多不同的 APIs,向页面添加内容等 - 无需通过 portlet。 Liferay 的所有功能都可以通过 API 获得。您需要多少以及哪一个可能太多而无法在单个 Whosebug 答案中回答 - 检查 https://dev.liferay.com for some chapters on accessing Liferay's API. Also, a good starting point is this blog article (series)