`
devilbaby
  • 浏览: 68386 次
  • 性别: Icon_minigender_1
  • 来自: 珠海->上海
社区版块
存档分类
最新评论

利用Liferay开发portal应用(插件)

阅读更多

随着portal的应用在中国越来越广泛,越来越受欢迎,Liferay在中国的用户数也随之增长。每个Liferay的开发人员都会面临一个问题,到底通过应用liferay的哪种方式进行开发是最好的呢?

我认为在Liferay上开发portal主要有两种方法:

第一种,利用Extension Environment形式进行开发,设置Extension Environment的方法网上已有很多,在这里不再做详细说明,大家可以参考官方的http://wiki.liferay.com/index.php/Setting_up_the_Extension_Environment,或者我们group里面的http://liferay.group.iteye.com/group/blog/126024

用该方式进行开发存在着以下问题:

1)和Liferay绑定得太紧,从version4.1version4.2目录结构发生变化,从version4.2version4.3底层程序实现发生变化。这样结果就是,我们升级存在着一定的风险,虽然官方提供了升级方案,但是随着数据的增长了,开发过程的不规范,升级带来的风险是无法估计的;

2)开发成本,Liferay用的是类似MDA模型的构架,但是过度使用设计模式和代码的复杂性,让开发成本不能保持在一个相对底的水平,更重要的是他的代码没有注释,学习起来比较费劲,这样的一个结果就是必须要有水平相对高的程序员去做这方面的研究,防止出异常后无法解决。

第二种,利用plugin的形式进行开发,plugin的概念liferay很早就已经有了,但是一直表现得不是很强,相对的例子也比较少。从Liferay4.3开始,plugin在这个portlet container上面有了非常强的体现,官方发布了专门开发pluginSDKhot deploybugs也比前几个版本减少了不少。Plugin支持javaphpruby…

现在我们看看通过plugin开发portlet到底有哪些必需元素,以java的开发为例,liferay-plugin-package.propertiesliferay-plugin-package.xml――对plugin的一个描述,包括需要下载的tld文件和jar文件;liferay-display.xml――portlet所属的categoryportlet.xmlliferay-portlet.xml――这两个文件如果接触过liferay的人都不会陌生,就是对portlet的详细描述。这几个文件是必需的,liferay的就是通过解析这几个文件,通过listener来把你的应用以portlet的形式发布并加载到这个container里面。而portlet加载后,直接访问你的应用是通过portal-bridge进行的。

p.s. 4.3的版本plugin通过修改tomcat的classloader的机制,修改一些context的配置

<Context>
	<Loader 
		loaderClass="com.liferay.support.tomcat.loader.PortalClassLoader"
	/>
</Context>

让当前的war包能共享liferay war中的所有jar包,各自的应用只需要保留自己的jar包(在liferay中没有)就可以了。

开发plugin最简单的方法是用官方提供的SDK,直接运行ant命名或已经定义好的脚本,就可以生成相关的应用。

例如,我要生成一个名为”hello world”portlet,只需要在portlets下运行脚本:create hello-world “hello word”就会自动生成一个名为”hello world”的项目,必需的所有配置文件都已经自动的生成

p.s.个人来说我并不喜欢他自动生成的目录结构,既然是用plugin的形式进行开发,那直接用自己喜欢的目录结构和开发方法,最后在加上这些配置文件就好了。

同样的方法,你可以开发themelayouttpl等等

ConclusionLiferay是一个非常好的portlet container,由于文档的缺少,代码的复杂性,升级的频繁性等等问题,如果直接用Liferay进行二次开发,会带来不少的风险。所以个人的观点是把Liferay只看成是一个portlet container,作为一个建站工具,应用他的用户管理和权限管理的功能,然后通过plugin的形式,用你自己熟悉的方式进行开发,然后再发布到Liferay中,这样能把风险降到最低。

(转载请注明出处)

  • hello-world-portlet.zip (446.1 KB)
  • 描述: 把文件直接放到{user.home}/liferay/deploy文件夹中发布
  • 下载次数: 611
分享到:
评论
17 楼 SINCE1978 2009-10-30  
在context.xml添加的classLoader使得portlet能够使用tomcat所用的classLosder,后者由MainServlet在启动时调用initUtil的相关方法存入一个静态变量中,应该是供整个portlet使用的classLoader。而PortalClassLoader就是去该静态变量位置取classLoader。但是对这种配置的机制不了解,就是在MET-INF文件夹下的context.xml配置文件到底属于何种配置文件?为什么在其中可以配置loader?
16 楼 camelwoo 2008-10-26  
我很想知道通过这种插件方式进行 portlet 的开发应该如何调试呢?
15 楼 眼镜蛇 2008-06-27  
我现在遇到了一个问题,再问,问题之前。我想先确认一下我做的是否正确。
是不是在DocRoot/web-inf/src目录下放Java类,要是 是的话,我为什么在Eclipse里打 点 不出提示呢。也不报错。
并且,在Deploy的时候就说 什么什么包找不到,比如说,com.liferay.portal.struts.PortletAction包。当我把这个包考过来,放在DocRoot/web-inf/lib目录下后,虽然不再报错,但把这个包也打了进来。导致Liferay无法启动。如果放在根目录下的Lib下又不起作用。那我应该怎么办呢。

现在想解决以下几个问题:
1,在写类的时候,打 点 不出提示。也不报错。
2,把Liferay已有的包打了进去。
14 楼 fly_ever 2008-06-10  
自己开发的应用,如果页面使用了FRAME框架结构的话,部署到liferay里面就只能展示空白了。因此如果想用部署到Liferay的话,就不能使用FRAME了。
13 楼 hqb732 2008-02-29  
请问:
liferay portal 的加载流程是怎样?
12 楼 happyprogram 2008-02-26  
能说的具体些吗?我现在在做liferay方面的东东,就是不知道如何将一个web项目集成到liferay portal上,希望能给些帮助。
11 楼 melin 2008-02-21  
如果是myeclispe web工程,就是在类似Portlet-struts/WebRoot/META-INF/context.xml 文件中添加一句
<Context>
	<Loader 
		loaderClass="com.liferay.support.tomcat.loader.PortalClassLoader"
	/>
</Context>


打成war包后要去掉lib下的jar包
10 楼 devilbaby 2008-02-21  
引用
将两个应用整合在一起(在同一个上下文中),他们不是使用同一个classloader吗?

我的表达有点问题
文章中我做了修改
引用
p.s. 4.3的版本plugin通过修改tomcat的classloader的机制,修改一些context的配置
Xml代码
<Context> 
    <Loader   
        loaderClass="com.liferay.support.tomcat.loader.PortalClassLoader" 
    /> 
</Context> 

<Context>
<Loader
loaderClass="com.liferay.support.tomcat.loader.PortalClassLoader"
/>
</Context>让当前的war包能共享liferay war中的所有jar包,各自的应用只需要保留自己的jar包(在liferay中没有)就可以了。

9 楼 devilbaby 2008-02-21  
上传了一个用plugin sdk生成的portlet
8 楼 avaj 2008-02-21  
引用
另外,他share同一个classloader的方法不是说打到同一个war包中


这一块我比较迷惑,请教一下:
将两个应用整合在一起(在同一个上下文中),他们不是使用同一个classloader吗?
7 楼 devilbaby 2008-02-21  
引用

我现在的做发是:
1、将Liferay瘦身,去掉多余的Portlet等
2、与我们的应用打包在一起(放在一个war包中),这样就做到了你所说的share一个classloader了吧?
3、开发一个页面容器(就是自己的Portal page),这个Portal page也可以向Liferay那样设置Layout等。因为我们除了要在这个Portal page中放置portlet外,还要存放其余的资源,比如url(连接到别的网站)。
4、权限也是用自己的。抛弃Liferay的权限系统。

也就是说我们只是需要Liferay的portlet容器。

感觉要做的工作很多,头绪很乱。

现在也只是在做方案,看看这样做行得通不。

请提一些好的建议!多谢!

porlet container有很多,如果单单是为了这样一个container,我建议你还是用别的,因为Liferay相对来说还是挺复杂的。象你所说的做法,和我所说的第一种开发模式是一样的,存在升级等方面的风险。今天下了个4.4的version看了一下,和4.3又有点区别了,所以如果不是用plugin的方式,又得做升级了!而我plugin开发出来的应用,测试过了是兼容的。
另外,他share同一个classloader的方法不是说打到同一个war包中,而是通过设置
引用

<Context>
<Loader
loaderClass="com.liferay.support.tomcat.loader.PortalClassLoader"
/>
</Context>
6 楼 avaj 2008-02-21  
引用
可以,taglib现在都在util-java.jar这个包里面。调用Liferay的api有两种方法,一种是和Liferay的应用share一个 classloader,这样的话可以调用api得到theme等等;另一种方法是用client包,通过ws的方式取得


谢谢。

我现在的做发是:
1、将Liferay瘦身,去掉多余的Portlet等
2、与我们的应用打包在一起(放在一个war包中),这样就做到了你所说的share一个classloader了吧?
3、开发一个页面容器(就是自己的Portal page),这个Portal page也可以向Liferay那样设置Layout等。因为我们除了要在这个Portal page中放置portlet外,还要存放其余的资源,比如url(连接到别的网站)。
4、权限也是用自己的。抛弃Liferay的权限系统。

也就是说我们只是需要Liferay的portlet容器。

感觉要做的工作很多,头绪很乱。

现在也只是在做方案,看看这样做行得通不。

请提一些好的建议!多谢!
5 楼 devilbaby 2008-02-21  
引用

比如自己实现了Portal page,调用Liferay的相关API,获取Portlet的代码片段(html),然后显示在自己的Portal page上面,不知道可行不?

可以,taglib现在都在util-java.jar这个包里面。调用Liferay的api有两种方法,一种是和Liferay的应用share一个classloader,这样的话可以调用api得到theme等等;另一种方法是用client包,通过ws的方式取得
4 楼 avaj 2008-02-21  
Liferay有一个完备的Portlet 容器,我只是需要他的这个纯粹的容器,别的统统不需要。

比如自己实现了Portal page,调用Liferay的相关API,获取Portlet的代码片段(html),然后显示在自己的Portal page上面,不知道可行不?
3 楼 devilbaby 2008-02-21  
大家都发表一下看法吧!特别是做过现在正在运用Liferay进行开发的同学们
2 楼 baggio1958 2008-02-20  
沙发床!!
1 楼 hanfei1230 2008-02-20  
沙发!

相关推荐

    liferay portal开发大全

    开发者可以利用Eclipse、IntelliJ IDEA等IDE进行Liferay开发,这些IDE有专门的Liferay插件,能简化portlet和主题的创建。此外,了解如何使用Liferay Workspace和Maven进行项目管理也是提升开发效率的关键。 6. **...

    liferay portal 开发指南

    ### Liferay Portal 开发指南知识点概述 ...通过学习本文档,开发者不仅可以掌握 Portlet 的开发技巧,还能深入了解 Liferay Portal 的架构和技术特点,从而更好地利用该平台来满足企业的业务需求。

    LifeRay_Portal6.0.6学习手册

    开发LifeRay应用通常使用Eclipse IDE,纯净版Eclipse是为了避免其他插件干扰而进行的专门配置。安装后,开发者可以为LifeRay项目设置特定的工作空间和开发环境。 3. **解压和导入LifeRay源码** LifeRay Portal的...

    liferay开发文档集合

    这些PDF文档旨在帮助开发者、系统管理员和IT专业人员更好地理解和利用Liferay Portal来构建和管理他们的数字工作环境。以下是各文档的主要内容概览: 1. **《liferay-4-administration-guide.pdf》** - 这份文档...

    Liferay Portal应用之开发 (转)

    《Liferay Portal应用之开发》 Liferay Portal是一款开源的企业级门户平台,它提供了一整套解决方案,用于构建、管理和部署Web应用程序。本篇将深入探讨Liferay Portal的开发技术,帮助开发者理解其核心概念,掌握...

    liferay环境的搭建

    本文档旨在详细介绍如何利用Eclipse集成开发环境(IDE)来搭建Liferay开发环境,并创建portlet项目。通过本指南,您将能够成功安装必要的软件并配置开发环境。 #### 二、所需资源 为了搭建Liferay开发环境,您需要...

    Liferay Portal 5.2开发指南

    Yuan撰写,详细介绍了如何利用Liferay Portal 5.2来构建强大的Java企业应用程序。 #### 二、Liferay Portal 5.2 概览 Liferay Portal 5.2是一个功能强大的平台,它提供了丰富的特性用于构建企业级门户应用。这些...

    Liferay_Portal_6学习之路-学习笔记完整版

    在 Liferay Portal 中,也可以利用 Struts2 来开发 Portlet,进一步提升开发效率和应用性能。 1. **创建 Struts2 Portlet**:类似于 Struts Portlet 的创建步骤,但需要针对 Struts2 的架构进行相应的调整。 2. **...

    Liferay Portal 介绍

    Liferay Portal 是一个开源的企业级门户平台,用于构建、管理和部署Web应用程序和服务。它提供了一套全面的工具,使企业能够整合各种内容、应用和社交功能,以创建个性化的用户体验。Liferay Portal 的核心特性包括...

    Liferay Portal Systems Development

    1. 动态系统构建:开发者可以利用Liferay提供的功能,创建能够响应用户行为的动态Web应用。 2. 内容丰富性:Liferay支持多种类型的内容管理,包括文本、图片、视频等多媒体内容,为用户提供丰富多彩的信息体验。 3...

    liferay portal 6 使用文档

    ### Liferay Portal 6 使用文档知识点详述 #### 一、Liferay Portal 6:企业级门户解决方案 ...通过合理规划和有效实施,企业可以充分利用Liferay Portal 6的优势,提升内部信息管理和团队协作的效率。

    liferay Portal 求助

    在Liferay开发中,使用这些工具能帮助你更高效地工作,例如,Liferay IDE提供了针对Liferay的特殊功能,如portlet项目的创建和部署。 对于提供的文件名称“portal”,如果这是一个压缩包,它可能包含Liferay Portal...

    liferay的开发文档

    总结来说,这四个Liferay开发文档为开发者提供了一个全面的学习路径,从基础的portlet开发到高级的主题和插件设计,再到Liferay服务的集成和定制,覆盖了Liferay开发的各个方面。对于希望深入理解和精通Liferay开发...

    Liferay Portal二次开发指南

    1. 开发环境:开发Liferay Portal应用需要Java Development Kit(JDK)和Maven或Gradle作为构建工具。安装并配置好这些基础环境后,还需下载Liferay IDE(Eclipse插件)或使用IntelliJ IDEA等支持Liferay插件的IDE。...

    Liferay Portal 中文开发指南

    本指南全面介绍了Liferay Portal的开发流程和技术要点,不仅覆盖了Portlet开发的基础知识,还深入探讨了如何利用Liferay提供的各种服务来增强应用的功能性。对于初学者而言,这是一个宝贵的资源,能够帮助他们快速...

    liferay 6.2开发指南+用户手册

    开发者还可以利用Liferay的Mobile SDK开发原生的移动应用。 11. **国际化与本地化** Liferay支持多语言,开发者可以添加新的语言包,或根据需求调整默认的翻译。 12. **性能优化** 6.2版本提供了缓存机制、负载...

Global site tag (gtag.js) - Google Analytics