liferay-portal中卸载portlet

来源:互联网 发布:淘宝怎么批量退货 编辑:程序博客网 时间:2024/06/05 15:20

如何在liferay-portal-tomcat6中卸载portlet

一、 环境介绍

liferay-portal-tomcat-6  RC

portlet :LiuYiTest

将此portlet部署到portal中之后,能够正常显示,没有任何错误信息。页面显示如下:

clip_image001

二、 Portal处于启动状态时undeploy portlet 的操作步骤

在liferay-portal服务器启动状态下(这个很重要,后文会讲portal关闭状态下删除文件夹之后的状况),

undeploy这个portlet需要做的事情共有以下几步:

1. 在这个portlet右上角点击关闭按钮,关闭这个portlet,这样在卸载了这个portlet之后,再次访问这个页面的时候,不会报portlet找不到的异常

    clip_image002

2. 在$LIFERAY_HOME(代表portal的安装路径)中,进入tomcat-$version\webapps,找到我们刚才关闭的LiuYiTest-portlet。

我本机的路径截图如下:

    clip_image004

直接移除此portlet文件夹。

删除此文件夹之后,在控制台会输出如下提示:

  

14:39:11,343 INFO [ExtHotDeployListener:207] Extension environment for LiuYiTest-portlet will not be undeployed

14:39:11,343 INFO [PortletHotDeployListener:403] Unregistering portlets for LiuYiTest-portlet

14:39:11,343 INFO [PortletHotDeployListener:439] 2 portlets for LiuYiTest-portlet was unregistered

14:39:11,406 WARN [PortletContextListener:86] Unable to dynamically unbind the Liferay data source: Name java_liferay:jdbc is not bound in this Context

以上信息的意思总共有以下几点:

    1) 当前卸载的这个portlet的扩展环境将不会被删除,例如当前卸载的portlet用到的全局图片资源,js资源,

        css资源,其他不在当前portlet文件夹中的相关资源都不会被卸载(删    除)。%大概是这个意思,可能还有其他更深的意思%

    2) 这个portlet在portal中的注册信息已经被卸载掉了

    3) 2个portlet被卸载了 %由于我的这个portlet工程(LiuYiTest-portlet)中包含两个具体的portlet,所以是2个portlet被卸载%

    4) 最后这句的意思是无法动态的解除绑定的liferay数据资源,冒号后面的信息是提示在卸载的这个portlet内容中没有绑定的数据库内容。

        %liferay-portal会自动删除存在于\tomcat-6.0.26\work\Catalina\localhost目录下以及

         \tomcat-6.0.26\temp\下的与当前portlet有关的一些_jsp.class和资源文件%

如果你在删除之前没有首先关闭掉portal页面上的portlet的话,刷心页面之后,控制台会报类似如下错误:

  

java.lang.NullPointerException

at com.liferay.portlet.PortletInstanceFactoryImpl.create(PortletInstanceFactoryImpl.java:122)

at com.liferay.portlet.PortletInstanceFactoryUtil.create(PortletInstanceFactoryUtil.java:38)

at org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(Unknown Source)

portlet页面内容中也会有相应提示,这时候只需要在portal中关闭报错的portlet就可以了。

3. 如果你的portlet中用到了数据库中的信息,那么需要手动清除一下无用的数据

至此为止,部署在liferay-portal中的某个portlet就被成功删除掉了,注意,以上是在liferay-portal启动的情况下的undeploy操作。

三、 portal没有启动状态,undeploy portlet的操作

下文是另一种情况:当liferay-portal没有启动的时候,如果直接删除掉了tomcat\webapps下的portlet工程,启动portal的时候会有

如下类似异常报出: