论坛首页 Java企业应用论坛

关于Portal、JSR168的一些想法和疑惑

浏览 41104 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-07-29  
最近因项目的需要,计划做一个Portal产品。初略地试用了几个Portal产品,看了一堆的关于Portal和JSR168的文章,还不是太明白,但已经有了一些想法和疑惑,恳请熟悉Portal的朋友指点。

首先,我理解Portal产品可以分为两部分。一部分是Web应用,提供了诸如页、布局、主题等功能,能够添加、删除Portlet;另一部分即是Portlet容器,两部分共处于一个Servlet容器中。

而Portlet是一个符合JSR168标准的类,是运行于Portal上的真正代表业务逻辑的部件,负责展现内容、处理请求。

这里有两个疑问:
一是Portal通常是改造了的Servlet容器,例如JetSpeed、LifeRay都对容器作了修改,几个厂商的Portal就更不用说了。为什么Portal不能作为单独的Web应用部署,以便于做到与中间件无关?这个问题可能是因为我还了解得比较浅,没有具体去实现javax.portlet中的接口,希望了解的朋友先指点我一下。

二是根据我目前的了解,Portlet成了最重要的资产,是实现集成的关键,一个Portlet对应着一个业务系统的某部分功能。但现实中这样做似乎不可行,例如Portal要集成财务系统的一个功能,以便于显示当前用户的薪资情况,但薪资的计算有赖于财务系统的数据库和一系列的类,并不容易单独抽取出来形成一个Portlet。

我目前有一个简单的想法:
1、各个系统(假定都是J2EE吧)将需要集成到Portal中的功能做成一个小的JSP页面(不妨称之为伪Portlet),这个小页面和业务系统处于同一个容器,根据不同的用户和请求参数输出不同的HTML片断。
2、一个类似portlet.xml的配置文件将这些JSP页面注册到Portal,Portal根据portlet.xml中提供伪Portlet的列表,用户从中选择并加入到Portal的页中。
3、用户访问Portal时,Portal将用户凭证(假定类似于Kerberos的票据)、用户对Portlet执行的操作等信息作为参数提交给伪Portlet对应的URL,伪Portlet在业务系统内部运行并返回HTML片断。
4、Portal将同一个页上用户定义的所有Portlet的HTML片段一一展现,并实现拖拽、最小化、删除Portlet、添加Portlet等一系列动作。稍微扩展一些也可以实现Edit、Help、Maximize之类的动作。

按照我上面的想法,似乎也可以很好的集成各个业务系统,实现这样一个伪Portlet的成本比从业务系统抽取逻辑实现一个JSR168的Portlet要小得多,用户的使用感受和JSR 168基本一致。但在这个想法中,实际没有Portlet容器的位置,也不需要Portlet规范,还可以集成AJAX,很容易地实现Portlet的单独更新。那么这个想法有没有人尝试过,具体实现会有什么问题、难点或瓶颈?
   发表时间:2009-07-29   最后修改:2009-07-30
高手快谈谈看法。上传同事做的一个Portal的界面原型,可以换肤,还是很漂亮的。
  • 大小: 194.9 KB
0 请登录后投票
   发表时间:2009-07-29  
portlet只是前端展示方式的独立,并不是说明后台也是一个独立的系统啊?
0 请登录后投票
   发表时间:2009-07-29  
Kisses99 写道
portlet只是前端展示方式的独立,并不是说明后台也是一个独立的系统啊?


你说的是不是像天气预报、RSS、万年历之类的与业务无关的Portlet?这样的Portlet毕竟是一部分呀,而且从某种意义上来说是不太重要的一部分。

我目前的情况是Portal要作为一个统一的入口,在这个入口上既显示OA中的信息,又显示财务系统中的信息,还显示CRM中的显示,这时候就会有Portlet对应这些独立的业务系统中的一部分功能。
0 请登录后投票
   发表时间:2009-07-29  
楼主的问题提得很到位,我这边也做了10来个portal的项目(基于IBM Portal),遇到的很多问题恰恰是楼主提到的。

对于需要整合的场景,项目使用JSR规范去开发portlet的做法并不多,因为这个成本实在是太高了。首先需要对应用系统进行改造,提供相应的接口,再通过portlet代码进行调用展现。但portlet开发本身就比一般的web开发困难,再加上远程调用也不是省油的灯,而且这个工作往往涉及到不同的厂家,协调沟通成本往往还大于实际的开发成本。
0 请登录后投票
   发表时间:2009-07-29  
因此,我们使用JSR规范开发的portlet基本上都是一些针对我们自己系统(OA)整合的模块,以及不依赖其他系统的简单应用,如楼主提到的天气预报、收藏夹等。

另外,就是一些需要利用到portal容器提供的个性化特性的模块,如EMail等
0 请登录后投票
   发表时间:2009-07-29  
大部分的整合,其实和楼主的想法是一样的,使用伪portlet,实际上就是开发了一个很通用可以配置很多参数的Iframe portlet,需要整合的系统只需要做一个小页面,提供URL给我们整合进来就OK了。
1 请登录后投票
   发表时间:2009-07-29  
使用伪portlet最大的问题,我认为是无法使用到portal容器提供的认证、授权等服务,界面样式控制、换肤等功能也需要额外去实现
0 请登录后投票
   发表时间:2009-07-29  
因此,我们在独立于portal容器之外,还建立了统一认证平台和用户身份管理平台,解决整合过程中的身份信息传递等问题。
0 请登录后投票
   发表时间:2009-07-29  
portlet容器不能独立于servlet单独部署,大概是和各个web容器对web应用程序的部署管理机制有关的,因为portlet部署时也有很多事件要触发,要做实例化初始化这些操作,而不同的servlet容器对web应用部署时的处理机制是不一样的,而portlet容器需要依赖web容器传递的消息,这就导致必须和servlet容器绑定在一起了。。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics