如何检查portlet是部署还是活动?

时间:2017-09-12 14:55:09

标签: bash curl liferay liferay-6 portlet

在我的工作中有一个Portal(Liferay但是自定义)和我们自己的portlet,它们工作得很好但是所有它们的部署花费的时间太长(30-40分钟),我的目标之一是知道每个portlet是什么时候用户必须进行portlet视图并检查portlet是否可用,但这被认为是不切实际的。

我正在创建一个bash脚本,基本上它通过cURL执行http请求到每个portlet的视图,但是它没有按我想要的方式工作,因为即使没有部署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输出(tomcat)会抛出一个null,但是http请求会在返回的代码中显示消息,但即使使用它,portlet也不会被部署,而脚本也会这样说。

1 个答案:

答案 0 :(得分:2)

如果单个webapp(带有portlet)的部署需要30-40分钟,我将开始处理那个方面,而不是一个更耐心等待的解决方法。

话虽如此,不是访问恰好部署了portlet的完整页面,而是如何在portlet中实现serveResource方法,为每个感兴趣的portlet获取resourceURL在,只是访问此URL。只有在完全部署portlet时才会处理资源请求。这样只需要evaluating the HTTP error code即可。

但首要的是:找出需要这么长时间并缩短它的时间。