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