liferay portal学习总结一

    这段时间由于公司要开发一个portal产品,特意选取liferay portal研究了一下,现将前段时间学习的东西总结下。
    选取的技术:liferay+cas+openldap 都是开源的框架。
    功能要求:a.单点登录。b.系统集成。c.自定义样式。d.信息发布。e.搜索(对于OA,实现起来还是有点为大现实)。
    b.系统集成:
      系统集成主要有以下几种方式:
      1、iframe:利用liferay自带的iframe portlet可以直接把其它的web系统以url的形式集成进来,不过这里面会出现session丢失的问题。iframe中的系统在执行Login操作的后,习惯性的选择redirect操作,这样会强制浏览器中的显示地址变更为转移的地址。事实上这是个很正确的做法,在正常境况下,不会有任何问题,而且还可以很好的防止页面刷新等所带来的问题。
    但是在Liferay的IFrame Portlet中,web应用这样的Redirect操作,造成了调转到新页面后,session变成了一个新的,从而造成放置在原有session中的login user信息丢失。
解决这个问题,有两种方式,这两种方式都依赖于被liferay portlet纳入的web应用自身。
    方式一:Login操作后,不采用Redirect方式,而是Dispatcher方式。
    方式二:Login操作后,依然采用redirect方式,但将当前的jsessionid赋予新的页面。
有一种情况下,无所谓是否采用Redirect方式,这就是在Liferay和webapp在同一个JVM环境下。主种方式比较适合于信息发布,但是对于集成其它系统个人觉得不是很合适,一是上面所说的session问题,虽然可以解决,但解决的方案都是不理想的,其次在portal中显示另一个系统也会造成风格差异太大。
      2、Portlet中调用JSP:
     用include和方式把指定位置的JSP嵌入到portal页面中来(JSP页面不有包含<head><html><body>的信息,只能包含原来位于<body>中的HTML内容,那些<head><html><body>信息由portal页面来提供),前一段的研究中只在websphere portal中有看到过集成部署在其它服务器中的项目的方案,其它的资料都是讨论集成同一服务器中的系统的,不过想来用URL对像和HttpURLConnection把远程JSP取过再write到portal页面中去应该也是可行的,不过这种方式因为有上面的限制,也是显得很弱智。
      3、Portlet中调用servlet:这种方式也是不可行的,毕竟暴露servlet会对权限管理造成很大难题。
    基于上面的各种问题,对于其它服务器的整个系统的集成决定采用弹出一个新窗口的方式,完全只是做了一个登录的代理一样,登录后的事portal不再去管理,这样也省去了对权限、超时等问题的处理;对某个具体业务的集成则采用在portlet中调用webServices的方式,省得对原来系统的侵入。
    a.单点登录:
    我们单点登录采用cas做为认证中心,openldap作为用户信息储存服务器。
    在liferay中集成cas直接在portal的页面的“我的帐号”》“门户”》“设置”》“认证”中的cas配置好url就行了;此外在web系统中还需要配置一个Filter,

你可能感兴趣的:(jsp,应用服务器,Web,配置管理,websphere)