Habilitación de orígenes de cooperación

Para habilitar un origen cooperativa en preparación para conectar portlets, realice los pasos siguientes.

  1. En la vista Explorador de proyectos, seleccione un portlet o el Descriptor de despliegue de portlet. Los portlets se visualizan al ampliar el nodo Descriptor de despliegue de portlet en la carpeta del proyecto de portlet.
  2. Pulse en el portlet que desee con el botón derecho del ratón y, en el menú emergente, seleccione Cooperación > Habilitar origen. Se abre el diálogo Habilitar origen de cooperación. De forma alternativa, abra una página JSP, asegúrese de que sea la página que está activa, y seleccione Página > Cooperativo > Habilitar origen en el menú.
    Diálogo Habilitar origen de cooperación
  3. Introduzca valores en los campos siguientes:
    Tipo de datos
    Especifique un nombre de tipo de datos para los datos que va a transferir el portlet de origen. De forma alternativa, si el tipo de datos que desea publicar ya está declarado, pulse el botón Examinar para abrir el diálogo Seleccionar tipo y seleccione el tipo de datos WSDL que desee publicar. El tipo de datos y el espacio de nombres del archivo WSDL se especificarán en cada campo. El valor especificado se utilizará para declarar el tipo de datos en el elemento <types> del archivo WSDL.
    Espacio de nombres
    Especifique el espacio de nombres para el tipo. Por ejemplo, http://www.yourco.com/c2a. El valor especificado se almacenará en un archivo WSDL y se utilizará conjuntamente con el nombre Tipo de datos para identificar exclusivamente el tipo de datos de la propiedad de salida frente al entorno de tiempo de ejecución cooperativo.
    [Acción de origen] Nombre
    Especifique el nombre de acción del portlet. La ejecución de la acción especificada activará el intermediario de propiedad para que envíe la propiedad de salida a los portlets de destino.

    Para la API de portlet de IBM, el nombre de acción especificado aquí es el que este portlet recibe como ActionEvent.getActionString(). Para un portlet Faces que utiliza la API de portlet de IBM, el nombre de acción debe ser com.ibm.faces.portlet.ACTION. Para la API de portlet JSR 168, el nombre de acción especificado aquí es el valor del parámetro de petición de acción especificado en el campo Parámetro de nombre siguiente.

    Parámetro de nombre (opcional, solo para los portlets JSR 168)
    Especifique el parámetro de nombre de acción. Cuando el origen cooperativo es un portlet de API JSR 168, el intermediario de propiedad buscará este parámetro determinado en la petición de acción. En el ejemplo de diálogo anterior, cuando hay un parámetro con el nombre ACTION_NAME y el valor MyAction presente en una petición de acción, el intermediario de propiedad reconocerá que se está publicando una propiedad de salida y realizará las operaciones adecuadas para recuperar el valor de la propiedad de salida.

    Si se omite Parámetro de nombre, se utiliza un parámetro de petición de acción com.ibm.portal.propertybroker.action para especificar el nombre de la acción.

    Para los portlets Struts JSR 168, el parámetro de nombre de acción debe especificarse como spf_strutsAction.

    [Parameter] Parámetro
    Especifica el nombre del parámetro cuyo valor será la propiedad de salida de forma que el intermediario de propiedad pueda recuperarlo y ponerlo a disposición de los portlets de destino. Este valor se utiliza conjuntamente con el valor del campo Enlazado a que especifica la ubicación del parámetro de forma que el intermediario de propiedad puede determinar de forma precisa cómo recuperar la propiedad de salida publicada.
    Título (opcional)
    Especifique un título para el parámetro que contiene la propiedad de salida. Este título lo utiliza la herramienta de conexión para identificar una propiedad de salida determinada.
    Nota: Este campo toma una clave del paquete compuesto de recursos, tal como se describe a continuación, al contrario que el valor de serie real.
    Enlazado a
    Especifique dónde está ubicada la propiedad de salida publicada para que el intermediario de propiedad pueda recuperarla para ponerla a disposición de los portlets de destino. Este valor se utiliza conjuntamente con el valor del campo Parámetro que especifica el nombre del parámetro de forma que el intermediario de propiedad puede determinar precisamente cómo recuperar la propiedad de salida publicada. Actualmente, este atributo sólo puede especificar uno de los valores siguientes:
    • render-parameter: [sólo la API JSR 168] especifica que el valor está enlazado como un parámetro de presentación en ActionResponse (sólo los parámetros de salida).
    • request-parameter: especifica que el valor está enlazado como un parámetro en el objeto PortletRequest. Éste es el valor predeterminado si se ha omitido el atributo boundTo. Tenga en cuenta que para los parámetros de salida normalmente debe especificarse un valor distinto, ya que la implementación PortletRequest predeterminada proporcionada por WebSphere Portal no permite establecer parámetros durante el proceso de acciones.
    • request-attribute: especifica que el valor está enlazado como un atributo en el objeto PortletRequest.
    • session: especifica que el valor está enlazado al objeto PortletSession.

    En el ejemplo siguiente se muestra el método actionPerformed() de OrderDetailPortlet.java en la aplicación Portlets de cooperación de ejemplo de Sample Gallery (Galería de ejemplos). El portlet pasa el parámetro TRACKING_ID al intermediario de propiedad en su método actionPerformed(). Este parámetro corresponde a un parámetro de salida en el apartado de enlace del archivo WSDL del portlet ( OrderDetail.wsdl, en este ejemplo).

    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();		//Una acción provoca que se modifique el estado
    		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));			/*
    			 *  Esto se hace ya que el ID de seguimiento (tracking id) es un parámetro de salida del archivo C2A WSDL
    			 *  El "tracking id" se escribe en la petición, de forma que el intermediario
    			 *  puede publicarlo en el mismo ciclo de suceso
    			 */
    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 (el intermediario de propiedad recibe el parámetro "tracking ID" que le envía el atributo de petición.)
    ...
    <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>
    
    ...
    Paquete de recursos (opcional)
    Especifique el nombre base de un archivo de recursos de idioma nacional que contenga títulos y descripciones de acciones y propiedades. Si desea visualizar una serie legible en la herramienta de conexión de Portlet en el servidor o en Portal Designer, debe especificar un paquete compuesto de recursos con una clave especificada para que se corresponda con el campo Título.

    El nombre base especificado se definirá mediante el parámetro de configuración c2a-nls-file en el descriptor de despliegue de portlet, y se generará un paquete de recursos vacío bajo el nodo Recursos Java. Por ejemplo, si especifica nls.shippingc2a, edite los paquetes de recursos específicos de idioma adecuados: nls\shippingc2a<_lang>.properties para especificar títulos y descripciones traducidos en el formato key=texto traducido.

    Portlet de destino (obligatorio)
    Especifique el portlet concreto que debe habilitarse como destino de cooperación.
  4. Pulse Aceptar. El portlet habilitado por cooperación se muestra con un icono de portlet de origen ( Icono de portlet de origen de cooperación) en la vista Explorador de proyectos.

La acción Habilitar destino de cooperación realiza automáticamente las tareas siguientes:

  1. Modifica web.xml para añadir una entrada de clase servlet que haga referencia a las clases de intermediario de propiedad [Solo API de portlet de IBM]:
    <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. Modifica portlet.xml para añadir parámetros de configuración a cada portlet concreto que expone acciones al intermediario de propiedad a través del archivo WSDL, y especifica el nombre base de un archivo de recursos de idioma nacional.
    <config-param>
        	<param-name>c2a-action-descriptor</param-name>
        <param-value>archivo WSDL</param-value>
    </config-param>
    <config-param>
        	<param-name>c2a-nls-file</param-name>
        <param-value>nombre de paquete de recursos</param-value>
    </config-param>
  3. Importa una biblioteca adicional, pbportlet.jar, en/WEB-INF/lib en el proyecto portlet para que lo utilice el intermediario de propiedad. [Solo API de portlet de IBM]
  4. Crea el archivo WSDL especificado con los apartados siguientes:
    <definitions>
    Actúa como el directorio raíz.
    <types>
    El tipo de datos se declara utilizando los tipos de datos de esquema XML (XML Schema Datatypes - XSD).
    <message>
    Mensaje de salida
    <portType>
    Define un conjunto de operaciones abstracto. <output>.
    <binding>
    Siempre ampliado a <portlet:binding> para identificar el apartado como una extensión de enlace de cooperación para la invocación de acciones del portlet.
Conceptos relacionados
Desarrollo de portlets de cooperación
Tareas relacionadas
Habilitar cooperación para portlets existentes
Habilitación de orígenes de cooperación con una acción Faces
Habilitación de destinos de cooperación
Referencia relacionada
Web Services Description Language (WSDL) 1.1
Information Center de WebSphere Portal
Esquema XML Parte 2: Tipos de datos

(C) Copyright IBM Corporation 2002, 2005. Reservados todos los derechos.