启用协作源

要启用协作源,执行下列步骤。

  1. 在“项目资源管理器”视图中,选择一个 portlet 或 Portlet 部署描述符。Portlet 将在您展开 portlet 项目文件夹中的 Portlet 部署描述符节点时显示出来。
  2. 右键单击期望的 portlet,然后从弹出菜单中选择协作 > 启用源启用协作源对话框打开。或者打开 JSP 页面并从菜单中选择页面 > 协作 > 启用源
  3. 为下列字段提供值:
    数据类型
    指定要由源 portlet 传送的数据的数据类型的名称。或者,如果已经声明想要发布的数据类型,则单击浏览按钮以打开选择类型对话框并选择希望发布的 WSDL 数据类型。将在每个字段中指定 WSDL 文件中的数据类型和名称空间。指定的值将用来声明 WSDL 文件 <types> 元素中的数据类型。
    名称空间
    指定类型的名称空间。例如,http://www.yourco.com/c2a。指定的值将存储在 WSDL 文件中并将用作指定输出属性的名称空间。
    绑定至
    指定绑定参数值的位置。目前此属性只能指定下列其中一个值:
    • 请求参数:它指定将值作为 PortletRequest 对象中的参数绑定。如果省略 boundTo 属性,则这是缺省值。注意,对于输出参数,通常应指定不同的值,这是因为 WebSphere® Portal 提供的缺省 PortletRequest 实现不允许在操作处理期间设置参数。
    • 请求属性:它指定将值作为 PortletRequest 对象中的属性绑定。
    • 会话:它指定将值绑定至 PortletSession 对象。

    在启用源 portlet 时,还可以使用此属性而不使用提供的“单击激活操作”界面。

    以下示例显示样本库中的协作 Portlet 应用程序样本中的 OrderDetailPortlet.java 的 actionPerformed() 方法。该 portlet 将 TRACKING_ID 参数传递至其 actionPerformed() 方法中的属性代理。此参数对应 portlet 的 WSDL 文件(在此示例中为 OrderDetail.wsdl)的绑定部分中的输出参数。

    OrderDetailPortlet.java
    OrderDetailPortlet.java
    
    
    ...
    	private static final String PREFIX = ""; //$NON-NLS-1$
    	public static final String ACTION_NAME = PREFIX + "actionName"; //$NON-NLS-1$
    	public static final String ORDER_DETAILS = PREFIX + "orderDetails"; //$NON-NLS-1$
    	public static final String ORDER_ID_ENTRY = PREFIX + "orderIdEntry"; //$NON-NLS-1$
    	public static final String ORDER_ID = PREFIX + "orderId"; //$NON-NLS-1$
    	public static final String ORDER_DETAIL_BEAN = PREFIX + "orderDetailBean"; //$NON-NLS-1$
    	public static final String ORDER_DETAIL = PREFIX + "orderDetail"; //$NON-NLS-1$
    	public static final String TRACKING_ID = PREFIX + "trackingId"; //$NON-NLS-1$
    ...
    	public void actionPerformed(ActionEvent event) {
    		String actionName = event.getActionString();		PortletRequest request = event.getRequest();		//An action causes the state to be modified
    		ShippingUtils.setLastModified(request);		if (getPortletLog().isDebugEnabled()) {
    			getPortletLog().debug(Messages.getString("OrderDetailPortlet_action_entry")); //$NON-NLS-1$
    		}		if (actionName.equals(ORDER_DETAILS)) {
    			request.getPortletSession().setAttribute(
    				ACTION_NAME,
    				ORDER_DETAILS);
    			request.getPortletSession().setAttribute(
    				ORDER_ID,
    				request.getParameter(ORDER_ID));			/*
    			 *  We do this as tracking id is an out param in the C2A WSDL file
    			 *  We write the tracking id in the request so it can be published by
    			 *  the broker in the same event cycle
    			 */
           OrderDetail od = ShippingDB.getOrderDetail(request.getParameter(ORDER_ID));
                request.getPortletSession().setAttribute(ORDER_DETAIL, od);
           request.setAttribute(TRACKING_ID, od.getTrackingId());
    			
            }  else if (actionName.equals(ORDER_ID_ENTRY)) {
    			request.getPortletSession().setAttribute(
    				ACTION_NAME, ORDER_ID_ENTRY);
    		}
    	}
    ...
    OrderDetail.wsdl(属性代理接收来自请求属性的跟踪标识参数。)
    ...
    <binding 
        name="OrderDetailBinding" 
        type="tns:OrderDetail_Service">
      <portlet:binding></portlet:binding>
      <operation name="order_Detail">
        <portlet:action name="orderDetails" type="simple" caption="Order.Details" description="Get.details.for.specified.order.id"/>
        <input>
          <portlet:param name="orderId" partname="order_Id" caption="order.id"/>
        </input>
        <output>
          <portlet:param name="trackingId" partname="tracking_Id" boundTo="request-attribute" caption="tracking.id"/> 
        </output>
      </operation>
    </binding>
    
    ...
    源 portlet(必填)
    指定要作为协作源启用的具体 portlet。

    例如,可以指定以下值:启用协作源对话框

  4. 单击确定。支持协作的 portlet 显示在“项目资源管理器”视图中并带有源 portlet 图标(Cooperative source portlet icon)。

启用协作源操作执行下列任务:

  1. 修改 web.xml 以添加 servlet 类条目来引用属性代理类:
    <servlet-class>com.ibm.wps.pb.wrapper.PortletWrapper</servlet-class>
    <init-param>
          <param-name>c2a-application-portlet-class</param-name>
       <param-value>servlet-class</param-value>
    </init-param>
  2. 修改 portlet.xml 以将配置参数添加至通过 WSDL 文件将操作显示给属性代理的每个具体 portlet,并指定本地语言资源文件的基本名称。
    <config-param>
        	<param-name>c2a-action-descriptor</param-name>
        <param-value>WSDL file</param-value>
    </config-param>
    <config-param>
        	<param-name>c2a-nls-file</param-name>
        <param-value>resource bundle name</param-value>
    </config-param>
  3. 将附加库 pbportlet.jar 导入到 portlet 项目中的 /WEB-INF/lib 以供属性代理使用。
  4. 创建包含以下部分的指定 WSDL 文件:
    <definitions>
    作为根。
    <types>
    使用“XML 模式数据类型”(XSD)声明数据类型。
    <message>
    输出消息。
    <portType>
    定义操作的抽象集合。<output>。
    <binding>
    始终扩展至 <portlet:binding> 以将该部分标识为 portlet 操作调用的协作绑定扩展。
相关概念
开发协作 portlet
相关任务
启用现有 portlet 以进行协作
启用带 Faces 操作的协作源
启用协作目标
插入单击激活操作 encodeProperty
插入单击激活操作 encodeProperties
编辑单击激活操作 encodeProperty
编辑单击激活操作 encodeProperties
相关信息
Web 服务描述语言(WSDL)1.1
WebSphere Portal 信息中心
XML 模式第二部分:数据类型
使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.