3.10.1 サーブレットのマッピング

サーブレットを用いたポートレットを登録する場合,日立APIポートレットを登録する前に,WebアプリケーションのDD(web.xml)でサーブレットをマッピングする必要があります。サーブレットのマッピングとは,登録する日立APIポートレットで作成したサーブレットを呼び出すURLパターンを定義することです。定義したURLパターンを含むURLを開くことでサーブレットが実行されます。

なお,サーブレットのマッピング方法は,日立APIポートレットの種類(PARファイルを作成する日立APIポートレット,およびPARファイルを作成しない日立APIポートレット)によって異なります。

PARファイルを作成する日立APIポートレット
PARファイルを作成する前に,次の設定を行います。
  • 新規にweb.xmlを作成し,{PROJECT_HOME}¥WEB-INFに格納されているweb.xmlに追記したいマッピング定義を記述します。
  • デプロイ定義ファイル(hportlet.xml)の<device>タグの子要素<url>タグに,サーブレット名(記述例では「/Controller」)を記述します。デプロイ定義ファイルの詳細は,「3.13.2 デプロイ定義ファイル(hportlet.xml)の作成」を参照してください。
web.xmlに,マッピングするURLとしてポートレットをデプロイしたあとのディレクトリ下(記述例では「/adportlets/mvctest/Controller」)を設定します。ポートレットをデプロイした場合,次のディレクトリに作成されます。

/adportlets/<ポートレット名>/

web.xmlの記述例を次に示します。

<servlet>
 <servlet-name>Controller</servlet-name>
 <servlet-class>mydomain.myapp</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>Controller</servlet-name>
 <url-pattern>/adportlets/mvctest/Controller</url-pattern>
</servlet-mapping>

デプロイ定義ファイルでの記述例を次に示します。

<?xml version="1.0" encoding="Shift_JIS" ?>
<portlet-app>
 <portlet>
   <portlet-name>mvctest</portlet-name>
   <portlet-type>type</portlet-type>
   <portlet-parent>MultiJSP</portlet-parent>
   <title>title</title>
   <description>description</description>
   <windowtitle>windowtitle</windowtitle>
   <!-ポートレット起動パラメタ -->
   <config-param>
       <param-name>param-name</param-name>
       <param-value>param-value</param-value>
   </config-param>
   <supports>
       <timeout>timeout</timeout>
   </supports>
   <!-最大化・最小化等の設定 -->
   <allows>
       <maximize />
  </allows>
  <device media="HTML">
    <url>/Controller</url>
    <supports>
     <personalize />
    </supports>
  </device>
 </portlet>
</portlet-app>

PARファイルを作成しない日立APIポートレット
web.xmlにサーブレットのマッピング定義を追記します。
web.xmlは,次に示すディレクトリに格納しています。
格納ディレクトリ

{PROJECT_HOME}¥WEB-INF

web.xmlに,サーブレット(記述例では「Controller」)をマッピングするURLとしてポートレットのディレクトリ下(記述例では「/portlets/mvctest/Controller」)を設定します。
web.xmlの記述例を次に示します。

<servlet>
 <servlet-name>Controller</servlet-name>
 <servlet-class>mydomain.myapp</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>Controller</servlet-name>
 <url-pattern>/portlets/mvctest/Controller</url-pattern>
</servlet-mapping>