連携ソースの使用可能化

ポートレットのワイヤリングを準備するために連携ソースを使用可能にするには、 次の手順を実行します。

  1. 「プロジェクト・エクスプローラー」ビューで、ポートレットまたは「ポートレット・デプロイメント記述子」を 選択する。ポートレット・プロジェクト・フォルダーの下の「ポートレット・デプロイメント記述子」ノードを展開すると、ポートレットが表示されます。
  2. 目的のポートレットを右クリックし、ポップアップ・メニューから「連携」 > 「ソースを使用可能にする」を選択する。 「連携ソースを使用可能にする」ダイアログが開きます。 もう 1 つの方法として、JSP ページを開き、このページがフォーカスされていることを 確認して、メニューから「ページ」 > 「連携」 > 「ソースを使用可能にする」と 選択します。
    「連携ソースを使用可能にする」ダイアログ
  3. 次のフィールドに値を入力する。
    データ型
    ソース・ポートレットによって転送されるデータのデータ型名を指定します。 または、公開したいデータ型がすでに宣言済みの場合は、「ブラウズ」ボタンをクリックして「データ型の選択」ダイアログを開き、 公開したい WSDL データ型を選択します。 WSDL ファイル内のデータ型と名前空間が、各フィールドに示されます。指定した値が、WSDL ファイルの <types> エレメントでデータ型を宣言するために使用されます。
    名前空間
    この型の名前空間を指定します。たとえば http://www.yourco.com/c2a です。 指定された値は WSDL ファイルに保管され、 「データ型」名と結合して使用され、 連携ランタイム環境に対して出力プロパティーのデータ型を一意的に識別します。
    [ソース・アクション] 名 ([Source action] Name)
    ポートレット・アクション名を指定します。指定されたアクションを実行することにより、 プロパティー・ブローカーが起動され、出力プロパティーをターゲット・ポートレットに 送信します。

    IBM® ポートレット API の場合、ここに指定するアクション名は、このポートレットが ActionEvent.getActionString() として受け取るアクション名です。 IBM ポートレット API を使用する Faces ポートレットの場合、アクション名は com.ibm.faces.portlet.ACTION である必要があります。 JSR 168 ポートレット API の場合、ここに指定するアクション名は、 以下の 「名前パラメーター」 に指定されるアクション要求パラメーターの値です。

    名前パラメーター (Name parameter) (JSR 168 ポートレットの場合のみオプション。)
    アクション名パラメーターを指定します。連携ソースが JSR 168 API ポートレットである場合、 プロパティー・ブローカーは、アクション要求において、この特定のパラメーターを探します。 上記のサンプル・ダイアログでは、ACTION_NAME という名前で MyAction という値のパラメーターがアクション要求にある場合、 プロパティー・ブローカーは、出力プロパティーが公開されていることを認識し、該当する操作を実行して、 出力プロパティー値を取得します。

    「名前パラメーター (Name parameter)」が省略されている場合は、 アクション要求パラメーター com.ibm.portal.propertybroker.action を使用してアクション名が指定されます。

    JSR 168 Struts ポートレットの場合は、 アクション名パラメーターを spf_strutsAction として 指定する必要があります。

    [パラメーター] パラメーター ([Parameter] Parameter)
    値が出力プロパティーとなるパラメーターの名前を指定します。 プロパティー・ブローカーは、このパラメーターを検索し、ターゲット・ポートレットに対して 使用可能にします。プロパティー・ブローカーが、 公開される出力プロパティーの検索方法を正確に判別することができるように、この値は、 パラメーターのロケーションを指定する「バインド先 (Bound to)」フィールドの値と結合して使用されます。
    キャプション (Caption) (オプション)
    出力プロパティーが含まれているパラメーターのキャプションを指定します。 このキャプションは、ワイヤリング・ツールが特定の出力プロパティーを識別するために使用します。
    注: このフィールドは、実際のストリング値とは対照的に、以下に示すように、リソース・バンドルのキーを取得します。
    バインド先 (Bound to)
    公開される出力プロパティーのロケーションを指定します。 プロパティー・ブローカーは、これを検索し、ターゲット・ポートレットに対して 使用可能にします。プロパティー・ブローカーが、 公開される出力プロパティーの検索方法を正確に判別することができるように、この値は、 パラメーターの名前を指定する「パラメーター」フィールドの値と結合して使用されます。 現在、この属性は、次の値の 1 つだけを指定できます。
    • レンダリング・パラメーター: [JSR 168 API のみ] これは、 値が ActionResponse 内のレンダリング・パラメーターとしてバインドされることを 指定します (出力パラメーターのみ)。
    • 要求パラメーター: これは、値が PortletRequest オブジェクト内のパラメーターとしてバインドされることを指定します。 これは、boundTo 属性が省略される場合のデフォルト値です。 出力パラメーターの場合、通常、デフォルトとして別の値が指定されなければならないことに注意してください。WebSphere® Portal による PortletRequest 実装では、アクションの処理中にパラメーターを設定できません。
    • 要求属性: これは、値が PortletRequest オブジェクト内の属性としてバインドされることを指定します。
    • セッション: これは、値が PortletSession オブジェクトにバインドされることを指定します。

    次の例は、サンプル素材集からの「連携ポートレット」アプリケーション・サンプル内の OrderDetailPortlet.java の actionPerformed() メソッドを示します。 このポートレットは、actionPerformed() メソッド内のプロパティー・ブローカーに TRACKING_ID パラメーターを渡します。 このパラメーターは、ポートレットの 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 (プロパティー・ブローカーは、要求属性からトラッキング ID パラメーターを受信します。)
    ...
    <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>
    
    ...
    リソース・バンドル (Resource bundle) (オプション)
    アクションとプロパティーのキャプションと説明を含む、各国語リソース・ ファイルのベース名を指定します。 サーバー上のポートレット・ワイヤリング・ツールまたは Portal Designer に読み取り可能なストリングを表示したい場合は、 「キャプション」 フィールドに一致するキーを指定して、リソース・バンドルを指定してください。

    指定したベース名は、ポートレット・デプロイメント記述子の c2a-nls-file 構成パラメーターによって定義され、空のリソース・バンドルは、「Java リソース」ノードの下に生成されます。 例えば、nls.shippingc2a と入力した場合には、適切な 言語固有リソース・バンドル nls¥shippingc2a<_lang>.properties を 編集して、key=translated text 形式で翻訳済みキャプションおよび説明を指定します。

    ソース・ポートレット (必須)
    連携ソースとして使用可能にするコンクリート・ポートレットを指定します。
  4. 「OK」をクリックする。「プロジェクト・エクスプローラー」ビューに、連携可能ポートレットが、ソース・ポートレット・アイコン (連携ソース・ポートレット・アイコン) と一緒に表示されます。

「連携ソースを使用可能にする」アクションは、次のタスクを実行します。

  1. プロパティー・ブローカー・クラスを参照するサーブレット・クラス・エントリーを追加するために、web.xml を変更します。[IBM ポートレット API のみ]
    <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. WSDL ファイルからプロパティー・ブローカーにアクションを公開する各コンクリート・ポートレットに構成パラメーターを追加し、 各国語リソース・ファイルのベース名を指定するように、portlet.xml を変更します。
    <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 をポートレット・プロジェクト内の /WEB-INF/lib にインポートします。[IBM ポートレット API のみ]
  4. 次のセクションを使用して、指定した WSDL ファイルを作成します。
    <definitions>
    ルートとして振る舞います。
    <types>
    データ型は、XML スキーマ・データ型 (XSD) を使用して宣言されます。
    <message>
    出力メッセージ。
    <portType>
    操作の要約コレクションを定義します。<output>。
    <binding>
    セクションをポートレット・アクション呼び出しのための連携バインディング拡張として識別するために、常に <portlet:binding> に拡張されます。
関連概念
連携ポートレットの開発
関連タスク
既存のポートレットを連携可能にする
Faces アクションを使用した連携ソースの使用可能化
連携ターゲットの使用可能化
関連資料
Web サービス記述言語 (WSDL) 1.1
WebSphere Portal Information Center
XML スキーマ・パート 2: データ型

(C) Copyright IBM Corporation 2002, 2005. All Rights Reserved.