随笔-10  评论-23  文章-32  trackbacks-0
一、准备:

我本机的环境是liferay-portal-tomcat-6  RC2

使用liferay-plugins-sdk开发了一个测试portlet:LiuYiTest

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

image

二、portal启动状态时undeploy portlet 的操作步骤:

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

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

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

     image

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

     我本机的路径截图如下:

     image

    直接移除此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的时候会有

如下类似异常报出:

2010-7-7 16:21:41 org.apache.catalina.startup.HostConfig deployDescriptor
信息: Deploying configuration descriptor 123-portlet.xml
2010-7-7 16:21:41 org.apache.catalina.startup.ExpandWar copy
严重: Error copying D:\worksoft\liferay-portal-6.0.2\tomcat-6.0.26\webapps\123-portlet to D:\worksoft\liferay-portal-6.0.2\tomcat-6.0.26\temp\0-123-portlet
java.io.FileNotFoundException: D:\worksoft\liferay-portal-6.0.2\tomcat-6.0.26\webapps\123-portlet (系统找不到指定的文件。)
  at java.io.FileInputStream.open(Native Method)
  at java.io.FileInputStream.<init>(FileInputStream.java:106)
  at org.apache.catalina.startup.ExpandWar.copy(ExpandWar.java:308)
  at org.apache.catalina.startup.ContextConfig.antiLocking(ContextConfig.java:984)
  at org.apache.catalina.startup.ContextConfig.beforeStart(ContextConfig.java:1032)
  at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:263)
  at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
  at org.apache.catalina.core.StandardContext.start(StandardContext.java:4234)
  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
  at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
  at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
  at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
  at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
  at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
  at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
  at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
  at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
  at org.apache.catalina.core.StandardService.start(StandardService.java:519)
  at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
  at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
2010-7-7 16:21:41 org.apache.catalina.core.StandardContext resourcesStart
严重: Error starting static Resources
java.lang.IllegalArgumentException: Document base D:\worksoft\liferay-portal-6.0.2\tomcat-6.0.26\webapps\123-portlet does not exist or is not a readable directory
  at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)
  at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4086)
  at org.apache.catalina.core.StandardContext.start(StandardContext.java:4255)
  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
  at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
  at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
  at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
  at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
  at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
  at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
  at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
  at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
  at org.apache.catalina.core.StandardService.start(StandardService.java:519)
  at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
  at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
2010-7-7 16:21:41 org.apache.catalina.core.StandardContext start
严重: Error in resourceStart()
2010-7-7 16:21:41 org.apache.catalina.core.StandardContext start
严重: Error getConfigured
2010-7-7 16:21:41 org.apache.catalina.core.StandardContext start
严重: Context [/123-portlet] startup failed due to previous errors

 

异常是由于没有清理干净当前portlet相关信息导致的。这个时候需要手动清理。

加上最开始删除的webapps下的portlet这一步(也就是以下的第一步),在portal没有启动的状态下,undeploy一个portlet的操作步骤如下:

     1) tomcat-$version\webapps\$portlet_name文件夹(如果)

     2) tomcat-$version\temp\$portlet_name文件夹

     3) tomcat-$version\conf\Catalina\localhost\$portlet_name.xml

     4) 此portlet相关数据库中信息

其中$version等代表具体的版本和portlet名称。

重新启动portal。至此,没有启动portal的情况下,undeploy portlet的所有操作执行完毕。

四、最后:

      以上演示的实例是在liferay-portal-tomcat-6.0.2的liferay portal版本环境下。绑定的tomcat是6.0.26。通过网上资料我了解到似乎不能

      在liferay+jboss的绑定环境下复制以上同样的操作。具体的环境情况下可能有不同的操作方法。

posted on 2010-07-07 17:16 liuyimx 阅读(989) 评论(1)  编辑  收藏

评论:
# re: liferay portal中卸载portlet 2010-07-19 22:55 | wxiaom
遨豪大连专注于门户信息化服务,擅长于Liferay门户安装,部署和配置实施,快速Theme,基于Liferay门户实施二次开发;移植第三方门户应用系统到Liferay门户及实现企业信息化管理平台;提供必要的Liferay项目开发和管理服务以及性能改进的详细计划以及企业版服务等,更多参考: www.aukcell.com

业务咨询在线联系:eonpeter@gmail.com (msn)

QQ:1417153858 (Liferay支持)

QQ:1410151582 (Liferay培训)

QQ:1492270185 (Liferay企业版)  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: