之前一个项目是做一个政府的门户,用的是JBoss Portal作为portlet容器。项目一期结尾,客户要求所做的portlet能在Liferay上跑,经过R&D之后,觉得这个几乎是不能完成的任务。
项目里用的bridge: JBossPortletBridge,它可以很好的JBoss Portal结合,对于Liferay却显得无能为力。JBoss
Portal支持richfaces存在问题,当一个页面存在多个portlets的时候,会有badpadding的异常,所以项目里并没有用a4j的
东西。如果把这些portlets放到Liferay里面,<h:commandXXX/>是不起任何作用的,
<a4j:commandXXX/>才能帮到忙。还有很重要的一点
,需要得到正确的javax.servlet.include.path_info。
这类的资料晚上很少,经过N久的努力,找到一个很有用的article,网址如下:
http://java-ua.blogspot.com/2008/10/richfaces-jsf-ri-jbossportletbridge.html
主要内容摘录如下:
The task to make few portlets for Liferay 5.1 Portal
using RichFaces
+ JSF RI
looks trivial. But it isn't.
There are few decisions:
- Use Liferay listener for Sun JSF with Sun's FacesPortlet.
- Use JBossPortletBridge, because it supports RichFaces and AJAX.
I choosed the second with understanding that JBossPortletBridge
is in beta and everywhere says that it supports JBossPortal, but I did not find where says - "It supports Liferay too". It does not support Liferay Portal 5.0
.
I
found few interesting things, that anyone should know before starting
write portlets with RichFaces for Liferay using JBossPortletBridge
1.0.x Beta:
- RichFaces should be at least 3.2.1.
- You should configure portlet as ajaxable with server side state saving policy
- Override the
javax.portlet.faces.GenericFacesPortlet
given with JBossPortletBridge. You'll need manually setup the request attribute javax.servlet.include.path_info
with correct viewId you want to process and render. Or you can setup this request attribute at the PortletExternalContextImpl
class in calculateServletPath()
method (remember JBossPortletBridge 1.0.x Beta).
- Use
<a4j:commandXXX/>
components to process navigation. <h:commandXXX/>
will not help ((.
虽然大家都遵循×××,但是通用性还是有很大区别的。项目不能依赖于所运行的容器,这个项目开始并没有考虑到要搬到另外一个portal容器,所以有些东西是和JBoss Portal戚戚相关的,这会为以后带来很多不必要的麻烦。最后终于把portlet在Liferay里面跑起来了,但是也仅仅是能出个界面,功能是用不了的。如果真的需要在这两个容器里面都可以跑,那还得有许多的东西去研究,因为a4j在JBoss Portal里有问题,而h:在Liferay里有问题。当然,换个bridge当另说,最理想的结果是JBossPortletBridge
支持Liferay了...
分享到:
相关推荐
在Java企业级应用开发中,JBoss Portal是一个常用的portlet容器,它提供了一个可扩展的平台来构建、部署和管理web应用程序,特别是portlet应用。Portlets是portlet容器中的独立组件,可以展示在门户页面上,与用户...
- 如果需要使用 Liferay Professional 版本,需修改 `ext/servers/jboss-jetty/server/default/deploy/liferay-portal.ear/portal-ejb.jar` 下的 `portal-ext.properties` 文件,设置 `portal.release=professional...
本文档将详细阐述JBoss Portal的安装与配置过程,帮助开发者快速搭建一个功能完备的门户环境。 1. **配置环境** - **开发工具**:JBoss Portal的开发通常需要集成开发环境(IDE),如Eclipse,用于代码编辑、调试...
Liferay内置了基于JBoss jBPM的工作流引擎,开发者可以创建自定义工作流程,定义审批流程和表单,用于内容审核、任务分配等场景。 7. **内容管理系统** Liferay的Document and Media Library提供了文档存储、版本...
5. **无许可证费用**:与其他商业门户平台相比,JBoss Portal 无需支付许可证费用,降低了企业的总体拥有成本。 #### 三、技术架构 JBoss Enterprise Portal Platform 部署在 JBoss Enterprise Application ...
- Liferay Portal 是基于 Java 的,它遵循 JSR-168 和 JSR-286 规范,支持portlet 开发。 - Liferay 提供了完整的用户管理和权限控制,支持多租户架构,使得多个组织可以在同一平台上独立运作。 - 它的界面设计是...
这部分深入讨论了JBoss Portal Server的内部工作原理,包括portlet容器、主题、用户管理和权限控制。理解这些概念有助于开发者更好地定制和扩展portal服务器。 5. **Chapter 8 - 定制门户外观** 这一章主要讲解...
这是一个关于JBoss Portal的小例子,有一个完整的war包和源码。实现了一个Portlet。
JBoss Portal支持多种portlet类型,包括HTML portlets、Portlet Bridge(允许使用Spring MVC或JSF等Web框架)、RSS portlets等。Portlets可以通过portlet上下文获取服务,如用户会话信息、主题定制等。 **3. 用户...
对于希望进一步提升门户功能的开发者来说,本书还介绍了一些高级主题,如如何将 JBoss Portal 与其他系统集成、如何开发插件以增强门户的功能性等。 #### 三、代码示例 为了帮助读者更好地理解和实践书中所讲述的...
7. **部署与配置**:手册会详细讲解如何在JBoss应用服务器上部署和配置Portal,包括portlet的部署、portlet容器的设置以及系统级别的配置选项。 8. **性能优化**:JBoss Portal提供了多种性能优化策略,如缓存机制...
这个示例可能演示了如何开发一个简单的portlet,包括portlet的生命周期管理(初始化、渲染、事件处理等)和portlet与门户交互的基本方法。 3. **HelloWorldPortlet (2)**:尽管名称相同,但第二个HelloWorldPortlet...
JBoss Portal可以与其他企业系统集成,如LDAP服务器进行身份验证,或者与CRM、ERP等企业应用集成,实现数据交换和流程整合。 7. **安全性** 基于Java EE的安全模型,JBoss Portal提供了角色和权限管理,支持标准...
JBossPortal01.swf JBossPortal01.swfJBossPortal01.swfJBossPortal01.swf
总的来说,JBOSS PORTAL插件包通过提供对JSR 168标准的支持、与Eclipse IDE的紧密集成以及丰富的资源和库,为开发者提供了一个强大的开发环境,使得开发、调试JBOSS PORTAL应用变得更加高效和直观。无论是新手还是...
1.2 Using Liferay Portal as a collaborative platform . . . . . . . . . . . . . . 6 1.3 Using Liferay as a social platform . . . . . . . . . . . . . . . . . . . . . 7 1.4 Using Liferay as a web ...