`
sunlujing
  • 浏览: 180001 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

liferay ipc porltet间通信DEMO

阅读更多
portlet2.0 的通信特性
    JSR268中定义了portlet之间的通信协议
     基本的原理就是事件监听机制,portlet A 触发事件。portlet B对时间进行监听并作出反应。传递的数据放在 事件的 payload 里面。并且事件通信的两个portlet可以不再同一个page,需要修改portlet.event.distribution=layout。 具体参见liferay in action 里 ipc 那一章。

     下面展示通过liferay in action 的一个例子。
      pitchPortlet view.jsp 上有一个 按钮。通过该按钮 该portlet发送一个事件。
      catcherPorlet 写好时间监听函数。

step 1. 创建 pitchPortlet.(使用liferay官方下载的eclipse,已经集成好liferay)
     
a. 修改portlet.xml
          <event-definition>
    <qname xmlns:x="http://liferay.com/events">x:ipc.pitch</qname>
     <value-type>java.lang.String</value-type>
        </event-definition>
         声明 portlet 事件。
b. 定义事件发生者(在pitchPortlet 的xml定义)
           <supported-publishing-event>
             <qname xmlns:x="http://liferay.com/events">x:ipc.pitch</qname>
        </supported-publishing-event>
c. 定义事件处理者 (在 catchPortlet 的xml定义)

           <supported-processing-event>
            <qname xmlns:x="http://liferay.com/events">x:ipc.pitch</qname>
        </supported-processing-event>

d.完整的xml定义:见附件

   e.完成 PitcherPortlet

           @ProcessAction(name="pitchBall")
public void pitchBall(ActionRequest actionRequest, ActionResponse actionResponse)throws IOException, PortletException {
                  //其他逻辑

                    //qname 与事件定义时一直
QName qName = new QName  ("http://liferay.com/events", "ipc.pitch");
actionResponse.setEvent(qName, pitchType);

   
}

   f.完成catchPortlet

         @ProcessEvent(qname="{http://liferay.com/events}ipc.pitch")
public void catchBall(EventRequest request, EventResponse response) {
   Event event = request.getEvent();
   String pitch = (String)event.getValue();
   response.setRenderParameter("pitch", pitch);
}

    g. pitchPortlet /view.jsp

          <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<portlet:defineObjects />

<p>Click the link below to pitch the ball. </p>
<portlet:actionURL var="pitch" name="pitchBall"></portlet:actionURL>
<a href="<%=pitch%>">Pitch!</a>

h. catchPortlet  /view.jsp

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
<%
String pitch = (String)renderRequest.getParameter("pitch");
%>
<p>And the pitch is....</p>

<p>
<% if (pitch!=null) { %>
<%=pitch %>!
<% } else { %>
... waiting for pitch.
<% } %>  
      

I :部署运行 点击pitch 就可以看到 catchPortlet 的反应
分享到:
评论
2 楼 lyh20081984 2012-06-25  
我也想要源码,照着你上面的教程会报错,new Qname那里就不一样了,而且不是完整的,没理清头绪,给我一份吧,感谢!lyh20081984@126.com
1 楼 lijiayao10 2012-05-03  
把例子源码发给我,谢谢啦
a304101279@163.com

相关推荐

    liferay跨组件间通信实例

    Liferay作为一个开源的企业级门户平台,提供了多种方式来实现组件间的通信,以支持复杂的应用场景。本实例将深入探讨如何在Liferay中进行跨组件通信,并以`test-portlet`为例进行详细讲解。 首先,我们需要理解...

    liferay portlet demo

    【标题】:“Liferay Portlet Demo” 在Liferay Portal中,Portlets是可重用的Web组件,它们为用户提供交互式功能。"Liferay Portlet Demo"是一个示例项目,旨在展示如何在Liferay环境中开发、部署和使用portlet。...

    liferay_Struts2_Demo开发

    【Liferay Struts2 Demo开发详解】 在Liferay门户平台中,开发基于Struts2的portlet是实现动态网页和交互功能的重要方式。以下是一个详细的步骤指南,涵盖了从项目准备到portlet创建的所有关键环节。 ### 一、准备...

    liferay hook 开发demo

    liferay hook 开发demo,swf格式

    liferay+struts2 demo

    【标题】"liferay+struts2 demo" 涉及到的是两个核心的技术:Liferay门户框架和Struts2 MVC框架的集成应用。Liferay是一个开源的企业级门户平台,常用于构建企业内部或外部的协作和信息共享系统。而Struts2是一个...

    liferay struts2 demo

    《Liferay Struts2 Demo详解》 在Java Web开发领域,Liferay Portal和Struts2框架的结合使用,为构建企业级应用提供了强大的支持。"Liferay Struts2 Demo"是一个典型的示例,展示了这两者如何协同工作,以实现高效...

    Liferay开发持久化层和服务层演示Demo代码

    通过分析“Liferay开发持久化层和服务层演示Demo代码”这一主题,我们将理解Liferay Service Builder如何帮助开发者高效地管理数据库操作,并创建自定义服务。 首先,Liferay是一个开放源代码的企业级门户平台,它...

    liferay hook 开发demo 2

    liferay hook 开发demo 2,swf格式

    liferay ajax DEMO

    使用liferay框开发ajax 的Demo

    liferay开发demo

    例如portlet生命周期、portlet渲染机制、portlet间通信(JSR-286的ResourceRequest和ResourceResponse)、portlet的缓存策略、portlet的国际化处理、portlet的安全性设置,以及如何使用Liferay的工作流API等。...

    liferay-demo:Liferay示范

    这个“liferay-demo”项目是一个Liferay的示例应用,旨在帮助开发者快速理解并掌握Liferay的开发流程和关键概念。 1. **Liferay 平台概述** Liferay 提供了一个基于Java的全功能Web门户框架,支持多种服务如内容...

    在liferay中整合GWT,附例子

    在Liferay中整合GWT(Google Web Toolkit)是一项常见的任务,尤其对于开发复杂的企业级Web应用来说,这种集成可以利用GWT的强大力量来创建高性能的用户界面,同时利用Liferay的门户功能和社区特性。这篇博文提供了...

    Liferay Portal Liferay IDE

    Liferay Portal Liferay IDE

    liferay-demo-modules

    "liferay-demo-modules" 是一组示例模块,专为展示 Liferay 的功能和开发实践而设计。这些模块是用 Java 编写的,遵循 OSGi(Open Service Gateway Initiative)规范,使得它们可以方便地在 Liferay 平台上进行动态...

    Liferay合集.zip

    2. **portlet开发**:学习如何使用Java和Maven创建portlet,以及如何处理portlet间通信。 3. **主题定制**:掌握CSS、HTML和FreeMarker模板语言,为Liferay创建独特的外观。 4. **服务构建**:了解Liferay的服务...

    liferay详细讲解 liferay项目完全讲解

    Liferay是一款开源的企业级门户平台,它提供了丰富的功能和高度可定制性,广泛应用于构建企业网站、内部系统、协作平台等。在这个“liferay详细讲解 liferay项目完全讲解”的资料包中,我们可以期待深入了解到关于...

    liferay扩展环境 liferay ext

    标题 "Liferay扩展环境 Liferay Ext" 涉及到的是Liferay门户平台的一个关键概念,Liferay Ext是用于扩展和定制Liferay功能的核心工具。Liferay是一个开源的企业级内容管理平台,它允许用户根据需求构建自定义的数字...

    liferay教程

    Liferay还支持portlet间的通信,例如通过JSR-286的ResourceRequest和ResourceResponse实现。 Liferay的安全性是另一个重要的主题。它内置了角色和权限系统,允许管理员为不同用户和组分配不同的访问权限。此外,...

    liferay环境的搭建

    ### Liferay环境搭建详解 #### 一、简介 Liferay是一款功能强大的开源企业级门户平台,主要用于构建企业级Web应用程序和服务。本文档旨在详细介绍如何利用Eclipse集成开发环境(IDE)来搭建Liferay开发环境,并...

Global site tag (gtag.js) - Google Analytics