非同期コンテンツ集約について

ポートレットも一つのウェブアプリケーションです。 ポータルページ内に複数のポートレットを配置した場合、そのページにアクセスすると、ポートレットが配置してある数だけウェブアプリケーションにアクセスすることと同じことになります。

PALポータルでは、デフォルトでポータルページ内にあるポートレットに対して、1 つのポータルページへのアクセスでは複数のポートレットをマルチスレッドでアクセスします。 マルチスレッドでアクセスしたくない場合は、パラメータを変更することで同期的にポートレットを呼び出すことも可能です。

設定方法

設定ファイルの変更

webapps/palportal/WEB-INF/assembly/pipelines.xml で aggregatorValve に引数を変更できます。

...
  <bean id="aggregatorValve"
        class="org.apache.jetspeed.aggregator.AggregatorValve"
        init-method="initialize"
  >
   <constructor-arg>
       <ref bean="org.apache.jetspeed.aggregator.AsyncPageAggregator"/>
   </constructor-arg>
  </bean>
...

org.apache.jetspeed.aggregator.AsyncPageAggregator は非同期にコンテンツを集約します。 同期的にコンテンツ集約をしたい場合は、org.apache.jetspeed.aggregator.PageAggregator を利用してください。

タイムアウトの設定

pipelines.xmlの設定後、非同期で処理したいポートレットに対して、タイムアウト値を設定する必要があります。全てのポートレットをマルチスレッドで呼び出す場合は以下の変更を webapps/palportal/WEB-INF/assembly/aggregation.xml に加えます。

...
     <bean id="org.apache.jetspeed.aggregator.PortletTrackingManager" class="org.apache.jetspeed.aggregator.impl.PortletTrackingManagerImpl">
...
       <!-- Default portlet timeout in milliseconds:
        Zero means no portlet timeout option by default.
        -->
        <constructor-arg index='1'>
            <value>5000</value>
        </constructor-arg>
...
     </bean>
...

上記の設定の場合、5000ms のタイムアウト値が設定されます。

各ポートレットで個別に設定する場合には、対象のポートレットアプリケーションの jetspeed-portlet.xml で以下のような設定をします。

...
    <portlet>
        <portlet-name>PALWcmViewer</portlet-name>
        <js:metadata name="timeout">5000</js:metadata>
    </portlet>
...