Bash 如何检查portlet是否已部署或处于活动状态?

Bash 如何检查portlet是否已部署或处于活动状态?,bash,curl,liferay,liferay-6,portlet,Bash,Curl,Liferay,Liferay 6,Portlet,在我的工作中,我们有一个门户(Liferay,但是定制的)和我们自己的portlet,它们工作得很好,但所有这些portlet的部署都需要很长时间(30-40分钟),我的目标之一是知道每个portlet何时启动,特别是用户必须进入portlet视图并检查portlet是否可用,但这被认为是不实际的 我正在制作一个bash脚本,基本上它通过cURL对每个portlet的视图执行http请求,但它并没有按照我想要的方式工作,因为即使在未部署portlet时,资源也被标记为可用,您对此问题有什么建议吗

在我的工作中,我们有一个门户(Liferay,但是定制的)和我们自己的portlet,它们工作得很好,但所有这些portlet的部署都需要很长时间(30-40分钟),我的目标之一是知道每个portlet何时启动,特别是用户必须进入portlet视图并检查portlet是否可用,但这被认为是不实际的

我正在制作一个bash脚本,基本上它通过cURL对每个portlet的视图执行http请求,但它并没有按照我想要的方式工作,因为即使在未部署portlet时,资源也被标记为可用,您对此问题有什么建议吗?我将在下面附上一段代码

#!/bin/bash

portlet='web/view/your_first_portlet web/view/your_second_portlet';
for i in $portlet;do
   if [ -z "$(curl -v --silent http://portal/$i 2>&1 | grep "The requested resource was not found.")" ]
   then
      echo "$i is ready"
    else
      echo "$i is NOT ready"
    fi
done

当cURL命令运行时,它会搜索字符串“请求的资源未找到”的出现。因为我发现当资源不可用时,在catalina Output(tomcat)中会抛出null,但在http request中会显示返回代码中的消息,但是即使有了它,portlet也不会被部署,脚本也会这样说。

如果一个webapp(带有portlet)的部署需要30-40分钟,我会开始着手这方面的工作,而不是耐心等待的解决方法

也就是说,与其访问碰巧部署了portlet的完整页面,不如在portlet中实现一个
serversource
方法,获取感兴趣的每个portlet的
resourceURL
,然后访问该URL。只有完全部署portlet时,才会处理资源请求。这样就可以了


但首先也是最重要的一点是:找出什么需要这么长的时间并缩短它。

如果部署一个Web应用程序(带有portlet)需要30-40分钟,我会开始着手这方面的工作,而不是寻找一个更耐心等待的解决方法

也就是说,与其访问碰巧部署了portlet的完整页面,不如在portlet中实现一个
serversource
方法,获取感兴趣的每个portlet的
resourceURL
,然后访问该URL。只有完全部署portlet时,才会处理资源请求。这样就可以了


但首先也是最重要的一点是:找出什么需要这么长的时间并缩短它。

谢谢你的回答,我解释错了,门户大约需要2分钟,但所有Portlet(大约50个Portlet)的完整部署需要30-40分钟。我要弄清楚你提出的方法:)听起来仍然很可怕。我想说还有改进的余地,例如,通过将多个Portlet组合成一个插件和其他调整措施谢谢你的回答,我解释错了,门户大约需要2分钟,但是所有Portlet(大约50个Portlet)的完整部署需要30-40分钟。我要弄清楚你提出的方法:)听起来仍然很可怕。我想说还有改进的余地,例如通过将几个portlet组合成一个插件和其他调优措施