uCosminexus Portal Framework　ポートレット開発ガイド

解説・文法書

3020-3-H73-50

目　　次

前書き

変更内容

はじめに

第1編　概要編

1.　uCosminexus Portal Frameworkのポートレット

1.1　uCosminexus Portal Frameworkで使用できるポートレット

1.2　ポートレットの開発の流れ

1.3　uCosminexus Portal Frameworkの機能に対応するポートレット

1.3.1　シングルサインオン対応ポートレット

1.3.2　ポートレット間通信対応ポートレット

1.3.3　クライアントサイドデータ通信対応ポートレット

1.3.4　ナビゲーションメニュー対応ポートレット

1.3.5　言語およびタイムゾーン切り替え対応ポートレット

1.3.6　新規ウィンドウ対応ポートレット

1.3.7　カスタマイズ情報の任意保存対応ポートレット

第2編　ポートレット開発編

2.　ポートレット全般の前提知識

2.1　HTML記述上の注意

2.1.1　ターゲットとするデバイス

2.1.2　ドキュメントベース

2.1.3　ネームスペース

2.1.4　エンコーディング

2.1.5　使用できないHTML要素，タグ

2.1.6　使用できないCHTML要素，タグ

2.1.7　使用できないHDML要素，タグ

2.1.8　パス名

2.2　ポートレットの動作

2.2.1　ポートレットの呼び出し

3.　カスタムポートレットの作成

3.1　カスタムポートレットとは

3.2　日立APIポートレットの作成手順

3.3　HTML記述上の注意（日立APIポートレット）

3.3.1　予約語

3.3.2　スクリプトを使用するには

3.3.3　フレームを使用するには

3.4　タグライブラリ使用時の注意

3.4.1　タグライブラリ全般の注意

3.4.2　URL変換タグライブラリ使用時の注意

3.5　パーソナライズ情報使用時の注意

3.6　uCosminexus Portal Frameworkのアクションモジュール

3.6.1　デフォルトアクションモジュール

3.6.2　アクションモジュール

3.7　日立APIポートレットの画面モード

3.7.1　日立APIポートレットの画面モードの種類

3.7.2　カスタマイズできる項目

3.7.3　アクションモジュールの呼び出し条件

3.8　日立APIポートレットの動作

3.8.1　日立APIポートレットのライフサイクル

3.8.2　URL変換

3.8.3　ポートレットユティリティタグライブラリ使用時の画面遷移

3.8.4　ポートレットユティリティクラスライブラリ使用時の画面遷移

3.9　ポートレットの無応答監視

3.9.1　無応答監視の処理シーケンス

3.9.2　無応答監視のinterruptの通知回数

3.10　サーブレットを用いたポートレットの開発

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

3.10.2　サーブレットからのJSPの呼び出し

3.10.3　JSPからのサーブレットの呼び出し

3.11　ポートレットの開発モデル

3.11.1　2層モデル

3.11.2　MVCモデル

3.12　デバイスに対応するための設定（日立APIポートレット）

3.13　日立APIポートレットのアーカイブの作成

3.13.1　日立APIポートレットのディレクトリ構成

3.13.2　デプロイ定義ファイル（hportlet.xml）の作成

3.13.3　WebアプリケーションのDD（web.xml）の作成

3.14　ダイレクト呼び出し対応ポートレットの開発

3.14.1　ダイレクト呼び出しとは

3.14.2　デプロイ定義ファイルの設定

3.14.3　ダイレクト呼び出し時のPOSTデータ

3.15　標準APIポートレットの作成手順

3.16　HTML記述上の注意（標準APIポートレット）

3.16.1　予約語

3.16.2　スクリプトを使用するには

3.16.3　標準APIポートレットで使用できないタグ

3.17　標準APIポートレットの画面モード

3.18　標準APIポートレットの動作

3.18.1　標準APIポートレットのライフサイクル

3.18.2　URL変換

3.19　リクエストコントローラ機能

3.19.1　キャッシュの初期化

3.19.2　セキュア通信判定

3.19.3　コンテンツタイプ判定

3.19.4　ユーザ情報取得

3.19.5　processAction()実行

3.19.6　リダイレクト判定

3.19.7　ポートレットウィンドウの情報更新

3.20　ポートレットタイトルの変更

3.21　コンテンツキャッシュ制御

3.21.1　キャッシュの登録

3.21.2　キャッシュの破棄

3.21.3　キャッシュの有効期間

3.22　カスタムウィンドウステート

3.22.1　カスタムウィンドウステートの設定

3.22.2　カスタムウィンドウステートの使用

3.22.3　カスタムウィンドウステート使用時の注意事項

3.23　Strutsフレームワークの使用（標準APIポートレット）

3.23.1　Strutsアプリケーションの開発

3.23.2　ポートレットを作成するための設定

3.23.3　日立APIの使用

3.24　デバイスに対応するための設定（標準APIポートレット）

3.25　標準APIポートレットのアーカイブの作成

3.25.1　標準APIポートレットのディレクトリ構成

3.25.2　ポートレットアプリケーションDD（portlet.xml）の作成

4.　Fileポートレットの作成

4.1　Fileポートレットとは

4.2　Fileポートレットの作成手順

4.3　Fileポートレット開発時の注意

4.3.1　エンコーディング

4.3.2　リンク・インラインオブジェクトの指定方法

4.4　デバイスに対応するための設定

5.　Webポートレットの作成

5.1　Webポートレットとは

5.1.1　Webポートレットの種類

5.2　Webポートレットの作成手順

5.3　Webポートレット全般の前提知識

5.3.1　HTMLバージョン

5.3.2　Webポートレットを取り込むための条件

5.4　Webポートレット作成時の注意事項

5.4.1　Multi Web Portlet作成時の注意事項

5.4.2　Web App PortletおよびWeb Page Portlet作成時の注意事項

5.5　デバイスに対応するための設定（Multi Web Portlet）

6.　分散ポートレットの作成

6.1　分散ポートレットとは

6.2　分散ポートレットの作成手順

6.3　分散ポートレットを使用するときの注意事項

6.3.1　制限事項

6.3.2　運用上の注意

6.4　分散ポートレット作成のガイドライン

6.4.1　使用できる形式

6.4.2　使用できない形式

第3編　特定の機能に対応するポートレットの開発編

7.　シングルサインオン対応ポートレットの開発

7.1　シングルサインオンとは

7.2　バックエンドシステムとの連携

7.2.1　疎連携

7.2.2　密連携

7.3　シングルサインオン対応ポートレットの流れ

7.3.1　セッションID引き継ぎ

7.3.2　DB連携

7.4　バックエンドシステムのポートレット対応

7.4.1　バックエンドシステムの対応（セッションID引き継ぎ）

7.4.2　バックエンドシステムの対応（DB連携）

7.5　シングルサインオン対応ポートレットの作成

7.5.1　ログインモジュール

7.5.2　ポートレット（index.jsp）

7.5.3　設定ファイルの記述例

7.5.4　バックエンドシステム

8.　ポートレットイベント対応ポートレットの開発

8.1　ポートレットイベント機能とは

8.2　ポートレットイベント機能の処理の流れ

8.2.1　ポートレットイベント制御

8.2.2　デフォルトアクションモジュール

8.2.3　アクションモジュール

8.3　ポートレットイベント対応ポートレットの開発手順

8.3.1　ポートレットコンテンツの作成

8.3.2　ポートレットアクションモジュールの作成

8.3.3　ポートレットのデプロイ

8.4　アクションモジュールで利用できるAPI

8.4.1　イベント処理を実行するためのAPI

8.4.2　uCosminexus Portal Frameworkが提供しているBeanを利用するためのAPI

8.5　ポートレットアクションイベント機能

8.5.1　概要

8.5.2　詳細

8.5.3　利用方法

8.5.4　ポートレットアクションイベントで利用できるAPI

8.6　ポートレット間通信イベント機能

8.6.1　概要

8.6.2　詳細

8.6.3　利用方法

8.6.4　ポートレット間通信イベントで利用できるAPI

8.7　ポートレットイベント対応ポートレットの開発例

8.7.1　ポータル業務画面の処理の設計

8.7.2　インタフェースの設定

8.7.3　ポートレットアクションモジュールの開発

9.　クライアントサイドデータ通信対応ポートレットの開発

9.1　クライアントサイドデータ通信とは

9.1.1　クライアントサイドデータ通信の処理概要

9.1.2　ドラッグ&ドロップ

9.1.3　データフォーム転送

9.1.4　クライアントサイドデータ通信機能がサポートするHTML

9.1.5　データ保管領域

9.2　クライアントサイドデータ通信対応ポートレットを開発する前に

9.2.1　前提条件

9.2.2　提供ファイル

9.2.3　クライアントサイドデータ通信対応ポートレットを開発するための定義

9.3　ドラッグ&ドロップの定義方法（パターン1）

9.3.1　定義規則

9.3.2　定義例

9.4　補助ウィンドウを使用したデータフォーム転送の定義方法（パターン2）

9.4.1　定義規則

9.4.2　定義例

9.5　ボタンを使用したデータフォーム転送の定義方法（パターン3）

9.5.1　定義規則

9.5.2　定義例

10.　ナビゲーションメニュー対応ポートレットの開発

10.1　ナビゲーションメニュー対応ポートレットを開発する前に

10.1.1　ナビゲーションメニュー対応ポートレットに設定する内容

10.1.2　デプロイ定義ファイルの設定

10.2　ナビゲーションメニュー対応ポートレットの画面遷移

10.3　ナビゲーションメニュー対応ポートレットの開発例

10.3.1　サンプルの提供方法および動作確認方法

10.3.2　画面の開発

10.3.3　デプロイ定義ファイルの開発

11.　言語およびタイムゾーン切り替え対応ポートレットの開発

11.1　言語切り替え対応ポートレットの開発方法

11.1.1　言語切り替え対応ポートレットの開発

11.1.2　言語切り替え対応ポートレットの開発例

11.2　タイムゾーン切り替え対応ポートレットの開発方法

11.2.1　タイムゾーン切り替え対応ポートレットの開発

11.2.2　タイムゾーン切り替え対応ポートレットの開発例

12.　新規ウィンドウ対応ポートレットの開発

12.1　新規ウィンドウ対応ポートレットを開発する前に

12.1.1　新規ウィンドウの画面構成

12.1.2　新規ウィンドウ対応ポートレットの開発上の注意

12.2　新規ウィンドウ対応ポートレットの開発例

12.2.1　新規ウィンドウ画面へのリンクを表示するコンテンツ

12.2.2　新規ウィンドウ画面を表示するコンテンツ

13.　カスタマイズ情報の任意保存対応ポートレットの開発

13.1　カスタマイズ情報任意保存機能の使用方法

13.2　カスタマイズ情報任意保存機能使用時のポートレットの開発例

第4編　ライブラリ編

14.　ライブラリ

14.1　ポートレットを開発するためのライブラリ

14.2　ポートレットユティリティタグライブラリ

ut:cache

ut:convert

ut:logindata

ut:portletURI

ut:secureURI

uu:a

uu:action

uu:area

uu:ce

uu:choice

uu:display

uu:entry

uu:form

uu:frame

uu:iframe

uu:img

uu:input

uu:object

uu:script

14.3　ポートレットモードタグライブラリ

PortalAC:ModeDeniedList

PortalAC:isModeDenied

14.4　ポートレットユティリティクラスライブラリ

jp.co.hitachi.soft.portal.portlet.PortletException

jp.co.hitachi.soft.portal.portlet.PortletURI

jp.co.hitachi.soft.portal.portlet.PortletUtils

14.5　ポートレット情報取得Bean

jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean

jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean.Mode

14.6　ユーザ情報取得Bean

jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean

14.7　ログ出力Bean

jp.co.hitachi.soft.portal.api.log.PortletLog

14.8　UserAgent情報取得Bean

jp.co.hitachi.soft.portal.portlet.beans.UserAgentInfoBean

14.9　ポートレットイベントAPI

jp.co.hitachi.soft.portal.portlet.api.DefaultActionModule

14.10　ポートレットパラメタ取得インタフェース

jp.co.hitachi.soft.portal.api.portlets.PortletParameters

14.11　クライアントサイドデータ通信タグライブラリ

14.11.1　タグライブラリの概要

14.11.2　タグライブラリのタグ階層

14.11.3　タグライブラリの説明

14.12　クライアントサイドデータ通信JavaScript

14.12.1　クライアントサイドデータ通信JavaScriptの概要

14.12.2　関数の説明

14.13　クライアントサイドデータ通信クラスライブラリ

jp.co.hitachi.soft.portal.api.csdc.lib.CsdcUtil

14.14　ダイレクト呼び出し結果取得API

jp.co.hitachi.soft.portal.api.request.PortalHttpRequest

14.15　ナビゲーションメニューのタグライブラリ

14.15.1　タグライブラリの一覧

14.15.2　タグライブラリの説明

14.16　ユーザロケール情報取得API

jp.co.hitachi.soft.portal.api.user.LocaleData

14.17　ストリングリソース取得API

jp.co.hitachi.soft.portal.api.util.StringResource

14.18　ユーザ登録API

jp.co.hitachi.soft.portal.api.user.PortalUserAccountBean

14.19　ユーザアカウント情報取得API

jp.co.hitachi.soft.portal.om.security.PortalUserAccount

14.20　カスタムウィンドウステートAPI

jp.co.hitachi.soft.portal.api.UCPFWindowState

14.21　拡張Strutsタグライブラリ

html:form

html:link

html:rewrite

付録

付録A　ポートレットのサンプル

付録A.1　Hello Worldポートレット

付録A.2　ハイパーリンクの作成

付録A.3　アトリビュート操作

付録A.4　ログインログアウトの処理

付録A.5　ユーザごとにパーソナライズするポートレット

付録A.6　キャッシュを使用したポートレット

付録A.7　ログを出力するポートレット

付録A.8　XSLTを用いたポートレット

付録A.9　統合ユーザ管理フレームワークとの連携

付録A.10　シングルサインオンのためのポートレット

付録A.11　フレームを使用したポートレット

付録A.12　セキュアなポートレットの開発

付録A.13　バックエンドシステム連携

付録A.14　ファイルをアップロードするポートレット

付録A.15　プッシュ型ポートレット

付録A.16　プラグインモジュールと連携するポートレット

付録B　セルフユーザ登録のサンプルポートレット

付録C　各バージョンの変更内容

付録D　このマニュアルの参考情報

付録D.1　関連マニュアル

付録D.2　このマニュアルでの表記

付録D.3　英略語

付録E　用語解説

索引

[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2009, 2013, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2009, 2013, Hitachi INS Software, Ltd.

前書き

■ 対象製品

P-2443-7394　 uCosminexus Portal Framework　 09-00（適用OS：Windows Server 2008 x86，Windows Server 2008 x64，Windows Server 2008 R2，Windows Server 2012，Windows Vista，Windows XP，Windows 7，Windows 8）
P-2943-7394　 uCosminexus Portal Framework　 09-00（適用OS：Windows Server 2008 x64，Windows Server 2008 R2，Windows Server 2012）

■ 輸出時の注意

本製品を輸出される場合には、外国為替及び外国貿易法の規制並びに米国輸出管理規則など外国の輸出関連法規をご確認の上、必要な手続きをお取りください。
なお、不明な場合は、弊社担当営業にお問い合わせください。

■ 商標類

auは，KDDI株式会社の登録商標です。
EZwebは，KDDI株式会社の登録商標です。
FirefoxはMozilla Foundationの登録商標です。
Internet Explorerは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
iモードは，株式会社エヌ・ティ・ティ・ドコモの商標です。
MacromediaおよびMacromedia Flashは，Macromedia, Inc.の米国およびその他の国における商標または登録商標です。
Netscapeは，AOL Inc.の登録商標です。
OracleとJavaは，Oracle Corporation 及びその子会社，関連会社の米国及びその他の国における登録商標です。
UNIXは，The Open Groupの米国ならびに他の国における登録商標です。
Windowsは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Serverは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Vistaは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
その他記載の会社名，製品名は，それぞれの会社の商標もしくは登録商標です。
This product includes software developed by the Apache Software Foundation (http://www.apache.org/).
This product includes software developed by the Java Apache Project <http://java.apache.org/>.

■ マイクロソフト製品の表記について

このマニュアルでは，マイクロソフト製品の名称を次のように表記しています。

正式名称 | 略称
Microsoft(R) Internet Explorer(R) | Internet Explorer
Windows(R) Internet Explorer(R)
Microsoft(R) Windows(R) 7 Enterprise | Windows 7
Microsoft(R) Windows(R) 7 Professional
Microsoft(R) Windows(R) 7 Ultimate
Microsoft(R) Windows(R) 8 (Core Edition) | Windows 8
Microsoft(R) Windows(R) 8 Pro
Microsoft(R) Windows(R) 8 Enterprise
Microsoft(R) Windows Server(R) 2008 Enterprise 32-bit 日本語版 | Windows Server 2008 x86
Microsoft(R) Windows Server(R) 2008 Standard 32-bit 日本語版
Microsoft(R) Windows Server(R) 2008 Enterprise 日本語版 | Windows Server 2008 x64
Microsoft(R) Windows Server(R) 2008 Standard 日本語版
Microsoft(R) Windows Server(R) 2008 R2 Enterprise 日本語版 | Windows Server 2008 R2
Microsoft(R) Windows Server(R) 2008 R2 Standard 日本語版
Microsoft(R) Windows Server(R) 2012 Standard | Windows Server 2012
Microsoft(R) Windows Server(R) 2012 Datacenter
Microsoft(R) Windows Vista(R) Business | Windows Vista
Microsoft(R) Windows Vista(R) Enterprise
Microsoft(R) Windows Vista(R) Ultimate
Microsoft(R) Windows(R) XP Professional Operating System | Windows XP

このマニュアルでは，Windows Server 2008を前提として操作方法を説明しています。ご使用の環境が異なる場合は，操作方法を読み替えてください。なお，特に断りのない場合は，Windows 7，Windows 8，Windows Server 2008 x86，Windows Server 2008 x64，Windows Server 2008 R2，Windows Server 2012，Windows Vista およびWindows XPを総称してWindowsと表記しています。

■ 発行

2013年6月　3020-3-H73-50

■ 著作権

All Rights Reserved. Copyright (C) 2009, 2013, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2009, 2013, Hitachi INS Software, Ltd.

変更内容

変更内容(3020-3-H73-50)　uCosminexus Portal Framework　09-00

本文についての変更はありません。

はじめに

このマニュアルは，次のプログラムプロダクトに対応するポートレットの開発方法，および開発時に使用するAPIについて説明したものです。

uCosminexus Portal Framework

uCosminexus Portal Frameworkは，企業ポータルを構築および運用するソフトウェアです。

対象読者

このマニュアルは，uCosminexus Portal Frameworkに対応するポートレットを開発される方を対象としています。また，次の知識を持っていることを前提としています。

Cosminexus上でサーブレットやJSPを運用できる知識

HTMLおよびXMLの知識

マニュアルの構成

このマニュアルは，次に示す編，章と付録から構成されています。

第1編　概要編

第1章　uCosminexus Portal Frameworkのポートレット

uCosminexus Portal Frameworkで使用できるポートレット，ポートレットの開発の流れおよびuCosminexus Portal Frameworkの特定の機能に対応するポートレットの概要について説明しています。

第2編　ポートレット開発編

第2章　ポートレット全般の前提知識

すべてのポートレットを作成する際に，前提となる知識について説明しています。

第3章　カスタムポートレットの作成

カスタムポートレットを作成する際の手順，および注意事項について説明しています。

第4章　Fileポートレットの作成

Fileポートレットを作成する際の手順，および注意事項について説明しています。

第5章　Webポートレットの作成

Webポートレットを作成する際の手順，前提知識，および注意事項について説明しています。

第6章　分散ポートレットの作成

分散ポートレットを作成する際の手順，および注意事項について説明しています。

第3編　特定の機能に対応するポートレットの開発編

第7章　シングルサインオン対応ポートレットの開発

シングルサインオン機能に対応したポートレットの開発方法について説明しています。

第8章　ポートレットイベント対応ポートレットの開発

ポートレットイベント機能に対応したポートレットの開発方法について説明しています。

第9章　クライアントサイドデータ通信対応ポートレットの開発

クライアントサイドデータ通信機能に対応したポートレットの開発方法について説明しています。

第10章　ナビゲーションメニュー対応ポートレットの開発

ナビゲーションメニューにメニューとして登録できるポートレットの開発方法について説明しています。

第11章　言語およびタイムゾーン切り替え対応ポートレットの開発

言語およびタイムゾーンの切り替え機能に対応したポートレットの開発方法について説明しています。

第12章　新規ウィンドウ対応ポートレットの開発

ナビゲーションメニューから表示する場合などに新規ウィンドウに表示できるポートレットの開発方法について説明しています。

第13章　カスタマイズ情報の任意保存対応ポートレットの開発

カスタマイズ情報の任意保存機能に対応したポートレットの開発について説明しています。

第4編　ライブラリ編

第14章　ライブラリ

uCosminexus Portal Frameworkで提供するライブラリについて説明しています。

付録A　ポートレットのサンプル

uCosminexus Portal Frameworkで作成できるポートレットの開発例について説明しています。

付録B　セルフユーザ登録のサンプルポートレット

セルフユーザ登録のサンプルポートレットについて説明しています。

付録C　各バージョンの変更内容

このマニュアルでの各バージョンの変更内容について説明しています。

付録D　このマニュアルの参考情報

関連マニュアル，このマニュアルで使用している略語の意味などを説明しています。

付録E　用語解説

このマニュアルで使用する用語について説明しています。

読書手順

このマニュアルは，利用目的に合わせて次の個所をお読みいただくことをお勧めします。

操作方法の説明で使用する記号

このマニュアルでは，次に示す記号を使用して操作方法を説明しています。

記号 | 意味
｛　｝ | ユーザが指定する内容を示します。
［　］ | ウィンドウのボタン，チェックボックスの項目名，画面名，または画面内の項目名を示します。

構文の説明で使用する記号

このマニュアルでは，次に示す記号を使用して構文の要素を説明しています。

記号
意味

｜
横に並べられた複数の項目に対する項目間の区切りを示し，「または」の意味を表します。
（例）A｜B
AまたはBを指定することを示します。

｛　｝
この記号で囲まれている複数の項目のうちから一つを選択することを意味します。項目が横に並べられ，記号｜で区切られている場合は，そのうちの一つを選択します。
（例）｛A｜B｜C｝
　A，B，またはCのどれかを指定することを示します。

［　］
この記号で囲まれている項目は省略してもよいことを示します。複数の項目が横に並べて記述されている場合には，すべてを省略するか，記号｛　｝と同じくどれか一つを選択します。
（例）　［A］
　「何も指定しない」か「Aを指定する」ことを示します。

図中で使用する記号

このマニュアルの図中で使用する記号を，次のように定義します。

1.　uCosminexus Portal Frameworkのポートレット

この章では，uCosminexus Portal Frameworkで使用できるポートレット，ポートレットの開発の流れ，およびuCosminexus Portal Frameworkの特定の機能に対応するポートレットについて説明します。

＜この章の構成＞

1.1　uCosminexus Portal Frameworkで使用できるポートレット

1.2　ポートレットの開発の流れ

1.3　uCosminexus Portal Frameworkの機能に対応するポートレット

1.1　uCosminexus Portal Frameworkで使用できるポートレット

uCosminexus Portal Frameworkとは，企業ポータルを構築および運用するフレームワークです。企業の内外にある多種多様なコンテンツ・業務システムの情報を集約する機能や，集約した情報をユーザ一人一人に対して最適な情報になるように組み合わせて提供する機能などを備えています。これらの機能によって，効果的な企業ポータルを構築できます。

uCosminexus Portal Frameworkでは，構築した企業ポータルに設定するポートレットを開発する必要があります。このマニュアルでは，ポートレットの開発方法について説明します。

uCosminexus Portal Frameworkでは，次のポートレットを使用できます。

カスタムポートレット

Fileポートレット※

Webポートレット

分散ポートレット

Webコンテンツポートレット

注※　正式名称はMulti File Portletですが，このマニュアルではFileポートレットと表記します。

uCosminexus Portal Frameworkが各種ポートレットを取り込んで表示する処理を次の図に示します。

図1-1　ポートレットの取り込み

それぞれのポートレットの特長を示します。

カスタムポートレット

カスタムポートレットは，JSPやサーブレットの技術を用いて独自のポートレットを作成するポートレットです。動的なページを作成したり，企業独自の業務システムをポータルに統合したり，既存のアプリケーションと連携したりできます。例えば，既存のメールシステムをポータルに統合することで，ユーザはポータルからメールを読めます。また，携帯電話（ｉモードおよびEZweb）からアクセスできるポートレットも作成できます。

カスタムポートレットには次の2種類があります。

日立APIポートレット
uCosminexus Portal FrameworkのAPIを用いてJSPおよびサーブレットで作成するポートレットです。

標準APIポートレット
Java Portlet Specification 1.0またはStrutsフレームワークに従って作成するポートレットです。

カスタムポートレットのコンテンツを開発する場合は，ポートレットの開発方法，開発時に使用するAPIの知識が必要です。ポートレットの開発方法，開発時に使用するAPIの知識の詳細は，「2.　ポートレット全般の前提知識」，「3.　カスタムポートレットの作成」および「14.　ライブラリ」を参照してください。また，日立APIポートレットで，uCosminexus Portal Frameworkの特定の機能に対応する開発をしたい場合は，次の個所を参照してください。

「7.　シングルサインオン対応ポートレットの開発」

「8.　ポートレットイベント対応ポートレットの開発」

「9.　クライアントサイドデータ通信対応ポートレットの開発」

「10.　ナビゲーションメニュー対応ポートレットの開発」

「11.　言語およびタイムゾーン切り替え対応ポートレットの開発」

「12.　新規ウィンドウ対応ポートレットの開発」

「13.　カスタマイズ情報の任意保存対応ポートレットの開発」

Fileポートレット

Fileポートレットは，HTML，CHTML，またはHDMLのどれかで記述されたファイルをポートレットとして表示します。例えば，イントラネット上の各部署のお知らせを，一つのFileポートレットに統合できます。携帯電話（ｉモードおよびEZweb）からアクセスできるポートレットも作成できます。

このポートレットのコンテンツを開発するには，HTML，CHTML，またはHDMLについての知識が必要です。

このポートレットを開発する場合は，「2.　ポートレット全般の前提知識」および「4.　Fileポートレットの作成」を参照してください。

Webポートレット

Webポートレットは，HTMLで記述されたWebページをポータルに取り込むポートレットです。ポータルプロジェクト内のローカルコンテンツ，および外部のWebサーバのコンテンツをポータルに統合できます。Webページをポートレットとしてポータルに統合することで，ベーシック認証，プロキシ認証，およびフォーム認証に対してシングルサインオンができるようになります。また，コンテンツをフィルタリングしてWebページの一部分をポータルに取り込めます。例えば，顧客情報などのインターネットの情報をポータルに取り込めます。また，携帯電話（ｉモード，およびEZweb）からアクセスできるポートレットも作成できます。

このポートレットは，コンテンツを開発する必要はありません。Portal Managerでポータルに登録するときに，WebページのコンテンツのURLなどを設定することでポートレットが作成されます。このポートレットを作成するには，Webサイト開発についての知識が必要です。Portal ManagerでWebポートレットをポータルに登録する方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

このポートレットを作成する場合は，「2.　ポートレット全般の前提知識」，および「5.　Webポートレットの作成」を参照してください。

分散ポートレット

分散ポートレットは，ほかのポータル上に配置されたポートレットを自ポータルに取り込むポートレットです。例えば，他事業所で構築しているポータル上のポートレットを，自ポータルに取り込めます。

このポートレットは，コンテンツを開発する必要はありません。Portal Managerでポータルに登録するときに，取り込む分散ポートレットを配置しているサーバのサーバアドレスなど設定することでポートレットが作成されます。このポートレットを作成するには，ポータルサイトの開発についての知識が必要です。Portal Managerで分散ポートレットをポータルに登録する方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「分散ポートレットの設定」の説明を参照してください。

このポートレットを作成する場合は，「2.　ポートレット全般の前提知識」，および「6.　分散ポートレットの作成」を参照してください。

Webコンテンツポートレット

Webコンテンツポートレットは，外部のWebサーバからコンテンツを取得し，取得したデータの表示方法を加工してポータルに表示するポートレットです。取得できるコンテンツは，HTML，RSS，またはXMLで記述されたページです。

Webコンテンツポートレットは，運用管理ポートレットでコンテンツの取得先や加工の方法などを設定することで，ポートレットが作成されます。登録の作業は必要ありません。

運用管理ポートレットでWebコンテンツポートレットを作成する方法については，マニュアル「uCosminexus Portal Framework　運用管理者ガイド」の「Webコンテンツポートレットを作成する」の説明を参照してください。

1.2　ポートレットの開発の流れ

ここでは，ポートレットの開発の流れについて説明します。ポートレットの開発の流れを次の図に示します。

図1-2　ポートレットの開発の流れ

手順

ポートレットの目的を検討します。
だれが何をするためのポートレットを開発したいのかを整理します。

ポートレットの種類を決定します。
1.で整理した目的に応じて，ポートレットの種類を決定します。コンテンツの種類に応じて，カスタムポートレット，Fileポートレット，Webポートレット，またはWebコンテンツポートレットのどれかを選択します。また，システムの規模に応じて，分散ポートレットが必要かどうかを検討します。

ポートレットの機能を決定します。
カスタムポートレット，およびFileポートレットの場合
各ポートレットの機能，およびターゲットとするデバイス（PC，ｉモード，またはEZweb）を決定します。
カスタムポートレットの日立APIポートレットのコンテンツを開発する場合，uCosminexus Portal Frameworkが提供する機能から必要な機能を取捨選択して，ポートレットの機能を決定します。

uCosminexus Portal Frameworkの特定の機能に対応するかどうか
uCosminexus Portal Frameworkの特定の機能に対応するポートレットについては，「1.3　uCosminexus Portal Frameworkの機能に対応するポートレット」を参照してください。

どのライブラリを利用して機能を実現するか
uCosminexus Portal Frameworkで提供しているライブラリについては，「14.　ライブラリ」を参照してください。また，ライブラリを使用する前には，「2.　ポートレット全般の前提知識」を参照してください。

Webポートレット，分散ポートレット，およびWebコンテンツポートレットの場合
Webポートレットを作成する場合，どのWebページのコンテンツをどのようにポータルに取り込むかを決定します。
分散ポートレットを作成する場合，どのポータルのどのポートレットを自ポータルに取り込むかを決定します。
Webコンテンツポートレット作成する場合，どのWebページのコンテンツをどのように加工し，どのテンプレートでポータルに取り込むかを決定します。

ポートレットのコンテンツを開発します。
カスタムポートレット，およびFileポートレットの場合
ターゲットとするデバイスに対応するHTML/CHTML/HDMLのバージョンでコンテンツを開発する必要があります。uCosminexus Portal Frameworkが対応している各言語のバージョンについては，「2.1.1　ターゲットとするデバイス」を参照してください。
カスタムポートレットのコンテンツ作成の詳細は，「3.　カスタムポートレットの作成」を参照してください。
Fileポートレットのコンテンツ作成の詳細は，「4.　Fileポートレットの作成」を参照してください。
Webポートレット，および分散ポートレットの場合
コンテンツを作成する必要はありません。次の5.に進んでください。
Webコンテンツポートレットの場合
コンテンツ，ポートレットの作成，およびポータルへの登録をする必要はありません。運用管理ポートレットでパラメタを設定して，7.へ進んでください。

ポートレットを作成します。
ターゲットとするデバイスに，ポートレットを表示するための設定を行います。各ポートレットの詳細設定は，このマニュアルの次の個所を参照してください。

「3.　カスタムポートレットの作成」

「4.　Fileポートレットの作成」

「5.　Webポートレットの作成」

「6.　分散ポートレットの作成」

ポートレットをポータルに登録します。
ポートレットの登録方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレットの登録」の説明を参照してください。

ポートレットをデバッグします。
登録したポートレットが正しく動作するかどうかを確認します。ポートレットを確認するためにはポータルサーバを再起動する必要があります。ポータルサーバの起動方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポータルの起動と終了」の説明を参照してください。

1.3　uCosminexus Portal Frameworkの機能に対応するポートレット

ここでは，uCosminexus Portal Frameworkで開発できる，特定の機能に対応するポートレットについて説明します。

＜この節の構成＞

1.3.1　シングルサインオン対応ポートレット

1.3.2　ポートレット間通信対応ポートレット

1.3.3　クライアントサイドデータ通信対応ポートレット

1.3.4　ナビゲーションメニュー対応ポートレット

1.3.5　言語およびタイムゾーン切り替え対応ポートレット

1.3.6　新規ウィンドウ対応ポートレット

1.3.7　カスタマイズ情報の任意保存対応ポートレット

1.3.1　シングルサインオン対応ポートレット

ユーザがuCosminexus Portal Frameworkにログインすると，ユーザIDが異なるシステムをポータル画面から使用できます。この機能をシングルサインオンといいます。この機能を使用することで，ユーザは，システムごとにログインしたり，作業ごとにシステムを使い分けたりする必要がありません。

シングルサインオンの概要を次の図に示します。

図1-3　シングルサインオンの概要

シングルサインオンに対応するポートレットの開発方法については，「7.　シングルサインオン対応ポートレットの開発」を参照してください。

1.3.2　ポートレット間通信対応ポートレット

ポートレットのコンテンツを表示するだけではなく，ポートレット間で情報を通信できます。このため，各ポートレットで行っている業務情報の共有化および分散化を図り，業務を連携できます。この機能をポートレット間通信といいます。

ポートレット間通信の例を次の図に示します。

図1-4　ポートレット間通信によってポートレットを連携させた例

ユーザが＜リンク集＞ポートレットから作業Aを選択すると，＜デスクトップ＞ポートレットおよび＜ヘルプ＞ポートレットに通知されます。この通知によって，作業Aの内容が＜デスクトップ＞ポートレットに，作業Aの解説が＜ヘルプ＞ポートレットに表示されます。

ポートレット間通信によってポートレットを連携する場合の，ポートレットの開発方法については，「8.　ポートレットイベント対応ポートレットの開発」を参照してください。

1.3.3　クライアントサイドデータ通信対応ポートレット

データを入力する項目が多くある場合，直接入力では入力ミスが発生しやすくなります。このような入力ミスを減らすため，ポートレットでデータを入力するときに，別のポートレットから該当するデータをドラッグ&ドロップしたり，コピーボタンを利用してコピーしたりして入力できます。この機能をクライアントサイドデータ通信といいます。

クライアントサイドデータ通信には，次の機能があります。

ドラッグ&ドロップ機能
ポートレットにデータを入力するときに，別のポートレットからデータをドラッグ&ドロップして入力する機能です。例えば，メールのポートレットでメールを作成する場合に，電子アドレス帳のポートレットから宛先をドラッグ&ドロップしてメールに貼り付けることができます。

データフォーム転送機能
ポートレットにデータを入力するときに，データを選択して入力する機能です。この機能には，次の二つの方法があります。

補助ウィンドウを使用する方法
別のポートレットから取得した入力候補となるデータを補助ウィンドウに表示します。このウィンドウで目的のデータを選択することで，データを入力できます。例えば，メールのポートレットでメールを作成する場合，宛先のボタンをクリックすると，補助ウィンドウが表示されます。ここに，電子アドレス帳のポートレットから取得した宛先の候補が表示されます。目的の宛先を選択して［OK］ボタンをクリックすると，選択した宛先が入力されます。

ボタンを使用する方法
別のポートレットでデータを選択して，［コピー］ボタンをクリックします。その後，入力項目があるポートレットで［貼り付け］ボタンをクリックすると，選択したデータが入力されます。例えば，電子アドレス帳のポートレットで宛先を選択し，［コピー］ボタンをクリックします。その後，メールのポートレットで［貼り付け］ボタンをクリックすると，選択した宛先が入力されます。

クライアントサイドデータ通信ができるポートレットの開発方法については，「9.　クライアントサイドデータ通信対応ポートレットの開発」を参照してください。

1.3.4　ナビゲーションメニュー対応ポートレット

ポートレットをメニューバーに登録すると，ポートレットを簡単に表示できるようになります。このメニューバーを，ナビゲーションメニューといいます。ナビゲーションメニューを使用すると，よく利用するポートレットをすべてポータル画面に表示しておかなくても，必要なときにだけ簡単に表示できるようになります。

ナビゲーションメニューにポートレットを登録すると，そのポートレットのメニューが表示されます。このメニューをクリックすると，ポートレットが最大化表示されます。また，新しいウィンドウを起動して，ポートレットを表示することもできます。リンク集に，よく参照するWebページへのリンクを登録したり，ポートレットの中でも特によく利用する特定の画面へのショートカットリンクを登録したりもできます。

ナビゲーションメニューにメニューを表示できるポートレット，およびポートレットリンク集に，特定の画面へのショートカットリンクを登録できるポートレットを開発したい場合は，「10.　ナビゲーションメニュー対応ポートレットの開発」を参照してください。

なお，ナビゲーションメニューに登録するポートレットは，最大化表示および新しいウィンドウでの表示ができるように開発する必要があります。

ポートレットを最大化表示できるようにするには，最大化表示画面モード時に表示するコンテンツを開発したあと，ポートレットをPortal Managerでポータルに登録するときに最大化画面に対応するよう設定します。設定方法については，「3.13.2　デプロイ定義ファイル（hportlet.xml）の作成」またはマニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレットの登録」の説明を参照してください。

新しいウィンドウで表示できるポートレットの開発方法については，「12.　新規ウィンドウ対応ポートレットの開発」を参照してください。

1.3.5　言語およびタイムゾーン切り替え対応ポートレット

海外などでポータルを使用したい場合など，必要に応じて個人ごとに使用する言語およびタイムゾーンを切り替えられます。

使用する言語の切り替え
ポータル画面に表示される文字列を，日本語または英語のどちらにするか選択できます。

タイムゾーンの切り替え
J2SE1.4で定めるカスタムタイムゾーンIDを利用して，タイムゾーンを切り替えられます。

言語およびタイムゾーンの切り替えに対応するポートレットの開発方法については，「11.　言語およびタイムゾーン切り替え対応ポートレットの開発」を参照してください。

1.3.6　新規ウィンドウ対応ポートレット

uCosminexus Portal Frameworkでは，ナビゲーションメニューからポートレットを表示する場合に，新規ウィンドウ画面で表示することもできます。新規ウィンドウ画面で表示できるポートレットの開発方法については，「12.　新規ウィンドウ対応ポートレットの開発」を参照してください。

1.3.7　カスタマイズ情報の任意保存対応ポートレット

カスタマイズ情報は通常ログアウト時に保存されますが，カスタマイズ情報任意保存機能を使用すると，ポートレット上で任意のタイミングで保存できるようになります。

カスタマイズ情報任意保存機能を使用できるポートレットの開発方法については，「13.　カスタマイズ情報の任意保存対応ポートレットの開発」を参照してください。

2.　ポートレット全般の前提知識

この章では，すべてのポートレットを作成する際に，前提となる知識について説明します。

＜この章の構成＞

2.1　HTML記述上の注意

2.2　ポートレットの動作

2.1　HTML記述上の注意

uCosminexus Portal Frameworkでは，HTMLのテーブル要素を使って複数のポートレットを一画面に配置します。そして，クライアントのデバイス（PC，ｉモード，またはEZweb）では，一つのHTMLコンテンツとなります。したがって，ポートレット開発時には，次の点に注意してください。

＜この節の構成＞

2.1.1　ターゲットとするデバイス

2.1.2　ドキュメントベース

2.1.3　ネームスペース

2.1.4　エンコーディング

2.1.5　使用できないHTML要素，タグ

2.1.6　使用できないCHTML要素，タグ

2.1.7　使用できないHDML要素，タグ

2.1.8　パス名

2.1.1　ターゲットとするデバイス

ポートレットを作成する前に，ターゲットとするデバイス（PC，ｉモード，またはEZweb）を決定します。ポートレットのコンテンツは，ターゲットとするデバイスに対応するHTML/CHTML/HDMLのバージョンで記述します。ターゲットとするすべてのデバイスのバージョンでテストすることを推奨します。

uCosminexus Portal Frameworkは次のバージョンに対応しています。

HTML4.01

iモード対応HTML2.0

Version 3.3 for HDML

また，デバイスによっては，HTMLのテーブル要素の階層が深い場合，画面の表示速度が遅いことがあります。そのため，ポートレット，特にサマリ画面を表示させるときには，テーブル要素の多用を避けることを推奨します。

2.1.2　ドキュメントベース

クライアントに表示されるポータル画面では，HTMLのドキュメントベースは次のとおりになります。

http://｛ポータルサーバ名｝/｛ポータルプロジェクト名｝

ポートレットのコンテンツで，通常のコンテンツ作成時と同様に相対パス形式でファイルを指定すると，上記ドキュメントベースが基点となるため，ファイルを正しく取得できません。そのため，ポートレット作成時には，ポートレットユティリティタグライブラリを使用します。このタグライブラリは，ポータル画面でファイルを正しく表示できるように，ポートレットに含まれる相対パス形式のURLを変換します。通常のHTMLタグの代わりにタグライブラリを使用すると，相対パス形式でURLを指定できます。ただし，ポートレットのURL定義およびハイパーリンクとして指定するJSPファイルのパス名の長さは，WebコンテナおよびOSによって制限があります。詳細は，マニュアル「Cosminexus アプリケーションサーバ V8　システム構築・運用ガイド」，またはマニュアル「Cosminexus V9　アプリケーションサーバ　システム構築・運用ガイド」の「J2EEサーバの作業ディレクトリ」の説明を参照してください。

インラインオブジェクトのURLは，相対パス形式，または絶対URL形式のどちらかで指定します。相対パス形式で指定する場合，ポートレットユティリティタグライブラリおよびポートレットユティリティクラスライブラリを使用します。

ポートレットユティリティタグライブラリの使用例については，「付録A.2　ハイパーリンクの作成」を参照してください。また，URLの変換については，「3.8.2　URL変換」を参照してください。

2.1.3　ネームスペース

クライアントのデバイス（PC，ｉモード，またはEZweb）では一つのHTMLコンテンツとなるため，HTMLファイル内の属性には，ポートレットごとに異なる名称を指定する必要があります。

クライアントサイドスクリプトを使用する場合は，関数名およびグローバル変数名にも同様に，ポートレットごとに異なる名称を指定する必要があります。また，HTMLでコンテンツを作成する場合，accesskey属性（要素のアクセスキー）の使用を推奨しません。

異なる名称を指定する必要があるネームスペースとその命名規則を次の表に示します。

表2-1　ネームスペースの命名規則

ネームスペース | 命名規則
name属性値 | hptl_user_{ポートレット名}_{name属性値}
id属性値 | hptl_user_{ポートレット名}_{id属性値}
class属性値 | hptl_user_{ポートレット名}_{class属性値}
関数名 | hptl_user_{ポートレット名}_{関数名}
グローバル変数名 | hptl_user_{ポートレット名}_{グローバル変数名}

2.1.4　エンコーディング

ユーザの環境による文字化けを防ぐために，次に推奨するエンコーディングでコンテンツを作成してください。

マルチデバイス環境（PC，ｉモード，またはEZweb）の場合
Shift_JISを推奨します。

PC環境でだけ使用する場合
UTF-8を推奨します。

Shift_JISでは表現できないコンテンツ（JISX0201ラテン，JISX0201カナおよびJISX0208の定義済み文字以外を使用する場合）を作成する場合には，プライベートエリアを含まないUnicodeの範囲を使用して，UTF-8での記述を推奨します。

日立APIポートレットのエンコーディングは，各ポートレットで指定します。日立APIポートレットで日本語を使用する場合には，pageディレクティブのContentType属性およびcharset属性を正しく設定してください。

contentType
contentTypeには，MIMEタイプを指定します。contentTypeに指定するMIMEタイプを次の表に示します。

表2-2　contentTypeに指定するMIMEタイプ

記述言語 | MIMEタイプ
HTML | text/html
CHTML | text/html
HDML | text/x-hdml

charset
charsetには，文字コードを指定します。ユーザの環境による文字化けを防ぐために，charsetはJSPファイルのエンコーディングに合わせて指定してください。

2.1.5　使用できないHTML要素，タグ

ポートレットは，ポートレットとして表示されるコンテンツ本体部分だけを表示します。HTML，HEAD要素などのHTMLとして必要な要素，およびタグは，uCosminexus Portal Frameworkが出力します。そのため，次の宣言，タグ，および要素は，日立APIポートレット，およびFileポートレットでは使用しないでください。

DOCTYPE宣言

HTML開始，終了タグ

HEAD要素

BODY開始，終了タグ

FRAMESET要素

STYLE要素

標準APIポートレットで使用できないタグ，および要素については，「3.16.3　標準APIポートレットで使用できないタグ」を参照してください。

2.1.6　使用できないCHTML要素，タグ

ポートレットは，ポートレットとして表示されるコンテンツ本体部分だけ表示します。HTML，BODYタグ，HEAD要素といったCHTMLとして必要な要素，およびタグは，uCosminexus Portal Frameworkが出力します。そのため，次に示すタグ，および要素はポートレットで使用しないでください。

HTML開始，終了タグ

HEAD要素

BODY開始，終了タグ

2.1.7　使用できないHDML要素，タグ

ポートレットは，ポートレットとして表示されるコンテンツ本体部分だけを表示します。HDMLとして必要な要素，およびHDMLタグは，uCosminexus Portal Frameworkが出力します。そのため，次に示すタグはポートレットで使用しないでください。

HDML開始，終了タグ

2.1.8　パス名

パス名には，英数字，「-」，および「_」を使用できます。

2.2　ポートレットの動作

uCosminexus Portal Frameworkは，uCosminexus Application Server上で動くWebアプリケーションであり，JSP/サーブレットで構築されています。uCosminexus Portal Frameworkは，複数のポートレットで構成されます。ポートレットは，Servlet APIのリクエストディスパッチで呼び出され，uCosminexus Portal Frameworkの延長として動作します。標準APIポートレットは，uCosminexus Portal Frameworkの一部として画面に表示されますが，uCosminexus Portal Frameworkとは別のアプリケーションとして構築されます。

uCosminexus Portal Frameworkとポートレットの関係を次の図に示します。

図2-1　uCosminexus Portal Frameworkとポートレットの関係

uCosminexus Application Server上では，uCosminexus Portal Framework以外にも，JSPやサーブレットで構築されたWebアプリケーションが動作します。そのため，ポートレットは，uCosminexus Portal Frameworkおよびほかのポートレットと，Webアプリケーションのコンテキストを共有します。

＜この節の構成＞

2.2.1　ポートレットの呼び出し

2.2.1　ポートレットの呼び出し

ポートレットは，Servlet APIのリクエストディスパッチで呼び出されます。また，ポートレットは，uCosminexus Portal Framework上で動作するほかのポートレットと，次のオブジェクトを共有します。

ServletContext

ServletRequest

ServletResponse

ServletOutputStream

HttpSession

ユーザが初めてポータルのウェルカム画面にアクセスしたときのポートレット呼び出しシーケンスを次の図に示します。

図2-2　ポートレット呼び出しシーケンス

日立APIポートレットの開発では，通常のWebアプリケーションの開発に加えて，次の点に注意してください。

＜この項の構成＞

(1)　セッション管理

(2)　HTTPヘッダ操作

(3)　アトリビュート操作

(4)　リクエストディスパッチ

(5)　複数ログイン対応

(6)　ポートレットの呼び出し順序

(1)　セッション管理

セッション管理はuCosminexus Portal Frameworkが実施します。ポートレットではServlet APIのセッション管理機能をそのまま利用できます。ただし，HttpSessionはuCosminexus Portal Frameworkおよびポートレットで共有するので，ポートレット内でセッションが必要ない場合でも，HttpSession#invalidateでセッションを無効にしないでください。

(2)　HTTPヘッダ操作

ポートレット内でのHTTPレスポンスヘッダおよびレスポンスコードの操作はできません。Servlet APIでのCookie設定，HTTPリダイレクトなどの操作は無効となります。

また，HTTPレスポンスヘッダが登録できる場合は，Cookieの情報はまとめて登録されます。ただし，次のような場合に，同一名称のCookieを登録しようとしたときは，エラーメッセージが出力され，ポートレットのCookie設定が無効となります。

別のポートレットで，同一名称のCookieの登録しようとした場合

同一ポートレットで，再度同一名称のCookieの情報を登録しようとした場合

(3)　アトリビュート操作

HttpSessionおよびServletContextはすべてのポートレットで共有するため，アトリビュート名には，PortletUtils#getNamespaceで取得したプレフィックスを付けます。予約語のため，プレフィックスとして次の用語は使用できません。

jp.co.hitachi.soft.portal

turbine

jetspeed

アトリビュート操作の例については，「付録A.3　アトリビュート操作」を参照してください。

(4)　リクエストディスパッチ

リクエストディスパッチには，RequestDispatcher#includeおよびRequestDispatcher#forwardを使用します。ただし，forwardを使用する場合，RequestDispatcherはServletRequestから取得してください。

(5)　複数ログイン対応

uCosminexus Portal Frameworkでは同一ユーザの複数ログインが制限されていません。同一ユーザが複数ログインした場合，それぞれに対してHttpSessionが割り当てられます。ユーザセッション管理をHttpSessionで実現する場合には，必要に応じて一貫性制御をする必要があります。

(6)　ポートレットの呼び出し順序

ポートレットの呼び出し順序に依存したポートレット開発はできません。

3.　カスタムポートレットの作成

この章では，カスタムポートレットを作成する際の手順，および注意事項について説明します。

＜この章の構成＞

3.1　カスタムポートレットとは

3.2　日立APIポートレットの作成手順

3.3　HTML記述上の注意（日立APIポートレット）

3.4　タグライブラリ使用時の注意

3.5　パーソナライズ情報使用時の注意

3.6　uCosminexus Portal Frameworkのアクションモジュール

3.7　日立APIポートレットの画面モード

3.8　日立APIポートレットの動作

3.9　ポートレットの無応答監視

3.10　サーブレットを用いたポートレットの開発

3.11　ポートレットの開発モデル

3.12　デバイスに対応するための設定（日立APIポートレット）

3.13　日立APIポートレットのアーカイブの作成

3.14　ダイレクト呼び出し対応ポートレットの開発

3.15　標準APIポートレットの作成手順

3.16　HTML記述上の注意（標準APIポートレット）

3.17　標準APIポートレットの画面モード

3.18　標準APIポートレットの動作

3.19　リクエストコントローラ機能

3.20　ポートレットタイトルの変更

3.21　コンテンツキャッシュ制御

3.22　カスタムウィンドウステート

3.23　Strutsフレームワークの使用（標準APIポートレット）

3.24　デバイスに対応するための設定（標準APIポートレット）

3.25　標準APIポートレットのアーカイブの作成

3.1　カスタムポートレットとは

カスタムポートレットは，JSPやサーブレットの技術を用いて独自のポートレットを作成するポートレットです。動的なページを作成したり，企業独自の業務システムをポータルに統合したり，既存のアプリケーションと連携したりできます。例えば，既存のメールシステムをポータルに統合することで，ユーザはポータルからメールを読めます。また，携帯電話（ｉモードおよびEZweb）からアクセスできるポートレットも作成できます。

カスタムポートレットには次の2種類があります。

日立APIポートレット

uCosminexus Portal FrameworkのAPIを用いて作成するポートレットです。作成方法の詳細は，「3.2　日立APIポートレットの作成手順」を参照してください。

標準APIポートレット

Java Portlet Specification 1.0のAPIを用いて作成するポートレットです。作成方法の詳細は，「3.15　標準APIポートレットの作成手順」を参照してください。

3.2　日立APIポートレットの作成手順

この節では，日立APIポートレットを作成する手順について説明します。

手順

日立APIポートレットのコンテンツを開発します。
コンテンツを開発する際には，ターゲットとするデバイス（PC，ｉモード，またはEZweb）に対応するHTML/CHTML/HDMLのバージョンで記述する必要があります。uCosminexus Portal Frameworkが対応している各言語のバージョンについては，「2.1.1　ターゲットとするデバイス」を参照してください。
また，コンテンツを開発する際には，次の前提知識，および注意事項を確認してください。
前提知識

「3.6　uCosminexus Portal Frameworkのアクションモジュール」

「3.7　日立APIポートレットの画面モード」

「3.8　日立APIポートレットの動作」

「3.9　ポートレットの無応答監視」

「3.10　サーブレットを用いたポートレットの開発」

「3.11　ポートレットの開発モデル」

「3.14　ダイレクト呼び出し対応ポートレットの開発」

注意事項

「2.　ポートレット全般の前提知識」

「3.3　HTML記述上の注意（日立APIポートレット）」

「3.4　タグライブラリ使用時の注意」

「3.5　パーソナライズ情報使用時の注意」

　　なお，日立APIポートレットからはJ2EEサービスを利用できません。
uCosminexus Portal Frameworkの特定の機能に対応するコンテンツを作成する場合は，このマニュアルの次の個所に記載しているコーディング例を参考にして開発してください。

「7.　シングルサインオン対応ポートレットの開発」

「8.　ポートレットイベント対応ポートレットの開発」

「9.　クライアントサイドデータ通信対応ポートレットの開発」

「10.　ナビゲーションメニュー対応ポートレットの開発」

「11.　言語およびタイムゾーン切り替え対応ポートレットの開発」

「12.　新規ウィンドウ対応ポートレットの開発」

「13.　カスタマイズ情報の任意保存対応ポートレットの開発」

なお，uCosminexus Portal Frameworkの特定の機能に対応するコンテンツを作成するときにuCosminexus Portal Frameworkが提供するAPIを使用する場合は，「14.　ライブラリ」を参照してください。
また，その他のポートレットについては，「付録A　ポートレットのサンプル」のコーディング例を参照してください。

日立APIポートレットを作成します。
ターゲットとするデバイスに，ポートレットを表示するための設定を行います。
この設定の詳細は，「3.12　デバイスに対応するための設定（日立APIポートレット）」を参照してください。

PARファイルを作成します。

クラスファイルをパッケージする日立APIポートレット

ポートレットアーカイブ（ポートレットのPARファイル）を作成する必要があります。PARファイルの作成方法については，「3.13　日立APIポートレットのアーカイブの作成」を参照してください。

その他の日立APIポートレット

PARファイルを作成する必要はありません。次の4.に進んでください。

日立APIポートレットをポータルに登録します。
ポートレットの登録方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレットの登録」の説明を参照してください。

3.3　HTML記述上の注意（日立APIポートレット）

＜この節の構成＞

3.3.1　予約語

3.3.2　スクリプトを使用するには

3.3.3　フレームを使用するには

3.3.1　予約語

uCosminexus Portal Frameworkでは「hptl」で始まる文字列を予約語としています。このため，ポートレット開発時に「hptl」で始まる任意の文字列を指定しないでください。

「hptl」で始まる任意の文字列を使用できないファイルや関数名などについて次に示します。

クライアントサイドデータ通信機能のタグライブラリAPI

クライアントサイドデータ通信機能のJavaScript関数

クライアントサイドデータ通信機能のuserData格納キー名称

クライアントサイドデータ通信機能のフレームID

ストリングリソース

セッションにバインドするオブジェクトを指定するときの名称

requestオブジェクトのアトリビュート名

ポータルを経由してポートレットの画面を呼び出す場合，ポートレットではクエリストリング（"?query"）を自由に設計できます。ただし，次の文字列は予約語のため使用できません。

クエリストリングの予約語

action，screen，portlet，pane，mode，url，layout_id，tab_id，jsessionid，hptl_referer，およびhptlで始まる文字列

ポータルを経由してのポートレットの画面呼び出しについては，「2.1.2　ドキュメントベース」を参照してください。

3.3.2　スクリプトを使用するには

Webブラウザによって対応しているスクリプト言語が異なるため，ターゲットとするWebブラウザを決定してから使用するスクリプト言語を決定します。対応するWebブラウザが多いため，uCosminexus Portal Frameworkでは，スクリプト言語としてJavaScriptを推奨します。

ポートレットでスクリプトを使用する場合，通常の記述方法とは次の点が異なります。

ポートレットのURLを作成する場合，適切なポートレットユティリティタグライブラリまたはポートレットユティリティクラスライブラリを使用します。ポートレットユティリティタグライブラリの詳細は，「14.2　ポートレットユティリティタグライブラリ」を，ポートレットユティリティクラスライブラリの詳細は，「14.4　ポートレットユティリティクラスライブラリ」を参照してください。

JavaScriptおよびJScriptでは，ローカル変数宣言時に"var"宣言子を使用します。

イベント処理をする場合，JavaScriptで記述します。bodyタグに記述するイベント（onloadやonunloadなど）は使用できません。フレーム内に表示するコンテンツの場合は，bodyタグに記述するイベントも使用できます。フレーム内にコンテンツを表示する方法については，「3.3.3　フレームを使用するには」を参照してください。

スクリプトのオブジェクト名，関数名，およびグローバル変数名は異なる名称を指定します。
関数名およびグローバル変数名には，"hptl_user_ポートレット名"をプレフィックスとして付けてください。ただし，Webブラウザによっては名称の長さに制限があります。ターゲットとするWebブラウザで正しく表示されない場合は，単語を省略するなどして，名称を短くしてください。

例

関数：function hptl_user_kinkyu_display(){...}

変数：var hptl_user_kinkyu_cont=0;

3.3.3　フレームを使用するには

日立APIポートレット内でフレームを使用するには，iframe要素内でフレームを構成します。FRAMESET要素は，iframe内だけで使用できます。フレームを使用したポートレットのサンプルは，「付録A.11　フレームを使用したポートレット」を参照してください。

フレーム内のコンテンツでは次の機能は使用できません。

Viewの統合

マルチデバイス対応のポートレット

フレーム内のコンテンツで次のAPIを使用するには，ポートレットユティリティタグライブラリを使用してフレームを生成する，またはポートレットユティリティクラスライブラリを使用して生成したURLを用いてフレームを作成してください。

ポートレットユティリティタグライブラリ（14.2）

ポートレットユティリティクラスライブラリ（14.4）

ポートレット情報取得Bean（14.5）

ユーザ情報取得Bean（14.6）

UserAgent情報取得Bean（14.8）

3.4　タグライブラリ使用時の注意

タグライブラリには，ポートレットユティリティタグライブラリ，クライアントサイドデータ通信タグライブラリ，およびナビゲーションメニューのタグライブラリがあります。ポートレットユティリティタグライブラリは，URL変換をするタグライブラリとそれ以外のタグライブラリに分かれています。ポートレットユティリティタグライブラリの詳細は，「14.2　ポートレットユティリティタグライブラリ」を，クライアントサイドデータ通信タグライブラリの詳細は，「14.11　クライアントサイドデータ通信タグライブラリ」を，ナビゲーションメニューのタグライブラリの詳細は，「14.15　ナビゲーションメニューのタグライブラリ」を参照してください。タグライブラリ全般の注意およびURL変換タグライブラリ使用時の注意を次に示します。

＜この節の構成＞

3.4.1　タグライブラリ全般の注意

3.4.2　URL変換タグライブラリ使用時の注意

3.4.1　タグライブラリ全般の注意

タグライブラリはすべて開始タグおよび終了タグを持ちます。終了タグを省略できません。

開始，終了タグおよび属性名の指定をマニュアルの記載どおりに統一します。

3.4.2　URL変換タグライブラリ使用時の注意

URL変換タグライブラリは，URLを指定する属性を持つHTML/CHTML/HDMLの要素をラッピングしたものです。必要に応じて，指定された相対パス形式のURLをURL変換し，HTML/CHTML/HDML要素として出力します。HTML/CHTML/HDMLで必須属性として定義されている属性はURL変換タグライブラリでも必須となります。

URL変換タグライブラリは，HTML/CHTML/HDMLの次のバージョンに従います。

HTML4.01

iモード対応 HTML2.0

Version 3.3 for HDML

URL変換タグライブラリでは，HttpServletResponse#encodeURLが呼び出されるので，ポートレット開発時に明示的にencodeURLを呼び出す必要はありません。また，例外発生時には，javax.servlet.jsp.JspExceptionが発生します。

URL変換タグライブラリは次の点で通常の使用方法と異なります。

開始，終了タグおよび属性名は，要素ごとに大文字または小文字に統一する必要があります。

HTML/CHTML/HDMLで属性値だけを指定できる属性は，タグライブラリでは属性名=属性値として記述する必要があります。

HTML/CHTML/HDMLで空要素となる要素には，内容を記述できません。空要素として記述します。

次の属性名は，HTMLの属性名とタグライブラリの属性名が異なります。正しく指定してください。HTMLの属性名とタグライブラリの属性を次の表に示します。

表3-1　HTMLの属性名とタグライブラリの属性

HTMLの属性名 | タグライブラリの属性名
class | hclass
id | hid
accept-charset | accept_charset

次の属性はタグライブラリでは使用できません。次の属性を使用するには，HTMLタグを使用して記述し，PortletURIクラスでURL変換してください。タグライブラリで使用できない属性を次の表に示します。

表3-2　タグライブラリで使用できない属性

要素名 | 属性名
area | nohref
img | ismap
input | ismap，checked，disable，readonly
object | declare
script | defer

URLを指定する属性およびonで始まるイベント属性は，JSPスクリプトレット式で評価されます。JSPスクリプトレット式で評価される属性については，「14.2　ポートレットユティリティタグライブラリ」を参照してください。

3.5　パーソナライズ情報使用時の注意

PortalUserInfoBeanのsetCustomizeInfoメソッドを使用すると，パーソナライズ情報がシリアライズされてポータルのリポジトリ（ディレクトリサーバ，DB）に格納されます。格納されるパーソナライズ情報のデータサイズについては，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「DBの容量計算」の説明を参照してください。

3.6　uCosminexus Portal Frameworkのアクションモジュール

アクションモジュールには，次の二つがあります。

デフォルトアクションモジュール

アクションモジュール

＜この節の構成＞

3.6.1　デフォルトアクションモジュール

3.6.2　アクションモジュール

3.6.1　デフォルトアクションモジュール

デフォルトアクションモジュールは，uCosminexus Portal Frameworkに標準で添付されているアクションモジュールです。イベント発生時の標準の処理を記述したモジュールで，すべてのポートレットの標準となるイベント処理が記述されています。

各ポートレットによってイベント処理をする場合は，次のデフォルトアクションモジュール（クラス）を継承し，サポートしているイベント（メソッド）を実装します。

デフォルトアクションモジュール（クラス）

jp.co.hitachi.soft.portal.portlet.api.DefaultActionModule

デフォルトアクションモジュールのイベントの詳細は，「14.9　ポートレットイベントAPI」を参照してください。

3.6.2　アクションモジュール

アクションモジュールは，各ポートレットに対してイベントが発生した場合，イベントの種別に応じて記述するモジュールです。

アクションモジュールの詳細は，「14.9　ポートレットイベントAPI」を参照してください。

3.7　日立APIポートレットの画面モード

ここでは，uCosminexus Portal Frameworkで使用できる画面モードについて説明します。

＜この節の構成＞

3.7.1　日立APIポートレットの画面モードの種類

3.7.2　カスタマイズできる項目

3.7.3　アクションモジュールの呼び出し条件

3.7.1　日立APIポートレットの画面モードの種類

uCosminexus Portal Frameworkには，次の画面モードがあります。

DEFAULTモード
ポータル画面に通常表示される状態です。このモードの統合画面を標準画面と呼びます。

MAXIMIZEモード
ポートレットを最大化表示した状態です。このモードの統合画面を最大化画面と呼びます。

MINIMIZEモード
ポートレットを最小化表示した状態です。このモードの統合画面を最小化画面と呼びます。

EDITモード
ポートレットの状態を編集するためのモードです。このモードの統合画面を編集画面と呼びます。

NEWWINDOWモード
ポートレットを新規のウィンドウに表示した状態です。このモードの統合画面を新規ウィンドウ画面と呼びます。

IFRAMEモード
Webコンテンツをインラインフレーム内に表示した状態です。このモードの統合画面をJSP/サーブレット画面と呼びます。

これらの画面は，ポートレットユティリティクラスライブラリのPortletInfoBean.Modeクラスで画面モードとして管理されています。PortletInfoBean.Modeクラスの詳細は，「14.5　ポートレット情報取得Bean」を参照してください。

これらの画面の遷移図については，「3.8.3　ポートレットユティリティタグライブラリ使用時の画面遷移」，および「3.8.4　ポートレットユティリティクラスライブラリ使用時の画面遷移」を参照してください。

＜この項の構成＞

(1)　画面の位置づけ

(2)　複数のWebブラウザ画面の表示

(1)　画面の位置づけ

各画面モードの画面の位置づけを次に示します。

図3-1　uCosminexus Portal Frameworkの画面の位置づけ

ナビゲーション領域／タイトルバー内のアンカーリンク先URL

標準画面でナビゲーションメニューの一つのメニュー（アンカー）をクリックすると，そのリンク先URLを取得し最大化画面を表示します。

標準画面でポートレットのタイトルバー内の編集ボタンをクリックすると，そのリンク先URLを取得し編集画面を表示します。

lookupURI()に引数MAXIMIZEを指定して生成したURL

標準画面で最大化画面を呼び出す操作が行われると，引数にMAXIMIZEを指定したlookupURI()メソッドが，呼び出された最大化画面のURLを生成します。そのURLを基に，最大化画面を呼び出し表示します。

transPortletURI()で生成したURL

標準画面で最大化画面を呼び出す操作が行われると，transPortletURI()メソッドが，相対パス形式のURLを基に絶対URL形式，または絶対パス形式のURLを生成します。そのURLを基に，最大化画面を呼び出し表示します。

lookupURI()に引数NEWWINDOWを指定して生成したURL

標準画面などで新規ウィンドウ画面を呼び出す操作が行われると，引数にNEWWINDOWを指定したlookupURI()メソッドが，呼び出された新規ウィンドウ画面のURLを生成します。そのURLを基に，新規ウィンドウ画面を呼び出し表示します。

transPortalURI()で生成したURL，またはlookupURI()に引数IFRAMEを指定して生成したURL

標準画面などでインラインフレームを呼び出す操作が行われると，transPortalURI()メソッド，または引数にIFRAMEを指定したlookupURI()メソッドが，呼び出されたインラインフレームのURLを生成します。そのURLを基に，インラインフレームを呼び出し表示します。

ここで表示されるインラインフレームは，URLを取得する際に統合アダプタを経由しないため，ポータルの統合画面内で遷移できません。

transInlineURI()で生成したURL

標準画面などで外部Webサーバ上のコンテンツをインラインフレームに表示する操作が行われると，transInlineURI()メソッドが，表示するコンテンツのURLを外部Webサーバから直接取得します。そのURLを基に，外部Webサーバ上のコンテンツをインラインフレームに表示します。

lookupURIメソッド，transPortletURIメソッド，transPortalURIメソッド，およびtransInlineURIメソッドの詳細は，「14.4　ポートレットユティリティクラスライブラリ」の「jp.co.hitachi.soft.portal.portlet.PortletURI」を参照してください。

(2)　複数のWebブラウザ画面の表示

新規ウィンドウ画面を利用すると，一度に複数のWebブラウザ画面を表示できます。一度に表示できる画面について，次の図に示します。

図3-2　新規ウィンドウ機能の概要

新規ウィンドウ画面を利用すると，次の画面を一度に表示できます。

1個の統合画面（DEFAULT/MAXIMIZE/MINIMIZE/EDITモード）
図中のWebブラウザ画面1

m個の新規ウィンドウの統合画面（NEWWINDOWモード）
図中のWebブラウザ画面2～Webブラウザ画面m（mは0より大きい数字）

n個のJSP/サーブレット画面（IFRAMEモード）
図中のWebブラウザ画面4～Webブラウザ画面n（nは0より大きい数字）

3.7.2　カスタマイズできる項目

システム管理者またはポートレット開発者は，各画面モードをカスタマイズできます。カスタマイズできる項目を次の表に示します。

表3-3　システム管理者またはポートレット開発者がカスタマイズできる項目

分類
カスタマイズ項目
DEFAULTモード
MAXIMIZEモード
NEWWINDOWモード
IFRAME
モード

httpレスポンス
charset
△※1
△※1
△※1
－

headタグ
titleタグ
×
×
○※2
－

linkタグ（default.cssのパス）
×
×
×
－

baseタグ
－
－
－
－

bodyタグ
ナビゲーション
△※3
△※3
－
－

タブ
△※3
△※3
－
－

ポートレットのタイトル
○※4
○※4
○※5
－

（凡例）

○：ポートレットごとに設定できます。

×：カスタマイズできません。

△：ポータルプロジェクト全体で設定できます。

－：自由に開発できます（ポータルサーバの管理外）。

注※1　システム管理者の設定によって，Shift_JIS，EUC，JISまたはUTF-8の切り替えができます。

注※2　headタグのtitleタグは，ポータルのウィンドウタイトルと同じ名称になります。システム管理者は，デプロイ時にデプロイ定義ファイル（hportlet.xml）の<windowtitle>タグの設定を変更することによって，この名称を任意の文字列に変更できます。デプロイ定義ファイルを設定する方法，およびheadタグのtitleタグを日本語および英語で設定する方法については，「3.13.2(2) デプロイ定義ファイルで使用するタグの一覧」を参照してください。

注※3　ポートレットテンプレートを変更できます。

注※4　システム管理者の設定によって，日本語または英語のポートレットタイトルを設定できます。日本語または英語のポートレットタイトルの設定方法は，「3.13.2(2) デプロイ定義ファイルで使用するタグの一覧」を参照してください。

注※5　システム管理者は，各種設定値によって値を変更でき，ポートレット開発者は，ポータルのライブラリを使用してプログラム上から値を設定できます（デフォルトは，日本語または英語のポートレットタイトルです）。

3.7.3　アクションモジュールの呼び出し条件

アクションモジュールは，ポートレットを画面に表示する際に呼び出されます。アクションモジュールの呼び出し条件は，ポートレットの表示画面ごとに異なります。アクションモジュールの呼び出し条件を次に示します。

表3-4　アクションモジュールの呼び出し条件

呼び出し条件の種類
標準画面
（最小化画面）
編集画面
最大化画面
新規ウィンドウ画面
JSP/サーブレット画面

呼び出すactionメソッド
現在表示しようとしている標準画面内にある全ポートレットのactionメソッド（現在表示しようとしているホーム画面のレイアウト内に含まれるポートレットのものです。ただし，レイアウトがタブ形式の場合は，タブ内のものになります）。
現在表示しようとしているポートレットのactionメソッド
現在表示しようとしているポートレットのactionメソッド
現在表示しようとしているポートレットのactionメソッド
現在表示しようとしているポートレットのactionメソッド

sendメソッドの宛先として指定できるポートレット
ポータルプロジェクト内の全ポートレット
ポータルプロジェクト内の全ポートレット
ポータルプロジェクト内の全ポートレット
ポータルプロジェクト内の全ポートレット
ポータルプロジェクト内の全ポートレット

3.8　日立APIポートレットの動作

uCosminexus Portal Frameworkは，uCosminexus Application Server上で動くWebアプリケーションであり，JSP/サーブレットで構築されています。uCosminexus Portal Frameworkは，複数のポートレットで構成されます。日立APIポートレットは，Servlet APIのリクエストディスパッチで呼び出され，uCosminexus Portal Frameworkの延長として動作します。

uCosminexus Portal Frameworkと日立APIポートレットの関係を次の図に示します。

図3-3　uCosminexus Portal Frameworkと日立APIポートレットの関係

uCosminexus Application Server上では，uCosminexus Portal Framework以外にも，JSPやサーブレットで構築されたWebアプリケーションが動作します。そのため，ポートレットは，uCosminexus Portal Frameworkおよびほかのポートレットと，Webアプリケーションのコンテキストを共有します。

＜この節の構成＞

3.8.1　日立APIポートレットのライフサイクル

3.8.2　URL変換

3.8.3　ポートレットユティリティタグライブラリ使用時の画面遷移

3.8.4　ポートレットユティリティクラスライブラリ使用時の画面遷移

3.8.1　日立APIポートレットのライフサイクル

uCosminexus Portal Frameworkでは，JSPやサーブレットなどのJavaの技術やHTMLなどのWebの技術を用いて独自のポートレットを作成できます。

日立APIポートレットのライフサイクルを次の図に示します。

図3-4　日立APIポートレットのライフサイクル

ポートレット開発者は，ライブラリやユティリティクラス，および統合ユーザ管理フレームワークを利用して日立APIポートレットを開発します。ライブラリの詳細は，「14.　ライブラリ」を参照してください。

＜この項の構成＞

(1)　ポートレットの初期処理および終了処理

(2)　リクエスト処理

(3)　セッションの初期処理および終了処理

(1)　ポートレットの初期処理および終了処理

ポートレットの初期処理は，エントリポイントとして登録したJSP/サーブレットの初期処理メソッドに記述します。JSPでは，javax.servlet.jsp.JspPage#jspInit，サーブレットでは，javax.servlet.Servlet#initをオーバーライドします。初期処理では，ポートレットで共通の設定ファイルの読み込み，外部DBとのコネクション確立など，ポートレットがサービスを提供する間使用するリソースを確保します。

ポートレットの終了処理は，エントリポイントとして登録したJSP/サーブレットの終了処理メソッドに記述します。JSPでは，javax.servlet.jsp.JspPage#jspDestroy，サーブレットでは，javax.servlet.Servlet#destroyをオーバーライドします。終了処理では，初期処理時に確保したリソースを解放します。

(2)　リクエスト処理

ポートレットへのリクエストに対する処理は，JSP/サーブレットのサービスメソッドに記述します。JSPでは，javax.servlet.jsp.HttpJspPage#jspServiceをオーバーライドします。サーブレットでは，javax.servlet.Servlet#service，またはjavax.servlet.http.HttpServletのdoGETもしくはdoPOSTのメソッドをオーバーライドします。

ボタンによるポートレットの画面遷移を次の図に示します。

図3-5　ボタンによるポートレットの画面遷移

画面モードについては，「3.7.1　日立APIポートレットの画面モードの種類」を参照してください。

サービスメソッド内では，PortletInfoBean#getModeで画面モードを取得します。ユーザの操作時に呼び出されるメソッドおよびポートレットの処理内容を次の表に示します。

表3-5　ユーザ操作とポートレットの処理内容

ユーザの操作
呼び出されるメソッド
画面モード
ポートレットの処理内容

ユーザのホーム画面にアクセス
日立APIポートレットに登録したJSP/サーブレットのサービスメソッド
DEFAULT
サマリ画面を作成

最大化ボタンをクリック
日立APIポートレットに登録したJSP/サーブレットのサービスメソッド
MAXIMIZE

サマリ画面を作成

必要に応じてサマリの詳細を表示

最大化画面で復元ボタンをクリック
日立APIポートレットに登録したJSP/サーブレットのサービスメソッド
DEFAULT
サマリ画面を作成

ポートレットユティリティタグライブラリで作成したJSP/サーブレットのリンクをクリック
指定したJSP/サーブレットのサービスメソッド
MAXIMIZE
業務処理および業務画面を作成

最大化画面で編集ボタンをクリック
日立APIポートレットに登録したJSP/サーブレットのサービスメソッド
EDIT
編集画面を表示

最大化画面の編集画面で復元ボタンをクリック
日立APIポートレットに登録したJSP/サーブレットのサービスメソッド
MAXIMIZE
最大化画面を表示

標準画面内の最小化画面で最大化ボタンをクリック
日立APIポートレットに登録したJSP/サーブレットのサービスメソッド
MAXIMIZE
最大化画面を表示

最大化画面で復元ボタンをクリック
日立APIポートレットに登録したJSP/サーブレットのサービスメソッド
DEFAULT
標準画面内に最小化画面を表示

編集ボタンをクリック
日立APIポートレットに登録したJSP/サーブレットのサービスメソッド
EDIT
編集画面を表示

編集画面で［適用］ボタンをクリック
日立APIポートレットに登録したJSP/サーブレットのサービスメソッド
EDIT
パーソナライズ情報を更新して，再度編集画面を表示

編集画面で［戻る］ボタンをクリック
日立APIポートレットに登録したJSP/サーブレットのサービスメソッド
DEFAULT
パーソナライズ情報を更新しないで，ポートレットのサマリ画面を表示

編集画面で［標準に戻す］ボタンをクリック
日立APIポートレットに登録したJSP/サーブレットのサービスメソッド
EDIT
システム管理者が設定した内容またはポートレットの初期設定に戻して，再度編集画面を表示

IFRAME内のコンテンツを表示
IFRAME内のJSP/サーブレットのサービスメソッド
IFRAME
IFRAME内に表示するコンテンツを作成

ポートレットユティリティタグライブラリで作成したIFRAME内のJSP/サーブレットのリンクをクリック
IFRAME内のJSP/サーブレットのサービスメソッド
IFRAME
IFRAME内に表示するコンテンツを作成

(3)　セッションの初期処理および終了処理

セッションの初期処理および終了処理では，ユーザに固有のパーソナライズデータを取得したり，保存したりします。セッションの初期処理および終了処理は，セッションに対するイベントリスナ（HttpSessionBindingListener）を使用して実現します。エントリポイントとして登録したJSP/サーブレットのサービスメソッド内で，開始・終了処理を記述したイベントリスナをHttpSessionに登録します。ログインおよびログアウト処理のサンプルについては，「付録A.4　ログインログアウトの処理」を参照してください。

3.8.2　URL変換

日立APIポートレット内で，ポートレットユティリティタグライブラリおよびポートレットユティリティクラスライブラリを使用した相対パス形式のURLは，ドキュメントベースを基とした絶対URL形式，または{PROJECT_HOME}を基点とした絶対パス形式に変換されます。これをURL変換と呼びます。ポートレットユティリティタグライブラリを使用すると，相対パス形式のURLが自動変換されます。ポートレットユティリティクラスライブラリを使用すると，任意のURL変換種別を選択できます。ポートレットユティリティタグライブラリの詳細は，「14.2　ポートレットユティリティタグライブラリ」を，ポートレットユティリティクラスライブラリの詳細は，「14.4　ポートレットユティリティクラスライブラリ」を参照してください。

URL変換は，部分識別子（"#fragment"），クエリ（"?query"）に対応します。";"パラメタには対応していません。また，URL属性値が絶対URL形式，または絶対パス形式である場合はURL変換されません。相対パス形式のURLだけがURL変換されます。絶対URL形式，絶対パス形式，および相対パス形式の例を次に示します。

絶対URL形式：http://server/portal/sample/index.jsp

絶対パス形式：/portlets/sample/index.jsp

相対パス形式：index.jsp

なお，SSLアクセラレーターまたはリバースプロキシを使用した環境でuCosminexus Portal Frameworkを使用する場合には，URL変換規則を切り替える必要があります。詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「SSLアクセラレーターまたはリバースプロキシ使用時の設定」の説明を参照してください。

＜この項の構成＞

(1)　URL変換種別

(1)　URL変換種別

URL変換には，次の図に示す変換種別があります。

図3-6　URL変換種別

ポートレットURL変換

ポートレットURL変換は，ポートレットユティリティタグライブラリおよびポートレットユティリティクラスライブラリを使用した相対パス形式のURLから，日立APIポートレットをポータルの統合画面内で遷移させるためのURLに変換することです。ポータル画面でViewを統合するための統合アダプタを経由します。必要に応じてHttpServletResponse#encodeURLを呼び出して，URLRewritingをします。

ポータルURL変換

ポータルURL変換は，ポートレットユティリティタグライブラリおよびポートレットユティリティクラスライブラリを使用した相対パス形式のURLから，uCosminexus Portal Frameworkを経由してコンテンツを取得するためのURLに変換することです。uCosminexus Portal Frameworkを経由するので，uCosminexus Portal FrameworkのAPIを使用できます。また，ポートレットのアクセス制御も適用されます。ただし，統合アダプタを経由しないため，ポータルの統合画面内で遷移できません。

ドキュメントベースURL変換

ドキュメントベースURL変換は，ポートレットユティリティタグライブラリおよびポートレットユティリティクラスライブラリを使用した相対パス形式のURLから，uCosminexus Portal Frameworkを経由しないでコンテンツを外部Webサーバから直接取得するためのURLに変換することです。URLRewritingはしません。また，uCosminexus Portal FrameworkのAPIを使用できません。

3.8.3　ポートレットユティリティタグライブラリ使用時の画面遷移

ポートレットユティリティタグライブラリを使用すると，相対パス形式のURLが自動変換されます。

ポートレットユティリティタグライブラリ使用時に適用されるURL変換を次の表に示します。

表3-6　ポートレットユティリティタグライブラリ使用時に適用されるURL変換

タグ
適用されるURL変換

<uu:a>，<uu:action>，<uu:area>，<uu:ce>，<uu:form>
ポートレットURL変換
（インラインフレーム内およびPortletURI#transportalURIで生成されたURL内では，ポータルURL変換）

<uu:iframe>（src属性），<uu:frame>（src属性）※
ポータルURL変換

<uu:iframe>（longdesc属性），<uu:img>，<uu:input>，<uu:object>，<uu:script>，<uu:frame>（longdesc属性）※
ドキュメントベースURL変換

注※　<uu:frame>タグは，iframe内でだけ使用できます。

ポートレットユティリティタグライブラリ使用時のポートレットの画面遷移を次の図に示します。

図3-7　ポートレットユティリティタグライブラリ使用時のポートレットの画面遷移

ユーザの操作時に呼び出されるタグ，および適用されるURL変換を次の表に示します。なお，項番は図中の番号に対応しています。

表3-7　ユーザの操作時に呼び出されるタグおよび適用されるURL変換

項番
ユーザの操作
呼び出されるタグ
画面モード
URL変換種別

1
標準画面でインラインフレームにコンテンツを表示

ut:portletURI（IFRAME指定）

uu:frame（src属性）※1※2

uu:iframe（src属性）※1

IFRAME
ポータルURL変換

2
標準画面から新規ウィンドウ画面を表示
ut:portletURI（NEWWINDOW指定）
NEWWINDOW
－

3
標準画面からポートレット最大化画面を表示

ut:portletURI（指定なし／MAXIMIZE指定）

uu:a※3

uu:action※3

uu:area※3

uu:ce※3

uu:form※3

MAXIMIZE
ポートレットURL変換（iframe内およびPortletURI#transportalURIで生成されたURI内では，ポータルURI変換）

4
ボタンをクリック※4
－
DEFAULT
－

5
ポートレット最大化画面から新規ウィンドウを表示
ut:portletURI（NEWWINDOW指定）
NEWWINDOW
－

6
ポートレット最大化画面でインラインフレームにコンテンツを表示

ut:portletURI（IFRAME指定）

uu:frame（src属性）※1※2

uu:iframe（src属性）※1

IFRAME
ポータルURL変換

7
ボタンをクリック※4
－
EDIT
－

8
ポートレット最大化画面の編集画面で［更新］ボタンなどをクリック

ut:portletURI（指定なし）

uu:a※3

uu:action※3

uu:area※3

uu:ce※3

uu:form※3

EDIT
ポートレットURL変換（iframe内およびPortletURI#transportalURIで生成されたURI内では，ポータルURI変換）

9
ポートレット最大化画面の編集画面からポートレット最大化画面に戻る操作
ut:portletURI（MAXIMIZE指定）
MAXIMIZE
－

10
ポートレット最大化画面で［更新］ボタンなどをクリック

ut:portletURI（指定なし／MAXIMIZE指定）

uu:a※3

uu:action※3

uu:area※3

uu:ce※3

uu:form※3

MAXIMIZE
ポートレットURL変換（iframe内およびPortletURI#transportalURIで生成されたURI内では，ポータルURI変換）

11
ポートレット最大化画面の編集画面でインラインフレームにコンテンツを表示

ut:portletURI（IFRAME指定）

uu:frame（src属性）※1※2

uu:iframe（src属性）※1

IFRAME
ポータルURL変換

12
ポートレット最大化画面の編集画面から新規ウィンドウ画面を表示
ut:portletURI（NEWWINDOW指定）
NEWWINDOW
－

13
新規ウィンドウ画面でインラインフレームにコンテンツを表示

ut:portletURI（IFRAME指定）

uu:frame（src属性）※1※2

uu:iframe（src属性）※1

IFRAME
ポータルURL変換

14
新規ウィンドウ画面で［更新］ボタンなどをクリック

ut:portletURI（指定なし／NEWWINDOW指定）

uu:a※3

uu:action※3

uu:area※3

uu:ce※3

uu:form※3

NEWWINDOW
ポートレットURL変換（iframe内およびPortletURI#transportalURIで生成されたURI内では，ポータルURI変換）

15
ポートレット編集画面からポートレット最大化画面を表示
ut:portletURI（MAXIMIZE指定）
MAXIMIZE
－

16
ポートレット編集画面でインラインフレームにコンテンツを表示

ut:portletURI （IFRAME指定）

uu:frame（src属性）※1※2

uu:iframe（src属性）※1

IFRAME
ポータルURL変換

17
ポートレット編集画面から新規ウィンドウ画面を表示
ut:portletURI（NEWWINDOW指定）
NEWWINDOW
－

18
ポートレット編集画面で［適用する］ボタンなどをクリック

ut:portletURI（指定なし）

uu:a※3

uu:action※3

uu:area※3

uu:ce※3

uu:form※3

EDIT
ポートレットURL変換（iframe内およびPortletURI#transportalURIで生成されたURI内では，ポータルURI変換）

19
インラインフレームで［再表示］ボタンなどをクリック

ut:portletURI（指定なし／IFRAME指定）

uu:a※3

uu:action※3

uu:area※3

uu:ce※3

uu:form※3

uu:frame（src属性）※1※2

uu:iframe（src属性）※1

IFRAME

ポートレットURL変換（iframe内およびPortletURI#transportalURIで生成されたURI内では，ポータルURI変換）

ポータルURL変換

（凡例）

－：該当しません。

注※1　<uu:frame>（src属性）および<uu:iframe>（src属性）タグは，ポータルURL変換を行います。

注※2　<uu:frame>タグは，インラインフレーム内でだけ使用できます。

注※3　<uu:a>，<uu:action>，<uu:area>，<uu:ce>，および<uu:form>タグは，ポートレットURL変換を行います。ただし，インラインフレーム内およびPortletURI#transportalURIで生成されたURL内では，ポータルURL変換を行います。

注※4　ボタンによる遷移は，「3.8.1(2) リクエスト処理」を参照してください。

注意事項

各画面モードで次のタグを使用すると，ポータル外に遷移します。

<uu:frame>（longdesc属性），<uu:img>，<uu:input>，および<uu:script>タグ

ただし，<uu:frame>タグは，インラインフレーム内でだけ使用できます。

画面モードについては，「3.7.1　日立APIポートレットの画面モードの種類」を参照してください。

3.8.4　ポートレットユティリティクラスライブラリ使用時の画面遷移

ポートレットユティリティクラスライブラリを使用すると，任意のURL変換種別を選択できます。

ポートレットユティリティクラスライブラリ使用時のポートレットの画面遷移を次の図に示します。

図3-8　ポートレットユティリティクラスライブラリ使用時のポートレットの画面遷移

ユーザの操作時に呼び出されるメソッド，および使用するURL変換種別を次の表に示します。なお，項番は図中の番号に対応しています。

表3-8　ユーザの操作時に呼び出されるメソッドおよび使用するURL変換種別

項番
ユーザの操作
呼び出されるメソッド
画面モード
URL変換種別

1
ボタンをクリック※1
－
EDIT
－

2
ポートレット編集画面から標準画面に戻る操作
getRestoreURI
DEFAULT
－

3
ポートレット編集画面でインラインフレームにコンテンツ表示

lookupURI（IFRAME指定）

transPortalURI※2

IFRAME
ポータルURL変換

4
ポートレット編集画面から新規ウィンドウを表示
lookupURI
（NEWWINDOW指定）
NEWWINDOW
－

5
ポートレット編集画面で［適用する］ボタンなどをクリック

lookupURI（指定なし）

transPortletURI※3

EDIT
ポートレットURL変換

6
ポートレット編集画面から最大化画面を表示
lookupURI（MAXIMIZE指定）
MAXIMIZE
－

7
標準画面で［更新］ボタンなどをクリック
getRestoreURI
DEFAULT
－

8
標準画面でインラインフレームにコンテンツ表示

lookupURI（IFRAME指定）

transPortalURI※2

IFRAME
ポータルURL変換

9
標準画面から新規ウィンドウ画面を表示
lookupURI
（NEWWINDOW指定）
NEWWINDOW
－

10
標準画面から最大化画面を表示

lookupURI（指定なし／MAXIMIZE指定）

transPortalURI※3

MAXIMIZE
ポートレットURL変換

11
ポートレット最大化画面で標準画面に戻る操作
getRestoreURI
DEFAULT
－

12
ポートレット最大化画面から新規ウィンドウ画面を表示
lookupURI（NEWWINDOW指定）
NEWWINDOW
－

13
ポートレット最大化画面でインラインフレームにコンテンツを表示

lookupURI（IFRAME指定）

transPortalURI※2

IFRAME
ポータルURL変換

14
ボタンをクリック※1
－
EDIT
－

15
ポートレット最大化画面の編集画面からポートレット最大化画面に戻る操作

lookupURI（MAXIMIZE指定）

getRestoreURI

MAXIMIZE
－

16
ポートレット最大化画面で［更新］ボタンなどをクリック

lookupURI（指定なし／MAXIMIZE指定）

transPortletURI※3

MAXIMIZE
ポートレットURL変換

17
ポートレット最大化画面の編集画面で［適用する］ボタンなどをクリック

lookupURI（指定なし）

transPortletURI※3

EDIT
ポートレットURL変換

18
ポートレット最大化画面の編集画面でインラインフレームにコンテンツを表示

lookupURI（IFRAME指定）

transPortalURI※2

IFRAME
ポータルURL変換

19
ポートレット最大化画面の編集画面から新規ウィンドウ画面を表示
lookupURI（NEWWINDOW指定）
NEWWINDOW
－

20
新規ウィンドウ画面でインラインフレームにコンテンツを表示

lookupURI（IFRAME指定）

transPortalURI※2

IFRAME
ポータルURL変換

21
新規ウィンドウ画面で［更新］ボタンなどをクリック

lookupURI（指定なし／NEWWINDOW指定）

transPortletURI※3

NEWWINDOW
ポートレットURL変換

22
インラインフレームで［再表示］ボタンなどをクリック

lookupURI（指定なし／IFRAME指定）

transPortalURI※2

transPortletURI※3

IFRAME

ポータルURL変換

ポートレットURL変換

（凡例）

－：該当しません。

注※1　ボタンによる遷移は，「3.8.1(2)　リクエスト処理」を参照してください。

注※2　transPortalURIメソッドは，ポータルURL変換を行います。

注※3　transPortletURIメソッドは，ポートレットURL変換を行います。

画面モードについては，「3.7.1　日立APIポートレットの画面モードの種類」を参照してください。

3.9　ポートレットの無応答監視

uCosminexus Portal Frameworkに登録したポートレットが無応答になると，uCosminexus Portal Framework全体が停止してしまいます。そのため，ポートレット開発者は，uCosminexus Portal Frameworkが提供する無応答監視機能を利用して，無応答にならないポートレットを作成する必要があります。

無応答監視機能を利用するには，次に説明する無応答監視の処理シーケンスに従ってポートレット作成してください。

＜この節の構成＞

3.9.1　無応答監視の処理シーケンス

3.9.2　無応答監視のinterruptの通知回数

3.9.1　無応答監視の処理シーケンス

無応答監視の処理シーケンスを次の図に示します。

図3-9　無応答監視の処理シーケンス

図の説明

日立APIポートレット内のメインスレッドは，uCosminexus Portal Frameworkに対してタイマーを作成し無応答監視スレッドを実行します。

uCosminexus Portal Framework内の無応答監視スレッドは，JSPポートレットの無応答監視時間をポートレット定義ファイルのパラメタ（hptl.MultiJSP.tags.watch）から取得します。
ポートレット定義ファイルの詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレット定義ファイル（jetspeed-config.jcfg）」の説明を参照してください。

日立APIポートレット内のメインスレッドおよびuCosminexus Portal Framework内の無応答監視スレッドでは，それぞれ次に示す処理をします。
日立APIポートレット内のメインスレッド
RequestDispatcherインタフェースのforwardメソッド※1を利用して日立APIポートレットに表示するコンテンツ（iframeを利用している場合はiframe内のコンテンツを含む）を読み込みます。
uCosminexus Portal Framework内の無応答監視スレッド
2.で取得した無応答監視時間の間，待機します。

日立APIポートレット内のメインスレッドがコンテンツ（iframeを利用している場合はiframe内のコンテンツを含む）の読み込みを完了した場合，uCosminexus Portal Framework内の無応答監視スレッドは，待機を終了して次の処理を実行します。

2.で取得した無応答監視時間を過ぎても（タイムアウトになっても）JSPポートレット内のメインスレッドが終了していない場合，または生存している場合，uCosminexus Portal Framework内の無応答監視スレッドは，interruptメソッド※2を使用してメインスレッドに割り込みます（interruptを通知します）。

日立APIポートレット内のメインスレッドでInterruptedException※2が発生します。
注意事項
メインスレッドでは，例外が発生した場合でも実行する必要がある処理（共通資源の解放など）はfinallyブロックに記述してください。

注※1　J2EEのAPIです。

注※2　J2SEのAPIです。

なお，uCosminexus Portal Frameworkが提供しているライブラリのすべてのクラスは，Cosminexusのメソッドキャンセル機能の保護区に設定されています。メソッドキャンセル機能の保護区については，マニュアル「Cosminexus　アプリケーションサーバ V8　機能解説　運用／監視／連携編」，またはマニュアル「Cosminexus V9　アプリケーションサーバ　機能解説　運用／監視／連携編」を参照してください。

3.9.2　無応答監視のinterruptの通知回数

無応答監視がタイムアウトになったとき，uCosminexus Portal Framework内の無応答監視メソッドは，設定された回数だけ日立APIポートレット内のメインスレッドにinterruptを通知します。interruptの通知回数は，ポートレットを登録するときにポートレット単位で設定できます。

次に，interruptの通知回数の設定方法とinterruptの通知回数によって異なるuCosminexus Portal Frameworkの動作について説明します。

interruptの通知回数の設定方法

interruptの通知回数は，デプロイ定義ファイル（hportlet.xml），ポートレット定義ファイルまたはPortal Managerで設定します。

デプロイ定義ファイルでinterruptの通知回数を設定する場合，<config-param>の子要素（<param-name>および<param-value>）を使用します。次に，デプロイ定義ファイルの設定例を示します。

<portlet-app>
<portlet>
       ：
 <config-param>
       ：
   <param-name>hptl.portlet.nonresponse.timeout.trytimes</param-name>
   <param-value>3</param-value>
       ：
 </config-param>
       ：
</portlet>
</portlet-app>

設定例では，interruptを3回通知します。

ポートレット定義ファイルでinterruptの通知回数を設定する方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレット定義ファイル（jetspeed-config.jcfg）」の説明を，Portal Managerでinterruptの通知回数を設定する方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「日立APIポートレット（PAR形式以外）およびFileポートレットの設定」の説明を参照してください。

interruptの通知回数によって異なるuCosminexus Portal Frameworkの動作

interruptの通知回数に設定した値によってuCosminexus Portal Frameworkの動作は異なります。interruptの通知回数とuCosminexus Portal Frameworkの動作について次の表に示します。

表3-9　interruptの通知回数とuCosminexus Portal Frameworkの動作

interruptの通知回数（単位：回） | uCosminexus Portal Frameworkの動作
省略時（記述なし） | 1回だけinterruptを通知
0以下 | uCosminexus Portal Framework実行時にエラー※
1～10 | 指定した回数だけinterruptを通知
11以上 | uCosminexus Portal Framework実行時にエラー※

注※　ポートレットにタイムアウト時間設定不正時エラー画面を表示します。

interruptの通知回数に1～10を設定した場合，uCosminexus Portal Framework内の無応答監視スレッドは次に示すタイミングでinterruptを通知します。

1回目：ポートレット実行開始から無応答の監視時間が経過したとき

2回目以降：前回のinterrupt通知から無応答の監視時間が経過したとき

3.10　サーブレットを用いたポートレットの開発

uCosminexus Portal Frameworkではサーブレットを使用できます。サーブレットを用いたポートレットを使用する場合のサーブレットのマッピング，およびサーブレットとJSPの連携方法について説明します。

＜この節の構成＞

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

3.10.2　サーブレットからのJSPの呼び出し

3.10.3　JSPからのサーブレットの呼び出し

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>

3.10.2　サーブレットからのJSPの呼び出し

MVCモデルをポートレット開発に適用して，Controllerをサーブレット，ViewをJSPで開発する場合，サーブレットからJSPを呼び出す必要があります。ここでは，サーブレットからJSPを呼び出す例を示します。

JSPを呼び出すには，RequestDispatcher#includeを使用します。サーブレットをポートレットのエントリポイントとして登録する場合には，doPostがdoGetを呼び出すようにします。

サーブレットからJSPを呼び出す例を次に示します。

package mydomain;
import javax.servlet.*;
import javax.servlet.http.*;
import jp.co.hitachi.soft.portal.portlet.PortletURI;
import jp.co.hitachi.soft.portal.portlet.PortletUtils;
import jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean;

public class Controller extends HttpServlet {
 /*
  * JSPの相対パスをコンテキスト内絶対パスに変換
  **/
 private String getUrl(HttpServletRequest req, String url) {
   String current =
     (String)req.getAttribute("javax.servlet.include.servlet_path");
   return current.substring(0, current.lastIndexOf('/')+1) + url;
 }

 public void doGet(HttpServletRequest req, HttpServletResponse res) {
   String uri = "error.jsp";
   try {
     PortletInfoBean pInfo = new PortletInfoBean();
     pInfo.initBean(req);
     PortletInfoBean.Mode mode = pInfo.getMode();

     if (mode == PortletInfoBean.Mode.DEFAULT) {
       /** サマリ画面用業務ロジック呼び出し **/

       // サマリ画面用JSPのパス取得
       uri = getUrl(req, "summary.jsp");
     } else if (mode == PortletInfoBean.Mode.MAXIMIZE) {
       /** 最大化画面用業務ロジック呼び出し **/

       // 最大化画面用JSPのパス取得
       uri = getUrl(req, "main.jsp");
     }
     // includeを用いたView(JSP)の呼び出し
     getServletContext().getRequestDispatcher(uri).include(req, res);
   } catch (Exception e) {
       // エラーメッセージ出力
   }
 }

 public void doPost(HttpServletRequest req, HttpServletResponse res) {
   doGet(req, res);
 }

}

3.10.3　JSPからのサーブレットの呼び出し

サーブレットをポートレットディレクトリ下のURLにマッピングしておくと，JSPを呼び出す方法と同様に，includeアクションを使用して相対パス形式でサーブレットを呼び出せます。

WebアプリケーションのDD（web.xml）のマッピング例を次に示します。

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

JSPからサーブレットを呼び出す例を次に示します。

<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletURI" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletUtils" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %>
// サーブレット呼び出し
<jsp:include page="Handler" flush="true"/>
<%
   String uri = "error.jsp";
   try {
     PortletInfoBean pInfo = new PortletInfoBean();
     pInfo.initBean(request);
     PortletInfoBean.Mode mode = pInfo.getMode();
     if (mode == PortletInfoBean.Mode.DEFAULT) {
       /** サマリ画面用業務ロジック呼び出し */
       uri = "summary.jsp";
     } else if (mode == PortletInfoBean.Mode.MAXIMIZE) {
       /** 最大化画面用業務ロジック呼び出し */
       uri = "main.jsp";
     }
   } catch (Exception ioe) {
     // エラーメッセージ出力
   }
%>
// includeを用いたJSP(View)の呼び出し
<jsp:include page="<%= uri %>" flush="true"/>

3.11　ポートレットの開発モデル

日立APIポートレットを開発する場合のアプローチについて説明します。

日立APIポートレットの開発には次に示すアプローチがあります。

2層モデル

MVCモデル

2層モデルは，画面遷移が少ない，業務ロジックが簡潔であるなど，単純なポートレットの開発に適しています。

MVCモデルは，業務ロジックが複雑な場合，画面遷移が複雑な場合，または表示と業務ロジックを分離したい場合に適しています。

＜この節の構成＞

3.11.1　2層モデル

3.11.2　MVCモデル

3.11.1　2層モデル

2層モデルは，JSP/HTMLだけでリクエストを処理してクライアントへ送信するモデルです。画面遷移が少ないなど，単純なポートレットの開発方式です。

2層モデルを次の図に示します。

図3-10　2層モデル

2層モデルでは，JSP/HTMLおよびBean/EJBを使用します。JSP/HTMLは，ユーザからのリクエストを基に，適切なBean/EJBを呼び出します。Bean/EJBが業務処理をします。JSP/HTMLは，リクエストや業務処理の結果を基に，適切な画面を表示します。

2層モデルのサンプルを次に示します。このサンプルは，各ページへのハイパーリンクで構成されています。Webブラウザからのリクエストで各ページが呼び出される形式です。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>

<UL>
 <LI><uu:a href="122501.html">「年末すす払い」に関する件</uu:a>
 <LI><uu:a href="122502.html">総務のURLが変更になりました。</uu:a>
 <LI><uu:a href="122101.html">規制改定の件</uu:a>
 <LI><uu:a href="121301.html">「給食シフト変更」のお知らせ</uu:a>
 <LI><uu:a href="120301.html">「チケット割引(12/3～)」のご案内</uu:a>
</UL>

3.11.2　MVCモデル

業務ロジックが複雑な場合は，MVCモデルと呼ばれるアプローチでポートレットを開発します。

MVCモデルとは，業務ロジック（Model），表示（View），制御（Controller）に分けてアプリケーションを開発する考え方です。業務と画面デザインを分離して開発できるため，効率良く開発できます。

MVCモデルをポートレット開発にあてはめた場合，ModelにはBean/EJB，ViewにはJSP/HTML，Controllerにはデフォルトアクションモジュールを使用します。Controllerにデフォルトアクションモジュールを利用すると，ポータル統合画面と連携した画面を制御できます。

MVCモデルを次の図に示します。

図3-11　MVCモデル

図の説明

Controllerは，リクエストのパラメタ（URLのパスやクエリなど）を基に，適切なModelのsetter/getter/業務メソッドを呼び出します。Modelは，データの保存／返却／業務処理をします。

Controllerは，リクエストのパラメタやModelの状態を基に，適切なViewを選択し呼び出します。Viewは，Modelから必要なデータを取得し，画面を表示します。

ControllerとViewのサンプルを次に示します。

＜この項の構成＞

(1)　Controllerの開発

(2)　Viewの開発

(1)　Controllerの開発

手順

デフォルトアクションモジュールを用いてControllerを開発します。
Controllerでは，リクエストのパラメタやModelの状態を基にViewへ渡すパラメタを決定します。デフォルトアクションモジュールからJSP（View）へのパラメタ渡しには，actionメソッドで渡されるrequestの属性を使用します。

注意事項

属性は，統合画面内の全ポートレットで共通に使用されます。そのため，属性の名前には，一意の名前を指定してください。

開発したデフォルトアクションモジュールの名前を，デプロイ定義ファイル（hportlet.xml）のconfig-param要素に設定します。
config-param要素の設定方法については，「8.3.3　ポートレットのデプロイ」を参照してください。

Portal Managerでデプロイします。
ポートレットのデプロイについては，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレットの登録」の説明を参照してください。

Controllerのサンプル

public class SampleControllerActionModule extends DefaultActionModule
{
   public void action(HttpServletRequest req, HttpServletResponse res) {
       req.setAttribute("page", Controller(req));
   }

   //コントローラ用メソッド
   public String Controller(HttpServletRequest req){
       //Attributeにcontrollerがセットされていたら，Stringオブジェクトに変換する。
       String ControllerParameter = (String)req.getParameter("controller");
       // サイトのエンコーディングがShift_JISの場合，次の処理を行う。
       ControllerParameter = new String(ControllerParameter.getBytes("iso-8859-1"),"Windows-31J");

       //デフォルト表示用JSP名をセットする。
       String JSPFILE = "default.jsp";

       //クエリにNEWMAILが指定されている場合
       if("NEWMAIL".equals(ControllerParameter)){
           //JSP表示を行うJSP名を返却する。
           return "newmail.jsp";
       }
       //クエリにADDRESSが指定されている場合
       else if("ADDRESS".equals(ControllerParameter)){
           //JSP表示を行うJSP名を返却する。
           return "address.jsp";
       }

       return JSPFILE;
   }
}

(2)　Viewの開発

JSPを使用して，パラメタの値に応じて表示内容を切り替えるポートレットコンテンツを開発します。日立APIポートレットのサンプルソース（index.jsp）は，パラメタpageの値（default.jsp，newmail.jsp，address.jsp）に応じて表示内容を切り替えます。

index.jsp

<hr>メールポートレットの画面<hr>
<%
//
//デフォルトアクションモジュールが設定した属性を判断し，画面に表示するコンテンツを切り替えます。
// ここでは，pageというAttributeを参照し， 表示コンテンツをControlします。

String view = (String)request.getAttribute("page");

if (page != null) {%>
<jsp:include page="<%= view %>" flush="true"/>
<% }%>

default.jsp

<hr>
初期状態の画面です。

newmail.jsp

<hr>
メールが到着した際の画面です。

address.jsp

<hr>
アドレス帳の画面です。

3.12　デバイスに対応するための設定（日立APIポートレット）

日立APIポートレットでは，PCだけでなく携帯電話（ｉモード，およびEZweb）からアクセスできるコンテンツも作成できます。コンテンツは，クライアントのデバイス（PC，ｉモード，またはEZweb）ごとに対応する言語で作成する必要があります。

ポータルにアクセスできるクライアントのデバイスの種類と，対応する言語を次の表に示します。

表3-10　クライアントのデバイスの種類と対応する言語（日立APIポートレット）

クライアントのデバイス | 対応する言語
HTML4.01に対応するWebブラウザのあるPC | HTML
iモード対応HTML2.0に対応するiモードの携帯電話 | CHTML
Version 3.3 for HDMLに対応するEZwebの携帯電話 | HDML

なお，クライアントのデバイスに合ったコンテンツを表示するために，対応する言語ごとに文書を書き換える必要があります。

HTML／CHTMLの場合：ドキュメントタイプの宣言の追加，および背景色の指定

HDMLの場合：ドキュメントタイプの宣言の追加

アクセスしてきたクライアントの種別を判別して，クライアントに合ったコンテンツを選択するために，マッピング定義ファイルを使用します。一つのポートレットに一つのマッピング定義ファイルが必要です。

マッピング定義ファイルとクライアント判別について次の図に示します。

図3-12　マッピング定義ファイルとクライアント判別（日立APIポートレット）

図の説明

ユーザがポータルにアクセスしたときに，マッピング定義ファイルでユーザのクライアント種別を判別します。

クライアント種別に合致したファイルを選択します。

選択したファイルをポータルで表示します。

マッピング定義ファイルは，ポートレット登録時に作成されます。Portal Managerでポートレットを登録するときに，マッピング定義ファイルの作成場所を指定します。ポートレットごとに作成したポートレットディレクトリの直下を指定します。

3.13　日立APIポートレットのアーカイブの作成

ここでは，ポートレットアーカイブの作成について説明します。ポートレットアーカイブとは，ポートレットの実行に必要な，ポートレットコンテンツ（JSP/HTMLファイル）およびデプロイ定義ファイル（hportlet.xml）などを一つにまとめた（パッケージした）ファイルのことです。このファイルを，PARファイルといいます。このPARファイルを利用すると，ポートレットごとにクラスやコンテンツのデプロイおよびアンデプロイができ，複数のポートレットを効率良く管理できます。

ポートレットアーカイブの作成手順を次に示します。

PARファイルを作成するときのトップディレクトリ以下に，ポートレットコンテンツを格納します。
ここでは，PARファイルを作成するときのトップディレクトリを{PORTLET_HOME}と表記します。PARファイルを作成するときの，ポートレットのディクトリ構成については，「3.13.1　日立APIポートレットのディレクトリ構成」を参照してください。

デプロイ定義ファイル（hportlet.xml）を作成します。
デプロイ定義ファイルの詳細は，「3.13.2　デプロイ定義ファイル（hportlet.xml）の作成」を参照してください。

WebアプリケーションのDD（web.xml）を作成します。
WebアプリケーションのDDの詳細は，「3.13.3　WebアプリケーションのDD（web.xml）の作成」を参照してください。

Javaアーカイブツールを使用してパッケージします。
PARファイルを作成します。PARファイルを作成するには，コマンドプロンプト上でカレントディレクトリを{PORTLET_HOME}に移動し，次のコマンドを実行します。

> jar cvf {parファイル名}.par

Portal Manager，またはコマンドを使用してPARファイルをデプロイします。
Portal Manager，またはコマンドを使用したPARファイルのデプロイについては，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「日立APIポートレット（PAR形式）のデプロイ」の説明を参照してください。

＜この節の構成＞

3.13.1　日立APIポートレットのディレクトリ構成

3.13.2　デプロイ定義ファイル（hportlet.xml）の作成

3.13.3　WebアプリケーションのDD（web.xml）の作成

3.13.1　日立APIポートレットのディレクトリ構成

PARファイルを作成するときの，日立APIポートレットのディレクトリ構成について説明します。

ポートレットを格納するときには，ポートレットごとにディレクトリを作成します。PARファイル内のディレクトリ構成を次の図に示します。

図3-13　日立APIポートレットのディレクトリ

JSP/HTMLファイル

ポートレットディレクトリ直下に格納します。統合画面内で遷移させるJSPファイルは同じポートレットディレクトリ下に格納します。

デプロイ定義ファイル（hportlet.xml）

デプロイ定義ファイルは，{PORTLET_HOME}¥PORTLET-INFに格納します。なお，デプロイ定義ファイルの詳細は「3.13.2　デプロイ定義ファイル（hportlet.xml）の作成」を参照してください。

WebアプリケーションのDD（web.xml）

サーブレットのマッピング定義などに使用するWebアプリケーションのDD（web.xml）を{PORTLET_HOME}¥PORTLET-INFに格納します。このファイルは，{PROJECT_HOME}¥WEB-INFに格納されているweb.xmlに対して，サーブレットの定義やタグライブラリの定義を追加する場合にだけ新規に作成する必要があります。このファイルに記述した定義内容は，{PROJECT_HOME}¥WEB-INFに格納されているweb.xmlに追記されます。なお，WebアプリケーションのDDの詳細は，「3.13.3　WebアプリケーションのDD（web.xml）の作成」を参照してください。

クラスファイル

サーブレットやユティリティクラスなどのクラスファイルは，{PORTLET_HOME}¥PORTLET-INF¥classesに格納します。

{PORTLET_HOME}¥PORTLET-INF¥classesに格納したクラスファイルのデプロイ後の展開先は，uCosminexus Portal Frameworkがポータルプロジェクト内で使用するクラスフォルダとなるため，名前が重複するおそれがあります。また，ディレクトリ名の大文字小文字の区別がないOSを利用している場合，クラスのパッケージ名が不正となる場合があります。そのため，JARファイルを使用して格納することを推奨します。

Portal Managerは，展開先に重複した名称のクラスファイルを発見した場合，PARファイルで指定されたクラスファイルを展開しません。また，クラスファイルを登録したすべてのポートレットをアンデプロイするまで，クラスファイルを削除しません。なお，Portal Managerを利用しないでクラスファイルをコピーまたは削除した場合，関連するポートレットのデプロイまたはアンデプロイができなくなります。PARファイルにクラスファイルを含める場合は，十分に注意してください。

JARファイル

JARファイルは，{PORTLET_HOME}¥PORTLET-INF¥libに格納します。なお，"hptl"で始まるJARファイル名は予約されているため使用できません。

{PORTLET_HOME}¥PORTLET-INF¥libに格納したJARファイルのデプロイ後の展開先は，uCosminexus Portal Frameworkがポータルプロジェクト内で使用するライブラリフォルダとなります。なお，JARファイルのファイル名は，デプロイ定義ファイル（hportlet.xml）で指定したポートレット名を接頭語とするファイル名にリネームされるため，ほかのポートレットとの名前重複を考慮する必要はありません。

画像ファイル

通常のWebアプリケーション作成時と同様に格納します。

3.13.2　デプロイ定義ファイル（hportlet.xml）の作成

デプロイ定義ファイルを作成します。デプロイ定義ファイル（hportlet.xml）とは，ポートレットのタイトルやURLなど，uCosminexus Portal Frameworkで使用するポートレットの情報を設定するファイルです。デプロイ定義ファイルのサンプル，デプロイ定義ファイルで使用するタグの一覧およびデプロイ定義ファイル作成時の注意事項を次に示します。なお，この要素で指定する内容は，ポートレット定義ファイル（jetspeed-config.jcfg）の各ポートレット定義のparameter要素で指定する内容に対応しています。ポートレット定義ファイル（jetspeed-config.jcfg）については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレット定義ファイル（jetspeed-config.jcfg）」の説明を参照してください。

＜この項の構成＞

(1)　サンプルのデプロイ定義ファイル

(2)　デプロイ定義ファイルで使用するタグの一覧

(3)　デプロイ定義ファイル作成時の注意事項

(1)　サンプルのデプロイ定義ファイル

サンプルのデプロイ定義ファイルを次に示します。このデプロイ定義ファイルは，uCosminexus Portal Frameworkがサンプルとして提供している「sampleforum.par」に格納されているデプロイ定義ファイル（hportlet.xml）に，太字の要素（<windowtitle>，<support>および<timeout>）を追加した内容になっています。

「sampleforum.par」については，「10.3　ナビゲーションメニュー対応ポートレットの開発例」を参照してください。

サンプルのデプロイ定義ファイル

<?xml version="1.0" encoding="Shift_JIS" ?>
<portlet-app>
 <portlet>
   <portlet-name>sampleforum</portlet-name>
   <portlet-type>ref</portlet-type>
   <portlet-parent>MultiJSP</portlet-parent>
   <title>Sample forum</title>
   <description>This is the Sample forum portlet.</description>
   <windowtitle lang="ja">Sample forum</windowtitle>
   <config-param>
     <param-name>hptl.module.action</param-name>
     <param-value>jp.co.hitachi.soft.portal.accessories.sampleforum.SampleForumActionModule</param-value>
     <param-name>hptl.portlet.defaulticon</param-name>
     <param-value>images/forum.gif</param-value>
     <param-name>hptl.inbox.support</param-name>
     <param-value>true</param-value>
     <param-name>hptl.inbox.filtering.support</param-name>
     <param-value>true</param-value>
     <param-name>hptl.navigationbar.support</param-name>
     <param-value>true</param-value>
   </config-param>
   <support>
     <timeout>10</timeout>
   </support>
   <allows>
     <maximize />
   </allows>
   <device media="HTML">
     <url>index.jsp</url>
     <supports>
       <personalize />
     </supports>
   </device>
 </portlet>
</portlet-app>

(2)　デプロイ定義ファイルで使用するタグの一覧

タグの一覧を次の表に示します。

表3-11　デプロイ定義ファイルのタグ一覧

タグ名
タグの出現回数
属性の出現回数
説明

<portlet-app>
1回
－
デプロイ定義ファイルのルートタグ。

<portlet>
1回
－
ポートレット定義情報の親タグ。

<portlet-name>
1回
－
ポータルプロジェクト内で一意となるポートレット名。
指定できる最大文字数は，半角英数字32文字です。

<portlet-type>
1回
－
常に「ref」を指定します。

<portlet-parent>
1回
－
ポートレットの種類。
日立APIポートレットの場合，「MultiJSP」を指定します。

<title lang="言語種別">
0回以上
0または1回
ポートレットのタイトルバーおよび利用者用レイアウトカスタマイズ画面の［ポートレット選択画面］に表示されるポートレットのタイトル。※1※2
全角および半角の文字列を使用できます。ただし，エンコード依存文字，機種依存文字，外字および制御コードの文字列は使用できません。
指定できる最大文字数は，全角でも半角でも80文字です。
省略した場合のデフォルト値は，「No Title Set」です。
属性langで言語種別を指定できます。※3

<description lang="言語種別">
0回以上
0または1回
ポートレットの説明文。※1
全角および半角の表示可能文字列を使用できます。
全角および半角の文字列を使用できます。ただし，エンコード依存文字，機種依存文字，外字および制御コードの文字列は使用できません。
指定できる最大文字数は，全角でも半角でも80文字です。
省略した場合のデフォルト値は，「No description found. Generic portlet」です。
属性langで言語種別を指定できます。※3

<windowtitle lang="言語種別">
0回以上
0または1回
新規ウィンドウを表示する場合のウィンドウのタイトル。※1※2
全角および半角の文字列を使用できます。ただし，エンコード依存文字，機種依存文字，外字および制御コードの文字列は使用できません。
指定できる最大文字数は，全角でも半角でも80文字です。
省略した場合のデフォルト値は，<portlet-name>で指定したポートレット名です。
属性langで言語種別を指定できます。※3

<config-param>
0または1回
－
ポートレット起動時のパラメタ（ポートレットの固有の情報）についての定義。

<param-name>
0回以上
－
パラメタのプロパティ名。※4
プロパティ名は，ポートレット単位で決められます。ただし，「hptl」で始まる名称は予約語のため指定できません。

<param-value>
0回以上
－
パラメタのプロパティ値。※4
<param-name>に指定したプロパティ名に対応する値を指定します。
プロパティ値は，ポートレット単位で決められます。ただし，「hptl」で始まる値は予約語のため指定できません。

</config-param>
0または1回
－
終了タグ。

<supports>
0または1回
－
<timeout>の親タグ。

<timeout>
0または1回
－
ポートレットの無応答監視時間。※5
指定する値の単位は秒です。指定できる値の範囲は，0～86,400（整数）です。0を指定した場合，無応答監視は行いません。
ポートレットの実行時間が無応答監視時間を超えた場合，エラー画面を表示します。

</supports>
0または1回
－
終了タグ。

<allows>
0または1回
－
画面表示モードの親タグ。

<minimize />
0または1回
－
ポートレットの最小化表示の許可。
ポートレットがタイトル表示の場合，ポートレットの最小化ボタンを表示し，最小化できるようにします。
ポートレットに最小化表示を許可する場合，空要素タグ<minimize />を記述します。なお，値を指定する必要はありません。

<close />
0または1回
－
ポートレットの閉じるボタンの許可。
ポートレットがタイトル表示の場合，かつ強制表示ポートレットでない場合，ポートレットの閉じるボタンを表示し，閉じることができるようにします。
ポートレットに閉じるボタンを許可する場合，空要素タグ<close />を記述します。なお，値を指定する必要はありません。

<maximize />
0または1回
－
ポートレットの最大化表示の許可。
ポートレットがタイトル表示の場合，ポートレットの最大化ボタンを表示し，最大化できるようにします。
ポートレットに最大化表示を許可する場合，空要素タグ<maximize />を記述します。なお，値を指定する必要はありません。

</allows>
0または1回
－
終了タグ。

<device media="デバイス種別">
0または
3回まで
0または1回
デバイス種別単位の情報についての定義。
属性mediaでデバイス種別を指定できます。デバイス種別を指定するには，デバイス種別に次のどれかを指定します。

HTML：PC向けコンテンツ

CHTML：ｉモード向けコンテンツ

HDML：EZweb向けコンテンツ

属性mediaに「HTML」を指定した場合の開始タグ例を次に示します。

　　<device media="HTML">

属性mediaの指定は省略できません。<device>を記述する場合は必ず指定してください。

<url>
1回
－
<device>のmedia属性で指定したデバイス種別に対応するコンテンツのエントリポイント。
エントリポイントには，ポートレットディレクトリからの絶対パスを指定します。

<supports>
0または1回
－
<personalize />の親タグ。

<personalize />
0または1回
－
編集画面の存在についての定義。
<device>のmedia属性で指定したデバイス種別に対応するポートレットが，編集画面（EDITモード）を所有する場合，空要素タグ<personalize />を記述します。なお，値を指定する必要はありません。

</supports>
0または1回
－
終了タグ。

</device>
0または
3回まで
－
終了タグ。

</portlet>
1回
－
終了タグ。

</portlet-app>
1回
－
終了タグ。

（凡例）

－：該当しません。

注※1　タイトルに日本語を使用する場合は，xml宣言文のencoding属性に文字コードを指定する必要があります。

注※2　各タグで指定したタイトルが，最大化画面，および新規ウィンドウ画面で表示される場所を「(a) 最大化画面，および新規ウィンドウ画面で表示されるタイトル」に示します。

注※3　属性langで言語種別を指定するには，言語種別に次の形式で指定します。

　言語コード［-国コード［-バリアント］］

日本語で表示するポートレットのタイトル（<title>タグ）を指定する場合は，次のように設定します。

　　<title lang="ja">

また，中国語（香港）で表示するポートレットのタイトル（<title>タグ）を指定する場合は，次のように設定します。

　　<title lang="zh-HK">

属性langの指定を省略した場合のデフォルト値は，「ja」です。言語の優先順位については，「(b) 言語の優先順位」を参照してください。

注※4　パラメタは，<param-name>および<param-value>を対にして，必要な数だけ<config-param>～</config-param>間に設定できます。パラメタを設定すると，次の形式で定義されます。

　　（<param-name>の設定内容）=（<param-value>の設定内容）

パラメタ（<param-name>および<param-value>）の記述方法については，「(1) サンプルのデプロイ定義ファイル」を参照してください。

設定できるパラメタを「(c) 設定できるパラメタ」に示します。

ポートレットイベントにポートレットを対応させたい場合は，「8.3.3　ポートレットのデプロイ」を参照し，パラメタを設定してください。ナビゲーションメニューにポートレットを対応させたい場合は，「10.1.2　デプロイ定義ファイルの設定」を参照し，パラメタを設定してください。

注※5　Cosminexus Portal Framework　06-10から，iframeモードやアクションモジュール内の処理に対しても無応答監視が適用になりました。

(a)　最大化画面，および新規ウィンドウ画面で表示されるタイトル

各タグで指定したタイトルが，最大化画面，および新規ウィンドウ画面で表示される場所を次に示します。ここでは，「(1) サンプルのデプロイ定義ファイル」のデプロイ定義ファイルで設定したタイトル（<title>で指定したタイトルおよび<windowtitle>で指定したタイトルはどちらも「Sample forum」）を表示しています。

図3-14　<title>で指定したタイトルが表示される場所（最大化画面の場合）

図3-15　<title>および<windowtitle>で指定したタイトルが表示される場所（新規ウィンドウ画面の場合）

(b)　言語の優先順位

uCosminexus Portal Frameworkは，クライアントからアクセスされた際，クライアントが要求する言語種別と属性"lang"の指定値を比較し，クライアントに応答する最適な言語を決定します。次の条件を上から順に評価し，条件を満たす定義が存在したらその定義内容（タイトルや説明文）を応答します。

言語コード・国コード・バリアントが一致している。

言語コード・国コードが一致している。

言語コードが一致している。

なお，言語コード・国コード・バリアントがすべて一致しない場合，ポータル画面上では「No Title Set」が，ポータルの利用者用レイアウトカスタマイズ画面の［ポートレット選択画面］，および運用管理ポートレットでは，ポートレット名称（<portlet-name>タグ）が表示されます。

(c)　設定できるパラメタ

デプロイ定義ファイルでは，ポートレットの起動時のパラメタを設定できます。パラメタは，<param-name>および<param-value>を対にして，必要な数だけ<config-param>～</config-param>間に設定します。uCosminexus Portal Frameworkが提供する機能で設定できるパラメタの一覧を次の表に示します。

表3-12　設定できるパラメタの一覧

<param-name>に設定するパラメタ名※1
<param-value>に設定するパラメタ値※1
設定内容

Cache-Enable
Cache-Enable
キャッシュについて設定します。

true：キャッシュを使用します（デフォルト値）。

false：キャッシュを使用しません。

hptl.help.url
hptl.help.url
ポートレットアクションのヘルプのURLを指定します。

hptl.help.url.ja
hptl.help.url.ja
ポートレットアクションの日本語ヘルプのURLを指定します。

hptl.help.url.en
hptl.help.url.en
ポートレットアクションの英語ヘルプのURLを指定します。

hptl.help.url.言語コード［-国コード［-バリアント］］
hptl.help.url.言語コード［-国コード［-バリアント］］
ポートレットアクションの日本語と英語以外のヘルプのURLを指定します。国コードとバリアントは省略可能です。

hptl.EditMode
hptl.EditMode
編集モードを設定します。

true：編集モードを設定します。

false：編集モードを設定しません（デフォルト値）。

なお，空要素タグ<personalize />を指定するとtrueが設定されます。

hptl.MinimizeMode
hptl.MinimizeMode
ポートレットがタイトル表示の場合，ポートレットの最小化ボタンを表示し，最小化できるようにするか指定します。

true：ポートレットの最小化をサポートします。

false：ポートレットの最小化をサポートしません（デフォルト値）。※2

なお，空要素タグ<minimize />を指定するとtrueが設定されます。

hptl.CloseMode
hptl.CloseMode
ポートレットがタイトル表示の場合，かつ強制表示ポートレットでない場合，ポートレットの閉じるボタンを表示し，閉じることができるようにするか指定します。

true：ポートレットのクローズをサポートします。

false：ポートレットのクローズをサポートしません（デフォルト値）。※2

なお，空要素タグ<close />を指定するとtrueが設定されます。

hptl.MaximizeMode
hptl.MaximizeMode
ポートレットがタイトル表示の場合，ポートレットの最大化ボタンを表示し，最大化できるようにするか指定します。

true：ポートレットの最大化をサポートします（デフォルト値）。

false：ポートレットの最大化をサポートしません。※2

なお，空要素タグ<maximize />を指定するとtrueが設定されます。

hptl.NewWindowMode
hptl.NewWindowMode
ポートレットがタイトル表示の場合，ポートレットの別画面表示ボタンを表示し，新規ウィンドウにポートレットを表示できるようにするか指定します。

true：ポートレットの新規ウィンドウ表示をサポートします。

false：ポートレットの新規ウィンドウ表示をサポートしません（デフォルト値）。

hptl.Size
hptl.Size
ポートレットの大きさを指定します。レイアウトパターンの設定をしている場合に指定できます。指定できる項目を次に示します。なお，次の項目以外を指定した場合，そのポートレットは表示されません。

large：大きいサイズ

medium：中サイズ

small：小さいサイズ

指定無し：レイアウトパターンの設定で指定したサイズ（デフォルト値）

hptl.MultiJSP.tags.watch
timeout
無応答監視時間を指定します。指定する値の単位は秒です。指定できる値の範囲は，0～86,400（整数）です。0を指定した場合，無応答監視は行いません。
なお，<timeout>タグでも無応答監視時間の指定ができます。

hptl.portlet.nonresponse.timeout.trytimes
hptl.portlet.nonresponse.timeout.trytimes
無応答監視がタイムアウトになったときに，uCosminexus Portal Frameworkが日立APIポートレットにinterruptを通知する回数を指定します。指定できる値の範囲は，1～10（整数）です。interruptを通知する回数の指定がない場合（記述がない場合），1回だけinterruptを通知します。

hptl.module.action
hptl.module.action
ポートレットのイベント処理を記述するためのアクションモジュールのパッケージ名称を含めたクラスのフルパス名称を指定します。

hptl.navigationbar.support
hptl.navigationbar.support
ナビゲーションメニューに対応するかどうかを指定します。

true：ナビゲーションメニューに対応します。

false：ナビゲーションメニューに対応しません（デフォルト値）。

hptl.navigationbar.version
hptl.navigationbar.version
対応しているナビゲーションメニューのAPIのバージョンを指定します。「01-00」を指定してください（デフォルト値は01-00）。

hptl.navigationbar.alltabflag
hptl.navigationbar.alltabflag
連携ポートレットをデフォルトメニューに設定するかどうかを指定します。

true：ユーザにメニュー情報がない場合，デフォルトメニューとしてメニュー登録されます。

false：ユーザにメニュー情報がない場合，デフォルトメニューとしてメニュー登録されません（デフォルト値）。

hptl.portlet.defaulticon
hptl.portlet.defaulticon
ポートレットのデフォルトアイコンのURLを指定します。ポートレットのエントリのディレクトリからの相対パスで指定します。アイコンの画像サイズは16×16ピクセルとします。

hptl.portlet.directreq.support
hptl.portlet.directreq.support
uCosminexus Portal Frameworkにログインしていない状態から，ポートレットのダイレクト呼び出し（WebブラウザでポートレットのURLを直接指定して表示させる機能）ができるかどうかを指定します。

true：ダイレクト呼び出しができます。ログイン後に指定したポートレットが表示されます。

false：ダイレクト呼び出しできません。ログイン後にホーム画面が表示されます（デフォルト値）。

hptl.portlets.layout.hide
hptl.portlets.layout.hide
利用者用レイアウトカスタマイズ画面の［ポートレット選択画面］のポートレット一覧から選択できないポートレットに設定するかどうか（レイアウトできないポートレットにするかどうか）を指定します。

true：レイアウトできないポートレットに設定します。

false：レイアウトできるポートレットに設定します（デフォルト値）。

hptl.portlets.layout.not.modified
hptl.portlets.layout.not.modified
拡張レイアウト形式の変更不可エリアでだけ選択できるポートレットに設定するかどうかを指定します。運用管理者または部門管理者が変更不可エリアでポートレットを追加・変更するときにだけ管理者用レイアウトカスタマイズ画面の［ポートレット選択画面］のポートレット一覧に表示されます。

true：変更不可エリアにだけ追加・変更できるポートレットに設定します。

false：すべてのエリア，およびすべてのレイアウト形式でポートレットの追加・変更ができるポートレットに設定します（デフォルト値）。

hptl.portlet.parameters
hptl.portlet.parameters
他のポートレットに設定情報などのパラメタを引き渡すためのインタフェースを提供するかどうかを定義します。インタフェースを提供する場合は，このインタフェースの実装クラスのFQCN（パッケージ名を含むクラス名）を指定します。

（凡例）

－：該当しません。

注※1　パラメタ名およびパラメタ値に「'」，「"」，「|」を含む文字列は入力できません。また，パラメタ名およびパラメタ値は，大文字小文字を区別します。

注※2　ポートレットのタイトルに各ボタンを表示させるには，Portal Managerの各ポートレットの設定で指定する必要があります。

(3)　デプロイ定義ファイル作成時の注意事項

タグ名および属性名はすべて小文字で記載します。

空要素タグ<minimize />，<close />，または<maximize />を記述した場合にポートレットで「最小化ボタン」，「閉じるボタン」または「最大化ボタン」を使用するためには，ポートレットテンプレートでポートレットテンプレートBeanを利用する必要があります。ポートレットテンプレートについては，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレットテンプレート」の説明を，ポートレットテンプレートBeanについては，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレットテンプレートBean」の説明を参照してください。

3.13.3　WebアプリケーションのDD（web.xml）の作成

サーブレットのマッピング定義などに使用するWebアプリケーションのDD（web.xml）を作成し，{PORTLET_HOME}¥PORTLET-INFに格納します。このファイルは，{PROJECT_HOME}¥WEB-INFに格納されているweb.xmlに対して，デプロイするポートレットで使用するサーブレットの定義やタグライブラリの定義を追加する場合にだけ新規に作成する必要があります。

＜この項の構成＞

(1)　{PROJECT_HOME}¥WEB-INFに格納されているweb.xmlへのタグの追記

(2)　web.xmlファイル作成時の注意事項

(1)　{PROJECT_HOME}¥WEB-INFに格納されているweb.xmlへのタグの追記

作成したweb.xmlファイルに記述した定義内容は，ポートレットデプロイ時に{PROJECT_HOME}¥WEB-INFに格納されているweb.xmlに追記されます。ただし，作成したweb.xmlファイルに記述したタグと同じ名前のタグが，{PROJECT_HOME}¥WEB-INFに格納されているweb.xmlにすでに存在する場合は，作成したweb.xmlファイルに記述したタグで上書きされます。追記されるタグおよび同じ名前のタグと判断する条件を次の表に示します。

表3-13　追記するタグおよび同じ名前のタグと判断する条件

タグ | 同じ名前のタグと判断する条件
<filter> | filter-nameタグの値が同じ値の場合
<filter-mapping> | url-patternタグまたはservlet-nameタグの値が同じ値の場合
<servlet> | servlet-nameタグの値が同じ値の場合
<servlet-mapping> | url-patternタグの値が同じ値の場合
<taglib> | taglib-uriタグの値が同じ値の場合
<resource-ref> | res-ref-nameタグの値が同じ値の場合
<ejb-ref> | ejb-ref-nameタグの値が同じ値の場合

(2)　web.xmlファイル作成時の注意事項

uCosminexus Portal Frameworkで使用できるWebアプリケーションのDDはServlet 2.2またはServlet 2.3のDDです。

taglibタグ内のtaglib-locationタグで指定したパスにTLDファイルが存在する場合，ポートレットデプロイ時に{PROJECT_HOME}¥WEB-INF¥cosmi¥portlets¥<ポートレット名>ディレクトリに，指定したファイルがコピーされます。また，{PROJECT_HOME}¥WEB-INFに格納されているweb.xmlにはコピー後のパスでtaglib-locationタグが追記されます。

3.14　ダイレクト呼び出し対応ポートレットの開発

ここでは，ダイレクト呼び出しに対応したポートレットを開発する場合のデプロイ定義ファイルの設定，およびダイレクト呼び出し時のPOSTデータについて説明します。

＜この節の構成＞

3.14.1　ダイレクト呼び出しとは

3.14.2　デプロイ定義ファイルの設定

3.14.3　ダイレクト呼び出し時のPOSTデータ

3.14.1　ダイレクト呼び出しとは

ダイレクト呼び出しとは，uCosminexus Portal Frameworkにログインしていない状態から，WebブラウザでポートレットのURLを直接指定し，uCosminexus Portal Frameworkを経由してポートレットの画面を表示させる機能のことです。uCosminexus Portal Frameworkを経由してのポートレットの画面呼び出しについては，「2.1.2　ドキュメントベース」を参照してください。

なお，ダイレクト呼び出しをした場合，いったんuCosminexus Portal Frameworkの［ログイン］画面が表示され，ログインするとポートレットの画面が表示されます。

ただし，ウェルカム画面に呼び出したポートレットのアクセス権がある場合は対象外となります。

3.14.2　デプロイ定義ファイルの設定

uCosminexus Portal Frameworkは，ポートレットをデプロイするときの設定値を参照して，ダイレクト呼び出しに対応しているかどうかを判定します。ここでは，ダイレクト呼び出し対応ポートレットのデプロイ定義ファイルに記述する項目について説明します。

ダイレクト呼び出し対応ポートレットのデプロイ定義ファイル（ファイル名はhportlet.xml）に記述する項目を，次の図に示します。

図3-16　ダイレクト呼出対応ポートレットのデプロイ定義ファイルに記述する項目

<portlet-app>
このファイルのルートタグです。

<portlet>
ポートレット情報の親タグです。

<中略>※
<中略>※

<config-param>
ポートレット起動時のパラメタを設定します。
この設定は複数指定できます。

<param-name>
hptl.portlet.directreq.support
</param-name>
ポートレットの対応状況を示すキーです。
この項目の設定は必須です。

<param-value>
true
</param-value>
true：ダイレクト呼び出し対応
false：ダイレクト呼び出し非対応
省略したときは，falseが設定されます。

<中略>※
<中略>※

注※　タグの詳細は，「3.13.2　デプロイ定義ファイル（hportlet.xml）の作成」を参照してください。

3.14.3　ダイレクト呼び出し時のPOSTデータ

セッションタイムアウトやその他の原因によってセッションが切断されている状態で，ダイレクト呼び出しをしたときのPOSTデータは，次の場合を除いてポートレットに送信されます。

ファイルアップロードが実行されていた場合

データサイズが上限を超えていた場合

ダイレクト呼び出し時の画面遷移と処理の流れを次の図に示します。

図3-17　ダイレクト呼び出し時の画面遷移と処理の流れ

＜この項の構成＞

(1)　ポートレットへのPOSTデータの引き渡し

(1)　ポートレットへのPOSTデータの引き渡し

ダイレクト呼び出しをした場合に，ポートレットに渡されるHttpServletRequestオブジェクトからデータを取得できます。HttpServletRequestの各メソッドで取得できるデータを次の表に示します。

表3-14　HttpServletRequestの各メソッドで取得できるデータ

項番 | メソッド名 | 取得データ
1 | getAuthType() | (3)
2 | getContextPath() | (3)
3 | getCookies() | (3)
4 | getDateHeader(java.lang.String name) | (3)
5 | getHeader(java.lang.String name) | (3)
6 | getHeaderNames() | (3)
7 | getHeaders(java.lang.String name) | (3)
8 | getIntHeader(java.lang.String name) | (3)
9 | getMethod() | (3)※1
10 | getPathInfo() | (3)※2
11 | getPathTranslated() | (3)
12 | getQueryString() | (1)
13 | getRemoteUser() | (3)
14 | getRequestedSessionId() | (3)
15 | getRequestURI() | (3)
16 | getRequestURL() | (3)
17 | getServletPath() | (3)
18 | getSession() | (3)
19 | getSession(boolean create) | (3)
20 | getUserPrincipal() | (3)
21 | isRequestedSessionIdFromCookie() | (3)
22 | isRequestedSessionIdFromUrl() | (3)
23 | isRequestedSessionIdFromURL() | (3)
24 | isRequestedSessionIdValid() | (3)
25 | isUserInRole(java.lang.String role) | (3)

（凡例）

括弧付き数字は図3-17の括弧付き数字と対応しています。

(1)：(1)で送信したリクエスト

(3)：(3)で送信したリクエスト

注※1　"POST"となります。

注※2　使用できません。

表3-15　ServletRequestから継承した各メソッドで取得できるデータ

項番 | メソッド名 | 取得データ
1 | getAttribute(java.lang.String name) | (3)
2 | getAttributeNames() | (3)
3 | getCharacterEncoding() | (3)
4 | getContentLength() | (1)
5 | getContentType() | (1)
6 | getInputStream() | (1)
7 | getLocale() | (3)
8 | getLocales() | (3)
9 | getParameter(java.lang.String name) | (1)
10 | getParameterMap() | (1)
11 | getParameterNames() | (1)
12 | getParameterValues(java.lang.String name) | (1)
13 | getProtocol() | (3)
14 | getReader() | (1)
15 | getRealPath(java.lang.String path) | (3)
16 | getRemoteAddr() | (3)
17 | getRemoteHost() | (3)
18 | getRequestDispatcher(java.lang.String path) | (3)
19 | getScheme() | (3)
20 | getServerName() | (3)
21 | getServerPort() | (3)
22 | isSecure() | (3)
23 | removeAttribute(java.lang.String name) | (3)
24 | setAttribute(java.lang.String name, java.lang.Object o) | (3)
25 | setCharacterEncoding(java.lang.String env) | (3)

（凡例）

括弧付き数字は図3-17の括弧付き数字と対応しています。

(1)：(1)で送信したリクエスト

(3)：(3)で送信したリクエスト

(a)　上限サイズ

送受信対象データが，PortalResources.propertiesファイルのjp.co.hitachi.soft.portal.directaccess.postdata.size項目で指定されているPOSTデータの上限サイズを超えた場合，POSTデータを引き継ぎません。PortalResources.propertiesファイルの詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」を参照してください。

(b)　引き継ぎ範囲

POSTデータの引き継ぎ範囲（日立APIポートレット内のすべてとなります）を次に示します。

JSP内（各画面モード）

アクションモジュール内（各画面モード）

ログイン画面

(c)　注意事項

HttpServletRequestの各メソッドで取得できるデータ以外は引き継ぎの対象外となります。

引き継ぎ対象データにファイルアップロードデータが含まれる場合，セキュリティの観点からPOSTデータを引き継ぎません。

(d)　引き継ぎ結果の取得

POSTデータの引き継ぎ結果は，ダイレクト呼び出し結果取得APIで取得できます。ダイレクト呼び出し結果取得APIの詳細は，「14.14　ダイレクト呼び出し結果取得API」を参照してください。

3.15　標準APIポートレットの作成手順

この節では，標準APIポートレットを作成する手順について説明します。

手順

標準APIポートレットのコンテンツを開発します。
コンテンツを開発する際には，ターゲットとするデバイス（PC，ｉモード，またはEZweb）に対応するHTML/CHTML/HDMLのバージョンで記述する必要があります。uCosminexus Portal Frameworkが対応している各言語のバージョンについては，「2.1.1　ターゲットとするデバイス」を参照してください。
また，コンテンツを開発する際には，次の前提知識，および注意事項を確認してください。
前提知識

「3.17　標準APIポートレットの画面モード」

「3.18　標準APIポートレットの動作」

「3.19　リクエストコントローラ機能」

「3.20　ポートレットタイトルの変更」

「3.21　コンテンツキャッシュ制御」

「3.22　カスタムウィンドウステート」

「3.23　Strutsフレームワークの使用」

注意事項

「3.16　HTML記述上の注意（標準APIポートレット）」

　　なお，標準APIポートレットからはJ2EEサービスを利用できません。

標準APIポートレットを開発します
ターゲットとするデバイスにポートレットを表示するための設定を行います。
この設定の詳細は，「3.24　デバイスに対応するための設定（標準APIポートレット）」を参照してください。

WARファイルを作成します。
WARファイルの作成方法については，「3.25　標準APIポートレットのアーカイブの作成」を参照してください。

標準APIポートレットをポータルに登録します。
ポートレットの登録方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレットの登録」の説明を参照してください。

3.16　HTML記述上の注意（標準APIポートレット）

＜この節の構成＞

3.16.1　予約語

3.16.2　スクリプトを使用するには

3.16.3　標準APIポートレットで使用できないタグ

3.16.1　予約語

標準APIポートレットをuCosminexus Portal Frameworkで表示するとき，次の文字列を予約語としています。標準APIポートレットを開発するとき，これらの予約語で始まる任意の文字列を指定しないでください。

java.

javax.

javax.portlet.

hptl

com.cosminexus

jp.co.hitachi.soft.portal

予約語に指定されている文字列を使用できないファイルや関数名などについて次に示します。

ストリングリソース

セッションにバインドするオブジェクトを指定するときの名称

requestオブジェクトのアトリビュート名

ポータルを経由してポートレットの画面を呼び出す場合，ポートレットではクエリストリング（"?query"）を自由に設計できます。ただし，次の文字列は予約語のため使用できません。

クエリストリングの予約語

action，screen，portlet，pane，mode，url，layout_id，tab_id，jsessionid，hptl_referer，tgt_id，typ_id，p_mode，state，rp_，hptl，およびjavax.portletで始まる文字列

ポータルを経由してのポートレットの画面呼び出しについては，「2.1.2　ドキュメントベース」を参照してください。

3.16.2　スクリプトを使用するには

Webブラウザによって対応しているスクリプト言語が異なるため，ターゲットとするWebブラウザを決定してから使用するスクリプト言語を決定します。対応するWebブラウザが多いため，uCosminexus Portal Frameworkでは，スクリプト言語としてJavaScriptを推奨します。

ポートレットでスクリプトを使用する場合，通常の記述方法とは次の点が異なります。

ポートレットのURLを作成する場合，URL変換を行う必要があります。詳細はJava Portlet Specification 1.0の仕様を参照してください。

JavaScriptおよびJScriptでは，ローカル変数宣言時に"var"宣言子を使用します。

スクリプトのオブジェクト名，関数名，およびグローバル変数名は異なる名称を指定します。
関数名およびグローバル変数名には，標準APIのタグライブラリを用いてプレフィックスを付けてください。ただし，Webブラウザによっては名称の長さに制限があります。ターゲットとするWebブラウザで正しく表示されない場合は，単語を省略するなどして，名称を短くしてください。

3.16.3　標準APIポートレットで使用できないタグ

標準APIポートレットでは，次のタグは使用できません。詳細はJava Portlet Specification 1.0の仕様を参照してください。

HTML開始，終了タグ※1

HEAD要素※1

BASE要素※1

TITLE要素※1

BODY開始，終了タグ※1

IFRAME要素※1※2

FRAME要素※1

FRAMESET要素※1

注※1　IFRAMEステートで動作する場合は記述することができます。

注※2　IFRAMEステートをサポートする場合は記述することができます。

3.17　標準APIポートレットの画面モード

uCosminexus Portal Frameworkでは，標準APIポートレットを表示するために次の画面モードをサポートしています。

ポートレットモード

ウィンドウステート

ポートレットモードは，次の3種類があります。

VIEWモード
ポートレットを閲覧するモードです。

EDITモード
ポートレットを編集するモードです。

HELPモード
ヘルプモードです。

ウィンドウステートは，次の5種類があります。

NORMALステート
ポータル画面に通常表示される状態です。

MAXIMIZEステート
ポートレットを最大化表示した状態です。

MINIMIZEDステート
ポートレットを最小化表示した状態です。

NEWWINDOWステート
ポートレットを新規のウィンドウに表示した状態です。

IFRAMEステート
Webコンテンツをインラインフレーム内に表示した状態です。

画面モードおよびウィンドウステートの詳細については，Java Portlet Specification 1.0の仕様を参照してください。なお，NEWWINDOWステートおよびIFRAMEステートはカスタムウィンドウステートに対応しています。詳細は，「3.22　カスタムウィンドウステート」を参照してください。

3.18　標準APIポートレットの動作

uCosminexus Portal Frameworkは，Application Server上で動くWebアプリケーションであり，JSP/サーブレットで構築されています。uCosminexus Portal Frameworkは，複数のポートレットで構成されます。標準APIポートレットはuCosminexus Portal Frameworkと同列のWebアプリケーションとして動作し，Servlet APIのリクエストディスパッチで呼び出され，uCosminexus Portal Frameworkの延長として動作します。

uCosminexus Portal Frameworkと標準APIポートレットの関係を次の図に示します。

図3-18　uCosminexus Portal Frameworkと標準APIポートレットの関係

uCosminexus Application Server上では，標準APIポートレットはuCosminexus Portal Frameworkとは別のアプリケーションとして動作します。また，uCosminexus Portal Frameworkや標準ポートレット以外にも，JSPやサーブレットで構築されたWebアプリケーションが動作します。そのため，ポートレットは，uCosminexus Portal Frameworkおよびほかのポートレットと，Webアプリケーションのコンテキストを共有します。

＜この節の構成＞

3.18.1　標準APIポートレットのライフサイクル

3.18.2　URL変換

3.18.1　標準APIポートレットのライフサイクル

uCosminexus Portal Frameworkでは，Java Portlet Specification 1.0に従いポートレットを自由に作成することができます。

標準APIポートレットのライフサイクルを次の図に示します。

図3-19　標準APIポートレットのライフサイクル

＜この項の構成＞

(1)　標準APIポートレットの初期処理および終了処理

(2)　アクション処理およびレンダー処理

(3)　セッションの初期処理および終了処理

(1)　標準APIポートレットの初期処理および終了処理

ポートレットの初期処理は，システム管理者によってuCosminexus Component Containerに対しポートレットのデプロイが行われると実行されます。※

ポートレット開発者はjavax.portlet.GenericPortlet.GenericPortlet#initをオーバーライドし，ポートレットで共通設定ファイルの読み込み処理などを行います。

ポートレットの終了処理は，運用管理者によってポートレットのアンデプロイが行われると実行されます。ポートレット開発者は，javax.portlet.GenericPortlet.GenericPortlet#destroyをオーバーライドし，初期処理時に確保したリソースを解放します。

注※　WebアプリケーションDDの「load-on-startup」が0に設定されている場合は，初回アクセス時に実行されます。

(2)　アクション処理およびレンダー処理

標準APIポートレットでは，クライアントからの要求をアクション要求およびレンダー要求に分けて処理を行います。詳細は，Java Portlet Specification 1.0の仕様を参照してください。

(3)　セッションの初期処理および終了処理

セッションの初期処理および終了処理では，ユーザに固有のパーソナライズデータを取得したり，保存したりします。セッションの初期処理および終了処理は，セッションに対するイベントリスナ（HttpSessionBindingListener）を使用して実現します。エントリポイントとして登録したJSP/サーブレットのサービスメソッド内で，開始・終了処理を記述したイベントリスナをHttpSessionに登録します。

3.18.2　URL変換

標準APIポートレット内で，標準APIのタグライブラリを使用した相対パス形式のURLは，次のどれかの形式に変換されます。

ドキュメントベースを基とした絶対URL形式

{PROJECT_HOME}を基点とした絶対パス形式

またはプロトコル指定を基点とした絶対URL形式

これをURL変換と呼びます。標準APIを使用すると，現在動作しているuCosminexus Portal Frameworkの環境を基に動的にURL形式が変換されます。

URL変換は，クエリ（"?query"）に対応します。部分識別子（"#fragment"），および";"パラメタには対応していません。絶対URL形式，絶対パス形式，および相対パス形式の例を次に示します。

絶対URL形式：http://server/portal/sample/index.jsp

絶対パス形式：/portlets/sample/index.jsp

相対パス形式：index.jsp

なお，SSLアクセラレーターまたはリバースプロキシを使用した環境でuCosminexus Portal Frameworkを使用する場合には，URL変換規則を切り替える必要があります。また，標準APIを利用して動的にセキュア属性を変更する場合にもURL変換規則，およびHTTP（S）ドメイン名を設定する必要があります。詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「SSLアクセラレーターまたはリバースプロキシ使用時の設定」の説明を参照してください。

3.19　リクエストコントローラ機能

リクエストコントローラ機能は，リクエストを解析して，表示するポートレットを決定し，HTTPレスポンスを構築する機能です。

リクエストコントローラ機能は，次の機能から構成されています。

キャッシュの初期化

セキュア通信判定

コンテンツタイプ判定

ユーザ情報取得

processAction()実行

リダイレクト判定

ポートレットウィンドウの情報更新

各機能について説明します。

＜この節の構成＞

3.19.1　キャッシュの初期化

3.19.2　セキュア通信判定

3.19.3　コンテンツタイプ判定

3.19.4　ユーザ情報取得

3.19.5　processAction()実行

3.19.6　リダイレクト判定

3.19.7　ポートレットウィンドウの情報更新

3.19.1　キャッシュの初期化

標準APIポートレットでは，リクエストを解析して実行情報を作成します。このとき，次のどちらかの情報があると，セッション上にあるすべてのポートレットのキャッシュ情報を初期化します。

サブレイアウト（タブ形式で画面を表示しているときのコンテンツの表示領域）が変更されたとき

URLにコンテンツキャッシュ削除が指定されているとき

キャッシュ初期化の対象になる情報を次の表に示します。

表3-16　キャッシュ情報の種類

キャッシュ情報の種類 | 説明 | サブレイアウト変更時の初期化処理※1 | コンテンツキャッシュ削除指定時の初期化処理
コンテンツキャッシュ | ポートレットフラグメント領域のコンテンツ内容 | ○ | ○
レンダーパラメタ | render()実行時に使うパラメタ | ○ | ×
ポートレットモード | 表示対象となるポートレットモード | ○ | ×
ポートレット最小化フラグ※2 | MINIMIZEステートで表示するかどうかを示すフラグ | × | ×

（凡例）

○：初期化します。　×：初期化しません。

注※1　キーボードから［Ctrl］+［N］で起動したウィンドウ上でサブレイアウトを変更した場合，同じセッションのすべてのブラウザで，操作中のポートレット表示が初期化されます。

注※2　ポートレット最小化フラグは，サブレイアウトごとにキャッシュを保持するため，サブレイアウトを切り替えたあとでも状態を保持します。セッションを破棄するまで有効です。

注意

標準APIポートレットでは，上記のキャッシュ情報をセッションタイムアウト時に保持できません。

3.19.2　セキュア通信判定

標準APIポートレットでは，ポートレットアプリケーションDD（portlet.xml）に記載された<transport-guarantee>タグの設定内容と通信プロトコルによってセキュア通信の判定をします。

標準APIポートレットをuCosminexus Portal Framework上で表示するとき，<transport-guarantee>タグの設定内容が「INTEGRAL」または「CONFIDENTIAL」の場合，HTTPプロトコルによるprocessAction()実行をしないで，エラー画面を表示します。

ただし，SSLアクセラレーター使用時にリバースプロキシ使用プロパティを「SSL」に設定した場合，ポートレットアプリケーションDDの内容に関係なくprocessAction()実行とコンテンツ表示を行います。

セキュア通信判定による動作を次の表に示します。

表3-17　セキュア通信判定による標準APIポートレットの動作

条件
動作

通信プロトコル
<transport-guarantee>タグの設定
processAction実行
コンテンツ表示

HTTP
記述なし
○
○

NONE
○
○

INTEGRAL
SSLアクセラレーターが無効の場合：実行しない
SSLアクセラレーターが有効な場合：○
SSLアクセラレーターが無効の場合：エラー画面を表示する※
SSLアクセラレーターが有効な場合：○

CONFIDENTIAL
SSLアクセラレーターが無効の場合：×
SSLアクセラレーターが有効な場合：○
SSLアクセラレーターが無効の場合：×
SSLアクセラレーターが有効な場合：○

HTTPS
記述なし
○
○

NONE
○
○

INTEGRAL
○
○

CONFIDENTIAL
○
○

（凡例）

○：有効

注※　Webコンテナの機能では，302レスポンスコードによるHTTPSへのリダイレクトを行いますが，uCosminexus Portal Frameworkではエラー画面を表示します。HTTPSへリダイレクトしたい場合は，Webコンテナの機能を使用してください。

3.19.3　コンテンツタイプ判定

標準APIポートレットは，コンテンツタイプを判定して，ポートレットコンテンツを表示します。コンテンツタイプは，次の項目から判定します。

ポートレットアプリケーションDD（portlet.xml）に記載された<supports>タグの設定内容

HTTPリクエストヘッダのUser-Agentパラメタのデバイス種別

HTTPリクエストヘッダのUser-Agentパラメタには，対応する応答コンテンツタイプが定義されています。uCosminexus Portal Frameworkは，HTTPレスポンスヘッダにこの応答コンテンツタイプを設定します。

<supports>タグに応答コンテンツタイプと一致するコンテンツタイプがない場合は，エラー画面を表示します。

注意

uCosminexus Portal Frameworkが扱う応答コンテンツタイプはリクエストごとに一つだけです。またコンテンツタイプの変換は行いません。そのため，uCosminexus Portal FrameworkはPortletRequest#getResponseContentType()メソッドの返却値として必ず一つのコンテンツタイプ（応答コンテンツタイプ）しか返却しません。

また，ターゲットとするデバイスにHDMLを使用する場合は，ポートレットアプリケーションDDの<supports>タグにはtext/x-hdmlを指定してください。

3.19.4　ユーザ情報取得

標準APIポートレットでは，ポートレットアプリケーションDD（portlet.xml）に設定した<user-attribute>タグの内容（ユーザ属性名）からユーザ情報を取得します。

ポートレットアプリケーションDDの<user-attribute>タグのユーザ属性名と，uCosminexus Portal Frameworkのユーザ管理機能のユーザ定義項目名をマッピングしておくことで，リポジトリからユーザ情報を取得できます。マッピングの手順については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」を参照してください。

取得したユーザ情報と<user-attribute>タグのユーザ属性名を，マップに設定します。

ユーザがログインしていない場合は，null値が返されます。また，次の場合は，空のマップを設定します。

ポートレットアプリケーションDDにユーザ属性名を指定していない。

リポジトリに，使用可能なユーザ情報が存在しない。

注意

ユーザ属性名にマルチバリュー項目が指定された場合は，次の値をユーザ属性として設定します。

ディレクトリサーバの場合

取得した最初の値

DBの場合

先頭のカラムの値

3.19.5　processAction()実行

URLにアクション対象のポートレットが指定されている場合，URLとポートレットウィンドウ情報の内容を用いて，processAction()メソッドを実行します。

URLとprocessAction()実行との関係を次の表に示します。

表3-18　URLとprocessAction()実行の関係

URLのターゲットID | ポートレットの動作
コンテキストパス | 画面配置 | 画面表示
使用不可 | 配置あり | 表示 | processAction()を実行しないで，ポートレットウィンドウ情報にエラーメッセージIDを設定する。
非表示
配置なし | 表示
非表示
使用可能 | 配置あり | 表示 | レンダーパラメタのキャッシュを削除して，processAction()を実行する。
非表示
配置なし | 表示
非表示

次の場合は，processAction()メソッドを実行しません。

ポートレットウィンドウ情報にエラーメッセージIDが指定されている。

指定されたポートレット名のコンテキストパスが使用できない。

アクション対象のポートレットの利用権限がない。

リクエスト種別がアクション要求以外である。

ターゲットIDが指定されていない。

URLで指定したポートレットに利用権限がある場合は，ポートレットの配置の有無，および表示の有無に関係なくprocessAction()メソッドを実行します。

なお，次の場合はエラー画面を表示します。

コンテキストパスが使用できない。

processAction()メソッドが実装されていない。

processAction()メソッドの実行中に例外が発生した。

3.19.6　リダイレクト判定

標準APIポートレットでは，processAction()の実行中にActionResponse#sendRedirect()が呼び出されると，リダイレクトが実行されて，ブラウザの画面全体が指定したリダイレクト先に切り替わります。

processAction()実行中に例外が発生した場合は，リダイレクトを実行しません。

注意

リダイレクト元とリダイレクト先が同じポートレットである場合，無限ループが発生しますので，注意してください。

3.19.7　ポートレットウィンドウの情報更新

processAction()，またはURLでポートレットモード，ウィンドウステート，またはレンダーパラメタが変更されたときに，ポートレットウィンドウの情報に変更内容を反映します。ここでは，変更内容を反映するときの動作を説明します。

＜この項の構成＞

(1)　ポートレットモード変更

(2)　ウィンドウステート変更

(3)　レンダーパラメタ変更

(1)　ポートレットモード変更

ポートレットモードは，ポートレットアプリケーションDD（portlet.xml）の<supports>タグに記載されているポートレットモードに変更できます。<supports>タグに記載されていないポートレットモードに変更すると，エラーになります。

URLでポートレットモードを指定する場合の，ポートレットモード変更時の動作を次の表に示します。

表3-19　ポートレットモード変更時の動作

URL | 動作
ポートレットモード | ターゲットID
サポート | 画面配置 | 画面表示
VIEW/EDIT/HELP | 記述あり | 配置あり | 表示 | モードを変更します。
非表示
配置なし | 表示
非表示
記述なし | 配置あり | 表示 | エラーを表示します。
非表示
配置なし | 表示
非表示

URLが，表示対象（MINIMIZEモード以外）のポートレットに対して許可されていないポートレットモードを指定した場合は，ポートレットフラグメント領域にエラーテンプレートで定義されたエラー画面を表示します。

(2)　ウィンドウステート変更

ウィンドウステートをMINIMIZEに設定した場合は，render()を実行しません。URLで指定したポートレットが画面配置されている場合だけ，ウィンドウステートを変更します。

URLでウィンドウステートを指定する場合の，ウィンドウステート変更時の動作を次の表に示します。

表3-20　ウィンドウステート変更時の動作

URL
動作

ウィンドウステート
ターゲットID

画面配置
画面表示

NORMAL/
MINIMIZE
指定なし
レイアウト領域にエラー画面を表示します。

配置あり
表示
ウィンドウステートを変更して，画面表示します。

非表示

配置なし
表示
ウィンドウステートを変更しないで，前回レイアウトの初期画面を表示します

非表示

MAXIMIZE
指定なし
レイアウト領域にエラー画面を表示します。

配置あり
表示
ウィンドウステートを変更して，画面表示します。

非表示

配置なし
表示

非表示

（凡例）

－：該当しません。

なお，不正なウィンドウステートが指定された場合は，ポートレットフラグメント領域にエラーテンプレートで定義されたエラー画面を表示します。

(3)　レンダーパラメタ変更

URLでレンダーパラメタを指定する場合の変更時の動作を次の表に示します。

表3-21　レンダーパラメタ変更時の動作

URL | 動作
レンダーパラメタ | ターゲットID
画面配置 | 画面表示
指定あり | 配置あり | 表示 | レンダーパラメタのキャッシュを削除して，レンダーパラメタを設定します。
非表示
配置なし | 表示
非表示
指定なし | － | レンダーパラメタを設定しません。

（凡例）

－：該当しません。

3.20　ポートレットタイトルの変更

ポートレットのコンテンツ生成時にRenderResponse#setTitle()を用いて，タイトルバーのポートレットタイトルを変更できます。タイトルを変更するときに使う文字列エンコーディングは標準APIポートレットが判断し，uCosminexus Portal Frameworkは設定された値をそのまま出力します。

ポートレットタイトルは，ポートレットアプリケーションDD（portlet.xml）の<title>タグでも設定できます。ポートレットアプリケーションDDの<title>タグとRenderResponseのsetTitle()の両方に定義されている場合は，RenderResponseの設定値が有効となります。

setTitle()の注意事項を次に示します。

setTitle()が実行された場合のデータは，１リクエスト内で有効です。ただし，コンテンツデータがキャッシュされる場合は，コンテンツデータと合わせてキャッシュ登録します。

setTitle()は複数回使用できます。その場合は最後に設定した値が有効になります。

setTitle()に「null」を設定した場合は，setTitle()の操作を無視し，ポートレットアプリケーションDDの設定を有効にします。

3.21　コンテンツキャッシュ制御

ポートレットアプリケーションDD（portlet.xml）に記述されたキャッシュの有効期間情報を基に，標準APIポートレットの情報をセッションに登録してキャッシュ制御できます。

＜この節の構成＞

3.21.1　キャッシュの登録

3.21.2　キャッシュの破棄

3.21.3　キャッシュの有効期間

3.21.1　キャッシュの登録

標準APIポートレットの情報は，キャッシュ領域にデータがない場合に登録されます。情報を登録する単位は1クライアント当たりのポートレットごとです。キャッシュに登録される内容を，次の表に示します。

表3-22　キャッシュに登録されるコンテンツ情報

項番
コンテンツ情報
内容

1
コンテンツデータ
標準APIポートレットが出力したコンテンツデータ。

2
有効期間
コンテンツを生成してから破棄の対象になるまでの有効期間。

3
ポートレットタイトル
変更されたタイトル情報。
標準APIポートレットのコンテンツデータ生成時に，ポートレットタイトルを変更された場合だけ保存します。

3.21.2　キャッシュの破棄

キャッシュに登録されたコンテンツ情報は次のときに破棄されます。

キャッシュの有効期間が過ぎたとき
キャッシュ登録時に設定した有効期間が過ぎたときに，キャッシュからコンテンツ情報が破棄されます。キャッシュの有効期間は，表示対象のポートレットだけ確認されます。

ポートレットがアクション処理対象であるとき
アクション処理対象のポートレットでは，アクション処理結果を反映させるため，キャッシュの有効期間内であってもキャッシュの情報が破棄されます。ポートレットアクションの処理が失敗した場合もキャッシュ情報は破棄されます。

ユーザがログアウトしたとき
ログアウト時にセッション情報が破棄されると，キャッシュの有効期間内であってもすべてのキャッシュ情報が破棄されます。

サブレイアウトが変更されたとき
表示対象サブレイアウトが変更されると，古いレイアウト内のポートレット情報は有効期限に関係なくすべて破棄されます。この処理は，リクエストコントローラ機能で行われます。同一レイアウト内（ポートレットの最大表示時や，通常表示に戻ったときなど）の画面遷移，およびレイアウト編集画面，またはポートレットのデプロイ・アンデプロイによる画面遷移の場合は，キャッシュは破棄されません。
リクエストコントローラ機能のキャッシュの初期化については，「3.19.1　キャッシュの初期化」を参照してください。

3.21.3　キャッシュの有効期間

キャッシュの有効期間は，次のどちらかに設定します。

RenderResponseのportlet.expiration-cacheプロパティ

ポートレットアプリケーションDD（portlet.xml）に定義する<expiration-cache>タグ

RenderResponseのプロパティ項目とポートレットアプリケーションDDファイルの両方に有効期間が定義されている場合は，RenderResponseの設定値が有効となります。

キャッシュの有効期間に設定できる値と値に対する動作を，次の表に示します。

表3-23　キャッシュの有効期間の設定値

有効期間の設定値（秒）
キャッシュ機能の動作

-1
コンテンツ情報を無期限に保持します。ただし，次の場合は，キャッシュから破棄します。

actionメソッドが動いた場合

表示対象レイアウトが変わった場合

ログアウトした場合

0または省略
コンテンツ情報はキャッシュ登録しません。リクエストごとにコンテンツを生成します。

1以上
設定された有効期間内であれば，キャッシュからコンテンツ情報を返却します。設定した有効期間を過ぎたときはコンテンツ生成処理を行います。

3.22　カスタムウィンドウステート

標準APIポートレットでは，カスタムウィンドウステートとして以下のステートを使用することができます。カスタムウィンドウステートを使用する場合は，uCosminexus Portal Framework以外のポートレットコンテナで動作しなくなりますので注意してください。

NEWWINDOWステート

IFRAMEステート

この節では，カスタムウィンドウステートを使用する場合の設定を説明します。

＜この節の構成＞

3.22.1　カスタムウィンドウステートの設定

3.22.2　カスタムウィンドウステートの使用

3.22.3　カスタムウィンドウステート使用時の注意事項

3.22.1　カスタムウィンドウステートの設定

標準APIポートレットでカスタムウィンドウステートを使用する場合にポートレットアプリケーションDDおよびPortletApp.propertiesの設定が必要です。

＜この項の構成＞

(1)　ポートレットアプリケーションDD

(2)　PortletApp.propertiesファイル

(1)　ポートレットアプリケーションDD

ポートレットアプリケーションDDに<custom-window-state>の定義を次のとおりに追加します。

NEWWINDOWステートを使用する場合
<custom-window-state>
<description>uCosminexus Portal Framework presents New window state.</description>
<window-state>newwindow</window-state>
</custom-window-state>

IFRAMEステートを使用する場合
<custom-window-state>
<description>uCosminexus Portal Framework presents IFrame state.</description>
<window-state>iframe</window-state>
</custom-window-state>

(2)　PortletApp.propertiesファイル

ポータルコンテキストの設定でサポートしているウィンドウ状態の設定を追加します。PortletApp.propertiesファイルの設定内容についてはマニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「PortletApp.propertiesの詳細」を参照してください。

3.22.2　カスタムウィンドウステートの使用

標準APIポートレットをカスタムウィンドウステートで実行するためには，ウィンドウステートの指定にカスタムウィンドウステートを指定し生成したURLを実行します。カスタムウィンドウステートを指定するため,WindowStateクラスのサブクラスであるUCPFWindowStateクラスを使用することができます。UCPFWindowStateクラスの詳細は「14.20　カスタムウィンドウステートAPI」を参照してください。

3.22.3　カスタムウィンドウステート使用時の注意事項

カスタムウィンドウステートを使用する場合の注意事項を以下に説明します。

＜この項の構成＞

(1)　カスタムウィンドウステート実行時のポートレットモード及びウィンドウステート

(2)　NEWWINDOWステート

(3)　IFRAMEステート

(1)　カスタムウィンドウステート実行時のポートレットモード及びウィンドウステート

標準APIポートレットをカスタムウィンドウステートで動作させる場合，ポートレットモードはVIEWモードになります。また，カスタムウィンドウステートで動作している場合，ポートレットモードおよびウィンドウステートを変更することはできません。変更しようとした場合は例外がスローされます。

(2)　NEWWINDOWステート

NEWWINDOWステートは新規ウィンドウ状態で動作します。このため，NEWWINDOWステートを指定して生成したURLを実行する場合は，ポータル画面とは別のウィンドウに表示してください。

(3)　IFRAMEステート

IFRAMEステートはインラインフレーム内に表示した状態で動作します。このため，IFRAMEステートを指定して生成したURLを実行する場合は，インラインフレーム内に表示してください。

3.23　Strutsフレームワークの使用（標準APIポートレット）

標準APIポートレットではStrutsフレームワークを使用したポートレットを作成することができます。サポートしているStrutsフレームワークのバージョンは1.2.9です。この節では，Strutsフレームワークを使用したポートレットを作成する方法について説明します。

＜この節の構成＞

3.23.1　Strutsアプリケーションの開発

3.23.2　ポートレットを作成するための設定

3.23.3　日立APIの使用

3.23.1　Strutsアプリケーションの開発

Strutsフレームワークを使用しStrutsアプリケーションを開発する場合にはポートレットに対応した開発を行う必要があります。ポートレットに対応させるためには通常のStrutsアプリケーションの開発に加えて以下の対応が必要です。

＜この項の構成＞

(1)　ウィンドウ状態について

(2)　拡張Strutsタグライブラリの使用

(3)　ポートレットとして動作するための制限事項

(4)　リクエストのフォワード

(5)　ライブラリファイル

(1)　ウィンドウ状態について

ポートレットはポータル画面に複数のポートレットを配置するため，ウィンドウ状態に応じて画面のサイズが変わります。このため，ウィンドウ状態により画面レイアウトが崩れることがありますのでウィンドウ状態に合わせた画面設計が必要です。

NORMALステートの場合
ポータル画面の一部として表示されるため，文字サイズやテーブルサイズが大きすぎてレイアウトが崩れないように設計してください。

MAXIMIZEDステートの場合
ポータル画面全体に表示されるため，文字サイズやテーブルサイズが小さすぎてウィンドウの大きさに対してコンテンツが小さくなりすぎないように設計してください。

(2)　拡張Strutsタグライブラリの使用

Strutsアプリケーションをポートレットとして動作させるため，拡張Strutsタグライブラリを提供しています。拡張Strutsタグライブラリを使用することでアプリケーション実行にウィンドウ状態やポートレットモードの制御を行うことができるようになります。拡張Strutsタグライブラリの詳細については「14.21　拡張Strutsタグライブラリ」を参照してください。

(3)　ポートレットとして動作するための制限事項

(a)　リダイレクト

ポートレットとして動作するため，Strutsアプリケーションからリダイレクトの処理を行うことはできません。

(b)　リクエストパラメタの予約語

uCosminexus Portal Frameworkでは以下のリクエストパラメタを予約しています。このリクエストパラメタを使用することはできません。

リクエストパラメタ

_spage

_sorig

_kra

リクエストパラメタ（接頭部）

hptl.

java.

javax.

(c)　リクエスト属性の予約後

uCosminexus Portal Frameworkでは以下のリクエスト属性予約しています。このリクエスト属性を使用することはできません。

リクエスト属性（接頭部）

org.apache.portlet.bridges.struts.

jp.co.hitachi.soft.portal.

(d)　サーブレットAPIの制限事項

サーブレットAPIから取得できる情報が以下の通り制限されます。

HttpServletRequestクラス

getPathTranslated()メソッド
nullが返却されます。

getRealPath()メソッド
nullが返却されます。

getParameter()メソッド
レンダーパラメタが取得できます。レンダーパラメタはアクションモードで標準APIポートレットを呼び出した時のリクエストパラメタが設定されます。
getParameterNames()メソッド，getParameterValues()メソッド，getParameterMap()メソッドについても同様にレンダーパラメタが取得できます。

HttpServletResponseクラス

EncodeRedirectUrl()メソッド
引数に指定した値が返却されます。

(e)　ポータル画面からのポートレットモードおよびウィンドウステートの変更

ポータル画面からポートレットモードおよびウィンドウステートが変更される場合があります。この場合は，レンダーモードとして実行されるため，レンダーパラメタの引継ぎは行われません。

(4)　リクエストのフォワード

リクエストをフォワードしてもポータル画面全体の描画を変更することはできません。ポートレット内容表示領域の描画変更となります。

(5)　ライブラリファイル

Strutsアプリケーションを標準APIポートレットとして動作させるためのライブラリおよびTLDファイルは，標準APIポートレットのデプロイ時にアーカイブ内にコピーされます。コピーされるファイルは，以下のディレクトリに格納されています。

{uCosminexus Portal Frameworkインストールディレクトリ}¥container¥

3.23.2　ポートレットを作成するための設定

開発したStrutsアプリケーションを標準APIポートレットとして作成するために，次に示す設定を行います。標準APIポートレットのディレクトリ構成は「3.25.1　標準APIポートレットのディレクトリ構成」を参照してください。

＜この項の構成＞

(1)　web.xmlの編集

(2)　ポートレットアプリケーションDDの作成

(3)　struts-config.xmlファイルの編集

(1)　web.xmlの編集

以下の定義を追加します。

サーブレット定義

<servlet>
 <servlet-name>action</servlet-name>
 <servlet-class>jp.co.hitachi.soft.portal.portal.portlets.strutsbridge.PortletServlet</servlet-class>
 <init-param>
   <param-name>config</param-name>
   <param-value>/WEB-INF/struts-config.xml</param-value>
 </init-param>
 <init-param>
   <param-name>debug</param-name>
   <param-value>2</param-value>
 </init-param>
 <init-param>
   <param-name>detail</param-name>
   <param-value>2</param-value>
 </init-param>
 <load-on-startup>2</load-on-startup>
</servlet>

サーブレットマッピング定義

<servlet-mapping>
 <servlet-name>action</servlet-name>
 <url-pattern>*.shtml</url-pattern>
</servlet-mapping>

タグライブラリ定義

<taglib>
 <taglib-uri>http://soft.hitachi.co.jp/portal/bridges/struts/tags-portlet-html</taglib-uri>
 <taglib-location>/WEB-INF/cosmi/portal/taglib/struts-portlet-html-1.0.tld</taglib-location>
</taglib>
<taglib>
 <taglib-uri>http://soft.hitachi.co.jp/portal/bridges/struts/tags-portlet-html-el</taglib-uri>
 <taglib-location>/WEB-INF/cosmi/portal/taglib/struts-portlet-html-el-1.0.tld</taglib-location>
</taglib>

(2)　ポートレットアプリケーションDDの作成

Portlet Specification 1.0に従いポートレットアプリケーションDD（portlet.xml）を作成してください。portlet.xmlを作成する際には以下の情報を設定してください。

ポートレットクラス（portlet-class）

次の値を設定します。

jp.co.hitachi.soft.portal.portal.portlets.strutsbridge.StrutsPortlet

パラメタ（init-param）

ServletContextProvider
次の値を設定します。必ず設定してください。

jp.co.hitachi.soft.portal.portal.portlets.strutsbridge.ServletContextProviderImpl

ViewPage
VIEWモード用の画面のパスを設定します。必ず設定してください。

HelpPage
HELPモード用の画面のパスを設定します。設定は任意です。

EditPage
EDITモード用の画面のパスを設定します。設定は任意です。

定義例

<portlet-class>jp.co.hitachi.soft.portal.portal.portlets.strutsbridge.StrutsPortlet</portlet-class>
   <init-param>
     <name>ServletContextProvider</name>
     <value>jp.co.hitachi.soft.portal.portal.portlets.strutsbridge.ServletContextProviderImpl</value>
   </init-param>
   <init-param>
     <name>ViewPage</name>
     <value>/index.shtml</value>
   </init-param>
   <init-param>
     <name>HelpPage</name>
     <value>/help.shtml</value>
   </init-param>
   <supports>
     <mime-type>text/html</mime-type>
     <portlet-mode>VIEW</portlet-mode>
     <portlet-mode>HELP</portlet-mode>
   </supports>

(3)　struts-config.xmlファイルの編集

controllerタグを次のとおりに設定してください。

<controller pagePattern="$M$P" inputForward="false"
processorClass="jp.co.hitachi.soft.portal.portal.portlets.strutsbridge.PortletRequestProcessor"/>

3.23.3　日立APIの使用

ポートレットとして開発したStrutsアプリケーションでは日立APIを使用することができます。日立APIを使用する場合の注意事項を以下に説明します。

＜この項の構成＞

(1)　uCosminexus Portal Framework未起動時の動作

(2)　日立APIが出力するログ

(3)　コンテキストパスの取得方法

(4)　画面モードの対応

(5)　標準APIポートレットのポートレットID

(1)　uCosminexus Portal Framework未起動時の動作

uCosminexus Portal Frameworkが起動していない場合に日立APIの呼び出しを行った場合，例外がスローされます。この事象を回避するためには，uCosminexus Portal Framworkを起動してからポートレットを動作させてください。

(2)　日立APIが出力するログ

日立APIが出力するログはポータル保守ログに出力されます。

(3)　コンテキストパスの取得方法

uCosminexus Portal Frameworkが提供しているJavaScriptファイルや画像ファイルなどを参照する場合は次のリクエスト属性からコンテキストパスを取得してください。リクエストクラスのgetContextPath()メソッドからは取得することはできません。

　リクエスト属性名：hptl.std.portal.contextpath

(4)　画面モードの対応

日立APIが提供している画面モードと標準APIのポートレットモードは次の通り対応しています。

表3-24　画面モードの対応（URL生成時の指定）

ポートレットモード | ウィンドウステート
NORMALステート | MAXIMIZEDステート | MINIMIZEDステート | NEWWINDOWステート | IFRAMEステート
VIEWモード | DEFAULT | MAXIMIZE | － | NEWWINDOW | IFRAME
EDITモード | － | EDIT | － | － | －
HELPモード | － | － | － | － | －

表3-25　画面モードの対応（現在の画面モード取得時）

ポートレットモード | ウィンドウステート
NORMALステート | MAXIMIZEDステート | MINIMIZEDステート | NEWWINDOWステート | IFRAMEステート
VIEWモード | DEFAULT | MAXIMIZE | － | NEWWINDOW | IFRAME
EDITモード | EDIT | EDIT | － | － | －
HELPモード | － | － | － | － | －

(5)　標準APIポートレットのポートレットID

日立APIに指定するポートレット名に標準APIポートレットのポートレットIDを指定する場合は，次のルールにより生成したIDを指定してください。

　“標準APIポートレットが動作するコンテキストパス”+”.”+”ポートレットID”

3.24　デバイスに対応するための設定（標準APIポートレット）

ポートレットを各デバイスに対応させるためには，ポートレットアプリケーションDDに<mime-type>の宣言を行う必要があります。ポートレットアプリケーションDDの詳細はJava Portlet Specification 1.0の仕様を確認してください。

3.25　標準APIポートレットのアーカイブの作成

ここでは，標準APIポートレットのアーカイブの作成について説明します。標準APIポートレットのアーカイブとは，ポートレットの実行に必要な，ポートレットコンテンツ（Javaクラス/JSP/HTMLファイル）およびポートレットアプリケーションDD（portlet.xml）などを一つにまとめた（パッケージした）ファイルのことです。このファイルを利用すると，ポートレットごとにクラスやコンテンツのデプロイおよびアンデプロイができ，複数のポートレットを効率良く管理できます。

標準APIポートレットのアーカイブの作成手順を次に示します。

アーカイブファイルを作成するときのトップディレクトリ以下に，ポートレットコンテンツを格納します。
ここでは，アーカイブファイルを作成するときのトップディレクトリを{PORTLET_HOME}と表記します。アーカイブファイルを作成するときの，ポートレットのディクトリ構成については，「3.25.1　標準APIポートレットのディレクトリ構成」を参照してください。

ポートレットアプリケーションDD（portlet.xml）を作成します。
ポートレットアプリケーションDDの詳細は，「3.25.2　ポートレットアプリケーションDD（portlet.xml）の作成」を参照してください。

Javaアーカイブツールを使用してパッケージします。
パッケージするには，コマンドプロンプト上でカレントディレクトリを｛Cosminexusインストールディレクトリ｝￥JDK￥binに移動し，次のコマンドを実行します。

> jar cvf {アーカイブファイル格納ディレクトリ}/{ファイル名} -C {PORTLET_HOME}

デプロイ用ファイルを作成し，EAR/WARファイルをデプロイします。
手順3で作成したファイルから，デプロイ用のアプリケーションファイルを作成し，デプロイします。
EAR/WARファイルのデプロイについては，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「標準APIポートレットのデプロイ」の説明を参照してください。

＜この節の構成＞

3.25.1　標準APIポートレットのディレクトリ構成

3.25.2　ポートレットアプリケーションDD（portlet.xml）の作成

3.25.1　標準APIポートレットのディレクトリ構成

「3.25　標準APIポートレットのアーカイブの作成」の手順3.でファイルを作成するときの，標準APIポートレットのディレクトリ構成について説明します。

ポートレットを格納するときには，ポートレットごとにディレクトリを作成します。ファイル内のディレクトリ構成を次の図に示します。

図3-20　標準APIポートレットのディレクトリ

Javaクラス/JSP/HTMLファイル

ポートレットディレクトリ直下に格納します。統合画面内で遷移させるJSPファイルは同じポートレットディレクトリ下に格納します。

ポートレットアプリケーションDD（portlet.xml）

ポートレットアプリケーションDDは，{PORTLET_HOME}¥WEB-INFに格納します。なお，ポートレットアプリケーションDDの詳細は「3.25.2　ポートレットアプリケーションDD（portlet.xml）の作成」を参照してください。

WebアプリケーションのDD（web.xml）

サーブレットのマッピング定義などに使用するWebアプリケーションのDD（web.xml）を{PORTLET_HOME}¥WEB-INFに格納します。

クラスファイル

サーブレットやユティリティクラスなどのクラスファイルは，{PORTLET_HOME}¥WEB-INF¥classesに格納します。

{PORTLET_HOME}¥WEB-INF¥classesに格納したクラスファイルのデプロイ後の展開先は，uCosminexus Portal Frameworkがポータルプロジェクト内で使用するクラスフォルダとなるため，名前が重複するおそれがあります。また，ディレクトリ名の大文字小文字の区別がないOSを利用している場合，クラスのパッケージ名が不正となる場合があります。そのため，JARファイルを使用して格納することを推奨します。

JARファイル

JARファイルは，{PORTLET_HOME}¥WEB-INF¥libに格納します。なお，"hptl"で始まるJARファイル名は予約されているため使用できません。

{PORTLET_HOME}¥WEB-INF¥libに格納したJARファイルのデプロイ後の展開先は，uCosminexus Portal Frameworkがポータルプロジェクト内で使用するライブラリフォルダとなります。なお，JARファイルのファイル名は，ポートレットアプリケーションDD（portlet.xml）で指定したポートレット名を接頭語とするファイル名にリネームされるため，ほかのポートレットとの名前重複を考慮する必要はありません。

画像ファイル

通常のWebアプリケーション作成時と同様に格納します。

3.25.2　ポートレットアプリケーションDD（portlet.xml）の作成

ポートレットアプリケーションDD（portlet.xml）とは，標準APIポートレットの名称やクラス名を設定するファイルです。ポートレットアプリケーションDDファイルのサンプルおよび注意事項を次に示します。なお，ポートレットアプリケーションDDで使用するタグは，Java Portlet Specification 1.0の仕様を参照してください。

＜この項の構成＞

(1)　ポートレットアプリケーションDDの作成例

(2)　ポートレットアプリケーションDD作成時の注意事項

(1)　ポートレットアプリケーションDDの作成例

サンプルのポートレットアプリケーションDDを次に示します。

サンプルのポートレットアプリケーションDD

<?xml version="1.0" encoding="UTF-8" ?>
<portlet-app
 version="1.0"
 xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
 <portlet>
   <description>Sample Portlet</description>
   <portlet-name>SamplePortlet</portlet-name>
   <display-name>Sample Portlet</display-name>
   <portlet-class>portlets.SamplePortlet</portlet-class>
   <expiration-cache>-1</expiration-cache>
   <supports>
     <mime-type>text/html</mime-type>
     <portlet-mode>VIEW</portlet-mode>
   </supports>
   <supported-locale>en</supported-locale>
   <portlet-info>
     <title>Sample Portlet</title>
     <short-title>Sample</short-title>
     <keywords>Sample,Sample Portlet</keywords>
   </portlet-info>
 </portlet>
</portlet-app>

(2)　ポートレットアプリケーションDD作成時の注意事項

ポートレットアプリケーションDDに設定するタグの注意事項を次に示します。

<portlet-name>タグ：半角英数字1文字以上32文字以内の文字列を指定してください。

<portlet-mode>タグ：「EDIT」，「HELP」または「VIEW」のいずれかの文字列を指定できます。大文字，小文字の区別はありません。

<read-only>タグ：「true」または「false」のいずれかの文字列を指定できます。大文字，小文字を区別します。

<transport-guarantee>タグ：「NONE」，「INTEGRAL」または「CONFIDENTIAL」のいずれかの文字列を指定できます。大文字，小文字を区別します。

4.　Fileポートレットの作成

この章では，Fileポートレットを作成する際の手順，および注意事項について説明します。

＜この章の構成＞

4.1　Fileポートレットとは

4.2　Fileポートレットの作成手順

4.3　Fileポートレット開発時の注意

4.4　デバイスに対応するための設定

4.1　Fileポートレットとは

Fileポートレットは，HTML，CHTML，HDMLのどれかで記述されたファイルをポートレットとして表示します。例えば，イントラネット上の各部署のお知らせを，一つのFileポートレットに統合できます。携帯電話（ｉモード，およびEZweb）からアクセスできるポートレットも作成できます。

4.2　Fileポートレットの作成手順

この節では，Fileポートレットを作成する手順について説明します。

手順

Fileポートレットのコンテンツを開発します。
コンテンツを開発する際には，ターゲットとするデバイス（PC，ｉモード，またはEZweb）に対応するHTML/CHTML/HDMLのバージョンで記述する必要があります。uCosminexus Portal Frameworkが対応している各言語のバージョンについては，「2.1.1　ターゲットとするデバイス」を参照してください。
また，コンテンツを開発する際には，次の注意事項を確認してください。

「2.　ポートレット全般の前提知識」

「4.3　Fileポートレット開発時の注意」

Fileポートレットを作成します。
ターゲットとするデバイスに，ポートレットを表示するための設定を行います。
この設定の詳細は，「4.4　デバイスに対応するための設定」を参照してください。

Fileポートレットをポータルに登録します。
ポートレットの登録方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレットの登録」の説明を参照してください。

4.3　Fileポートレット開発時の注意

＜この節の構成＞

4.3.1　エンコーディング

4.3.2　リンク・インラインオブジェクトの指定方法

4.3.1　エンコーディング

Fileポートレットでは，プロパティファイルのデフォルトエンコーディングで指定されている文字コードで記述します。デフォルトエンコーディングについては，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「デフォルトエンコーディングの設定」の説明を参照してください。

4.3.2　リンク・インラインオブジェクトの指定方法

Fileポートレットで使用するリンクおよびインラインオブジェクトは，絶対URL形式，または{PROJECT_HOME}を基点とした絶対パス形式で指定する必要があります。相対パス形式で指定した場合，ドキュメントやインラインオブジェクトを正しく取得できません。

4.4　デバイスに対応するための設定

Fileポートレットでは，PCだけでなく携帯電話（ｉモード，およびEZweb）からアクセスできるコンテンツを作成します。コンテンツは，クライアントのデバイス（PC，ｉモード，またはEZweb）ごとに対応する言語で作成する必要があります。

ポータルにアクセスできるクライアントのデバイスの種類と，対応する言語を次の表に示します。

表4-1　クライアントのデバイスの種類と対応する言語（Fileポートレット）

クライアントのデバイス | 対応する言語
HTML4.01に対応するWebブラウザのあるPC | HTML
iモード対応HTML2.0に対応するiモードの携帯電話 | CHTML
Version 3.3 for HDMLに対応するEZwebの携帯電話 | HDML

なお，クライアントのデバイスに合ったコンテンツ表示するために，対応する言語ごとに文書を書き換える必要があります。

HTML／CHTMLの場合：ドキュメントタイプの宣言の追加，および背景色の指定

HDMLの場合：ドキュメントタイプの宣言の追加

アクセスしてきたクライアントの種別を判別して，クライアントに合ったコンテンツを選択するために，マッピング定義ファイルを使用します。一つのポートレットに一つのマッピング定義ファイルが必要です。

マッピング定義ファイルとクライアント判別について次の図に示します。

図4-1　マッピング定義ファイルとクライアント判別（Fileポートレット）

図の説明

ユーザがポータルにアクセスしたときに，マッピング定義ファイルでユーザのクライアント種別を判別します。

クライアント種別に合致したファイルを選択します。

選択したファイルをポータルで表示します。

マッピング定義ファイルは，ポートレット登録時に作成されます。Portal Managerでポートレットを登録するときに，マッピング定義ファイルの作成場所を指定します。ポートレットごとに作成したポートレットディレクトリの直下を指定します。

5.　Webポートレットの作成

この章では，Webポートレットを作成する際の手順，前提知識，および注意事項について説明します。

＜この章の構成＞

5.1　Webポートレットとは

5.2　Webポートレットの作成手順

5.3　Webポートレット全般の前提知識

5.4　Webポートレット作成時の注意事項

5.5　デバイスに対応するための設定（Multi Web Portlet）

5.1　Webポートレットとは

Webポートレットは，Webページをポ－トレットとして取り込みます。Webポートレットを使うと，ポータルプロジェクト内のローカルコンテンツおよび外部のWebサーバのコンテンツをポータルに取り込めます。

WebポートレットはHTTPによってコンテンツを取得し，ポートレットとしてポータル画面に統合します。

注意事項

外部のWebページを取り込む際は，取り込み先のWebページの利用承諾条件や利用規約に基づいてください。

Webポートレットの取り込みを次の図に示します。

図5-1　Webポートレットの取り込み

＜この節の構成＞

5.1.1　Webポートレットの種類

5.1.1　Webポートレットの種類

Webポートレットには，Multi Web Portlet，Web App Portlet，およびWeb Page Portletがあります。それぞれのポートレットの説明を次に示します。

Multi Web Portlet

PCだけでなく携帯電話（ｉモード，およびEZweb）からアクセスできるコンテンツも取り込めます。

Portal Managerで，ポートレット登録時にフォーム認証に必要な設定ができます。

Web App Portlet

外部のHTMLコンテンツをポータル内で画面遷移させたり，動的なコンテンツを表示したりできます。

Web Page Portlet

静的なコンテンツだけを表示できます。ただし，Web Page Portletは認証およびセッション維持ができないので，外部のHTMLリンクをポータル内で画面遷移できません。

Multi Web Portletは，Web App PortletとWeb Page Portletの機能を包含するため，Multi Web Portletの使用を推奨します。

Multi Web Portlet，Web App Portlet，およびWeb Page Portletの相違点を次の表に示します。

表5-1　Multi Web Portlet，Web App Portlet，およびWeb Page Portletの相違点

ポートレットの種別 | 対応する言語 | 使用する認証情報定義ファイル
Multi Web Portlet | HTML，CHTML，HDML | ポートレット定義ファイル※1
Web App Portlet | HTML | フォーム認証定義ファイル※2
Web Page Portlet | HTML | －※3

注※1　ポートレット定義ファイルの詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレット定義ファイル（jetspeed-config.jcfg）」の説明を参照してください。

注※2　フォーム認証定義ファイルの詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「フォーム認証定義ファイル（formbase-auth.cfg）」の説明を参照してください。

注※3　Web Page Portletは，フォーム認証は行えません。

5.2　Webポートレットの作成手順

この節では，Webポートレットを作成する手順について説明します。

手順

Webポートレットの機能を決定します。
ポータルに取り込むWebポートレットを決定します（Webポートレットの種類の決定）。

Webポートレットを作成します。
ポータルに取り込めるWebポートレットは，uCosminexus Portal Frameworkが決めた条件に合っている必要があります。Webポートレットを取り込むための条件は，「5.3.2　Webポートレットを取り込むための条件」を参照してください。

Multi Web Portletをポータルに取り込む場合

コンテンツに日本語を記述する場合，エンコーディング方法を指定する必要があります。エンコーディング方法の指定については，「5.4.1(1)(b) エンコーディング」を参照してください。

Multi Web Portletを取り込む場合，ターゲットとするデバイス（PC，ｉモード，またはEZweb）に，ポートレットを表示するための設定を行います。

この設定の詳細は，「5.5　デバイスに対応するための設定（Multi Web Portlet）」を参照してください。

Web App PortletおよびWeb Page Portletをポータルに取り込む場合

コンテンツ中に日本語を記述する場合，エンコーディング方法を指定する必要があります。エンコーディング方法の指定については，「5.4.2(1)(b) エンコーディング」を参照してください。

Webポートレットをポータルに登録します。
Webポートレットをポータルに登録する際に，コンテンツに含まれるタグ，および要素をフィルタリングできます。Multi Web Portletの要素フィルタリングで取り除かれるタグ，および要素については，「5.4.1(5) 要素フィルタリング」を，Web App PortletおよびWeb Page Portletの要素フィルタリングで取り除かれるタグ，および要素については，「5.4.2(5) 要素フィルタリング」を参照してください。
また，Webポートレットをポータルに登録する際に，ポータルに取り込むコンテンツを抽出，または削除できます。Multi Web Portletのコンテンツフィルタリングについては，「5.4.1(6) コンテンツフィルタリング」を，Web App PortletおよびWeb Page Portletのコンテンツフィルタリングにつていは，「5.4.2(6) コンテンツフィルタリング」を参照してください。
要素フィルタリングおよびコンテンツフィルタリングは，ポートレットの登録時に設定できます。ポートレットの登録方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレットの登録」の説明を参照してください。

5.3　Webポートレット全般の前提知識

この節では，Webポートレットが対応するHTMLのバージョン，およびポータルに取り込めるWebポートレットの条件について説明します。

＜この節の構成＞

5.3.1　HTMLバージョン

5.3.2　Webポートレットを取り込むための条件

5.3.1　HTMLバージョン

WebポートレットではMIMEタイプとしてtext/htmlに対応しています。また，HTML 4.01に対応しています。

5.3.2　Webポートレットを取り込むための条件

Webポートレットを取り込むための条件を，Webポートレットごとに説明します。次の場合は，Webポートレットを取り込めません。

Multi Web Portlet

JavaScriptを使用しているWebサイトの場合

JavaScriptのonloadおよびonunload
JavaScriptのonloadおよびonunloadは無視されます。

JavaScript内にURLを記述しているとき
JavaScriptで指定したURLは，認識されません。

（例）window.open

HTMLをJavaScriptで動的に更新しているとき
FORM要素のACTION属性のURLを動的に更新するときです。

（例）location.href

ほかのポートレットと名称が重複するとき
複数のポートレットでJavaScriptを使用している場合，スクリプトの関数やグローバル変数の定義は，ほかと重複しない名称にしてください。

JavaScriptによるTarget要素の書き換えがあるとき
LINK要素のTARGETが，SCRIPTによって書き換えられているとき，最大画面に切り替わりません。また，TARGET要素の書き換えによっては，ポートレットにコンテンツが正しく表示されないことがあります。

HTMLのエンコーディング設定がないWebサイトの場合
Webポートレットを取り込むには，次のどちらかのエンコーディング設定をしてください。

HTTPレスポンスヘッダのContent-Typeフィールドのcharsetパラメタ

META要素中のContent-Type指定のcharsetパラメタ

スタイルシート内にURLが記述されているポータルシステムの場合

ポータルシステムが認識できない部分でURL変換する仕組みを持つWebサイトの場合

iframeタグを含むWebサイトの場合
次のWebブラウザで参照することが前提となります。

Internet Explorer

Firefox

Netscape Navigator

画面の表示先の指定がポータルの画面外であるWebサイトの場合
HTMLコンテンツの画面の表示先（A要素のTARGET属性）に「PARENT」が指定されている場合などです。

Web App PortletおよびWeb Page Portlet

フレーム（FRAMESET要素）を利用しているWebサイトの場合

JavaScriptを使用しているWebサイトの場合

JavaScriptのonloadおよびonunload
JavaScriptのonloadおよびonunloadは無視されます。

JavaScript内にURLを記述しているとき
JavaScriptで指定したURLは，認識されません。

（例）window.open

HTMLをJavaScriptで動的に更新しているとき
FORM要素のACTION属性のURLを動的に更新するときです。

（例）location.href

ほかのポートレットと名称が重複するとき
複数のポートレットでJavaScriptを使用している場合，スクリプトの関数やグローバル変数の定義は，ほかと重複しない名称にしてください。

HTMLのエンコーディング設定がないWebサイトの場合
Webポートレットを取り込むには，次のどちらかのエンコーディング設定をしてください。

HTTPレスポンスヘッダのContent-Typeフィールドのcharsetパラメタ

META要素中のContent-Type指定のcharsetパラメタ

スタイルシート内にURLが記述されているポータルシステムの場合

ポータルシステムが認識できない部分でURL変換する仕組みを持つWebサイトの場合

5.4　Webポートレット作成時の注意事項

この節では，Webポートレットを作成する際に，注意していただきたいことについて説明します。

＜この節の構成＞

5.4.1　Multi Web Portlet作成時の注意事項

5.4.2　Web App PortletおよびWeb Page Portlet作成時の注意事項

5.4.1　Multi Web Portlet作成時の注意事項

＜この項の構成＞

(1)　HTTPエミュレーション

(2)　認証

(3)　URL変換

(4)　キャッシュ制御

(5)　要素フィルタリング

(6)　コンテンツフィルタリング

(7)　外部サーバとのセッション維持

(8)　その他の注意事項

(1)　HTTPエミュレーション

(a)　HTTPエミュレーション

Multi Web Portletは，HTTPでHTMLコンテンツを取得して，ポートレットとしてポータルに統合します。Multi Web PortletはHTTP1.1のサブセットに対応します。HTTPレスポンスコードの取り扱いを次の表に示します。

表5-2　レスポンスコードの取り扱い（Multi Web Portlet）

レスポンスコード
内容

1xx：Informational
結果フレーズをポートレットおよびログに出力します。

2xx：Successful
200（正常終了）に対応します。201から206は結果フレーズをポートレットおよびログに出力します。

3xx：Redirection
301，302，303，307（リダイレクト）に対応します。300，304，305，およびGET，またはHEAD以外のリクエストによって301，または307が返ってきた場合は，結果フレーズをポートレットおよびログに出力します。※

4xx：Client Error
401（Unauthorized）および407（Proxy Authentication Required）に対応します。
401および407以外は，結果フレーズをポートレットおよびログに出力します。

5xx：Server Error
結果フレーズをポートレットおよびログに出力します。

注※　Multi Web Portletでは，301または302が返ってきた場合，レスポンスコードへの対応は使用するWebブラウザによって異なります。

対応するレスポンスヘッダフィールドの取り扱いを次の表に示します。

表5-3　レスポンスヘッダフィールドの取り扱い（Multi Web Portlet）

ヘッダフィールド | 内容
Cache-Control | キャッシュ制御に使用します。キャッシュ制御の指定は，Portal ManagerのWebポートレット設定時に定義できます。詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。
Content-Type | コンテンツのエンコーディング判定に使用します。text/htmlだけに対応します。
Last-Modified | コンテンツの最終更新時刻です。キャッシュ制御に使用します。
Location | リダイレクト先のURLです。リダイレクト時に使用します。
Set-Cookie | 指定されたCookie値をサーバ内で保持します。
Set-Cookie2 | 指定されたCookie値をサーバ内で保持します。
WWW-Authenticate | ベーシック認証を試みます。
Proxy-Authenticate | プロキシ認証を試みます。

クライアントからのリクエストヘッダフィールドの取り扱いを次の表に示します。

表5-4　リクエストヘッダフィールドの取り扱い（Multi Web Portlet）

ヘッダフィールド | 内容
Host | リクエスト先のホスト名を設定します。
Accept | 対応するMIMEタイプを設定します。
Accept-Encoding | 対応するエンコーディングを設定します。
Accept-Language | 対応する言語を設定します。
User-Agent | リクエストしたUser-Agentを設定します。
If-Modified-Since | コンテンツの最終更新時刻を設定します。
Cookie | Set-Cookie1でサーバに保存されたCookieを設定します。
Cookie2 | Set-Cookie2でサーバに保存されたCookieを設定します。
Authorization | ベーシック認証に必要な認証情報を設定します。
Proxy-Authorization | プロキシ認証に必要な認証情報を設定します。

(b)　エンコーディング

HTMLコンテンツに日本語を記述する場合には，通常のHTMLコンテンツ同様，エンコーディング方法を指定する必要があります。エンコーディング方法の決定は，外部のWebサイトに格納されたHTMLコンテンツとuCosminexus Portal Framework内に配置したHTMLコンテンツで異なります。

uCosminexus Portal Frameworkでは，ユーザの環境による文字化けを防ぐために，ユーザの環境ごとにエンコーディング方法を推奨しています。uCosminexus Portal Frameworkが推奨するエンコーディングについては，「2.1.4　エンコーディング」を参照してください。

●外部Webサーバ上のHTMLコンテンツのエンコーディング指定

エンコーディング方法は，次の優先順位で決定されます。

HTTPレスポンスヘッダのContent-Typeフィールドのcharsetパラメタ

META要素中のContent-Type指定のcharsetパラメタ

自動判定

自動判定では，正しいエンコーディング方法を決定できないことがあるので，1.，または2.でのエンコーディング指定を推奨します。

(c)　プロキシ連携

プロキシを経由してコンテンツを取得できます。プロキシと連携するには，Portal ManagerのWebポートレット設定時に定義できます。詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

(d)　リダイレクト

Multi Web Portletは，リダイレクト回数設定はできません。

(2)　認証

(a)　認証に対するシングルサインオン

PCからポータルにアクセスしている場合，ディレクトリサーバに格納されているユーザ情報（パーソナライズ情報）から認証情報を取得すれば，Webアプリケーションとのシームレスな連携ができます。

認証機能が利用できる前提条件を次に示します。

ポートレットに表示しているアプリケーションへの，ログイン前のページの認証
認証先が参照のチェックをするアプリケーションの場合

JavaScriptを使用しているWebサイトの認証
JavaScriptで認証フィールドを動的に変更および生成している場合

●ベーシック認証

Webサーバのレスポンスコードが401（Unauthorized）の際，次の処理をします。

ユーザログイン時
対象URLに対応するユーザID，およびパスワードをリポジトリから取得して自動的に認証します。この機能は，ユーザがユーザIDとパスワードを登録すれば使用できるようになります。登録されていない場合は，ユーザIDとパスワードを登録するフォームを出力します。なお，管理者があらかじめユーザIDとパスワードを登録することはできません。

ウェルカム画面（ユーザがログインしていない場合）
ウェルカム画面でのWebサーバに対応する認証はしません。

●プロキシ認証

プロキシサーバのレスポンスコードが407（Proxy Authentication Required）の際，次の処理をします。

ユーザログイン時
ユーザがログインすると，ユーザ情報取得Beanを使用して，リポジトリから対象となるプロキシサーバに対応するユーザIDおよびパスワードを取得して，自動的に認証します。該当するユーザID，およびパスワードが登録されていない場合は，ユーザが入力できるようにフォームを出力します。なお，管理者があらかじめユーザIDとパスワードを登録することはできません。

ウェルカム画面（ユーザがログインしていない場合）
ウェルカム画面でのプロキシサーバに対応する認証はしません。

●フォーム認証

Webサーバへのリクエスト情報を基にシングルサインオンを実現します。Multi Web Portletの場合，認証するサイトによって，認証画面を通過する必要があるとき，シングルサインオンはできません。パスワードの入力ミスなどによってフォーム認証に失敗した場合は，認証情報をクリアして，再度認証情報を入力する必要があります。

Multi Web Portletの場合は，ポートレットの編集ボタンをクリックし，「フォームベース認証のクリア」を実行して，再度認証情報を入力してください。

フォーム認証をするためには，次に示す項目をあらかじめ設定しておくことが必要です。

認証するページのURL

ログインするページのURL

認証時に使用するメソッド

認証情報を示すフィールド

なお，管理者があらかじめユーザIDとパスワードを登録することはできません。

Multi Web Portletは，Portal Managerでフォーム認証情報を設定します。Multi Web Portletの場合のフォーム認証を設定する方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

(3)　URL変換

Multi Web Portletでは，ポータル画面内で画面遷移するために，Webページに含まれている相対パス形式および絶対パス形式のURLを，uCosminexus Portal Frameworkを経由するURLに変換します。BASE要素で基準となるURLが指定されている場合，BASE要素を基に自動的に変換します。

HTMLコンテンツ中に含まれる画像などのバイナリデータを，uCosminexus Portal Frameworkを経由して取得するか，またはWebブラウザが直接Webサーバから取得するかをPortal Managerでポートレットを登録するときに選択できます。この設定方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

(4)　キャッシュ制御

Multi Web Portletでは，uCosminexus Portal Framework内にHTML，CHTML，およびHDMLコンテンツをキャッシングしません。ただし，クライアントと転送先のWebサーバ間では，日付情報の有効期限を基に，クライアントに蓄積されたキャッシュを使用できます。

(5)　要素フィルタリング

要素フィルタリングは，Multi Web Portletの登録時に，フィルタリングするかしないかを設定できます。タグ，要素は取り除かれますが，コンテンツを表示するために必要なBASE要素やエンコーディング設定，およびキャッシュ制御に必要なMETA要素の一部はコンテンツ作成のために参照されます。

Multi Web Portletは，BODY本体内に記述できない開始，終了タグや要素を取り除きません。

Multi Web PortletのフィルタリングはPortal Managerの［ポートレットの設定］画面で設定します。フィルタリングの設定方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

要素フィルタリングで取り除かれるタグ，要素を次に示します。

APPLET要素

OBJECT要素

SCRIPT要素

なお，SCRIPT要素を設定すると，onで始まるイベント属性も設定されます。

(6)　コンテンツフィルタリング

コンテンツフィルタリングとは，HTMLファイルをMulti Web Portletとして取り込む際に，コンテンツを抽出，または削除することです。コンテンツフィルタリングを使用すると，HTMLファイルの一部分をポートレットに取り込めます。コンテンツフィルタリングは，Webポートレットの登録時に設定できます。コンテンツフィルタリングの設定方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

コンテンツフィルタリングでは，コンテンツのBODY要素本体に含まれるディレクティブに従ってコンテンツを抽出，または削除します。ディレクティブも同時に抽出・削除します。

ディレクティブは，コメントまたは正規表現で指定できます。

なお，コンテンツフィルタリングの設定を次に示します。

表5-5　コンテンツフィルタリングの設定（Multi Web Portlet）

フィルタリング方式 | 正規表現 | コメント
削除 | ○ | ×
抽出 | × | ×

（凡例）

○：設定できます。

×：設定できません。

正規表現でのディレクティブ指定

HTMLファイルの文字列をパターンとして指定します。パターンはWebポートレットごとに指定できます。

パターンを指定できる範囲を次に示します。

先頭からパターンまで

パターンからパターンまで

パターンから終了まで

指定するパターンは大文字小文字を区別します。また，パターンには「,」および「|」は指定できません。HTMLファイルの文字列が，正規表現と合致しない場合，コンテンツフィルタリングをしません。

パターンからパターンまでの範囲は，複数指定できます。複数のフィルタリング範囲を指定する場合，フィルタリング範囲が重複しないようにパターンを指定してください。パターンからパターンまでの範囲では，パターン1およびパターン2を指定します。パターン2には，パターン1よりファイル内で後ろに記述されている文字列を指定します。

正規表現でのコンテンツフィルタリングの使用例

正規表現で削除するときの例を次に示します。

特定個所のタグを消去する

特定のタグを一括して消去する

コメント間を削除する

(7)　外部サーバとのセッション維持

Multi Web Portletでは，外部Webサーバとのセッションを維持できます。セッション維持の方法を次に示します。

Cookieによるセッション維持

URLRewritingによるセッション維持

(a)　Cookieによるセッション維持

外部WebサーバからのレスポンスからCookieを取得します。WebブラウザにはCookieを渡さないで，ポータルで保持します。ユーザがポータルにログインしており，かつ有効期限が永続的なCookieは，セッションが終了するとディレクトリサーバに保存されます。Cookieによるセッション維持を次の図に示します。

図5-2　Cookieによるセッション維持（Multi Web Portlet）

(b)　URLRewritingによるセッション維持

URLを読み込んだあとにURLを書き換えて，セッションを維持します。

(8)　その他の注意事項

(a)　スタイル

Multi Web Portletではスタイルシートはページコンテンツ内のスタイルを使用します。

(b)　FRAMESET

Multi Web Portletでは，FRAMESETを使用したHTMLコンテンツを表示できます。

(c)　スクリプトを使用するには

スクリプトを使用するには，Webポートレットの登録の際に次の設定をしてください。

スクリプトの関数やグローバル変数の定義は異なる名称を指定します。

SCRIPT要素およびonで始まるイベント属性の削除オプションを［削除しない］にします。
デフォルトでは，SCRIPT要素およびonで始まるイベント属性は削除されます。

(d)　インラインオブジェクトとの連携

HTML中に組み込まれるオブジェクトとMulti Web Portletは連携できません。

(e)　画面遷移

Multi Web Portletでは，HTMLコンテンツの場合，画面の表示先を指定するTARGETに「_PARENT」を指定しないでください。TARGETには「_TOP」，またはフレーム名を指定してください。なお，Multi Web Portletの画面内で「_PARENT」を使用した場合，ポータル画面が遷移することがあります。

(f)　最大化表示

Multi Web Portletの場合，次の条件のときは最大表示画面に切り替わりません。なお，最大化表示は，SCRIPTを使用している場合は設定しないでください。

認証画面表示直後
通常表示画面状態で，認証画面が表示された直後は最大画面には切り替わりません。

Frame内のリンク要素
Frame内のリンク要素をクリックした場合は，最大画面に切り替わりません。

ScriptによるTarget要素の書き換え
SCRIPTによって，LINK要素のTARGETが書き換えられている場合，最大画面に切り替わりません。また，TARGET要素の書き換えによっては，ポートレットにコンテンツが正しく表示されなくなります。

レスポンスコードが302の場合
レスポンスコードに302が返された場合，最大画面に切り替わりません。

(g)　ポータル内のコンテンツ処理

Multi Web Portletでは，ポータル内のWebコンテンツ（HTML，CHTML，およびHDML）に対して次の処理をしません。

コンテンツ内のURL変換

画面遷移時の自動最大化表示

(h)　プロキシサーバ使用時の注意事項

使用するプロキシサーバの種類によっては，ソケットレベルでの通信障害が発生することがあります。ソケットレベルでの通信障害が発生した場合，ポートレット定義ファイルのMulti Web Portletのポートレット定義に"hptl.MultiWebPortlet.ClientCacheSwitch"パラメタを追加して，valueに"NO"を指定してください。この設定によって，クライアントに蓄積されたキャッシュが使用できなくなり，通信障害を取り除けます。

なお，Portal Managerで設定を変更すると，ポートレット定義ファイルが上書きされるため，追加した"hptl.MultiWebPortlet.ClientCacheSwitch"パラメタは無効になります。Portal Managerで設定を変更した場合，再度，"hptl.MultiWebPortlet.ClientCacheSwitch"パラメタを追加してください。ポートレット定義ファイルについては，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレット定義ファイル（jetspeed-config.jcfg）」の説明を参照してください。

ポートレット定義ファイル（jetspeed-config.jcfg）の格納場所を次に示します。

{PROJECT_HOME}¥WEB-INF¥conf

ポートレット定義ファイルに追加した場合の例，および特定のポートレットにだけ追加した場合の例を次に示します。

ポートレット定義ファイルに追加した場合の例（下線部分を追加）

<portlet-entry type="abstract" name="MultiWeb">
 <classname>jp.co.hitachi.soft.portal.portal.portlets.MultiWebPortlet</classname>
 <parameter value="NO" name="hptl.MultiWebPortlet.ClientCacheSwitch"/>
 <parameter value="localhost" name="hptl.ProxyHost"/>
 <parameter value="8080" name="hptl.ProxyPort"/>
</portlet-entry>

特定のポートレットにだけ追加した場合の例（下線部分を追加）

<portlet-entry application="false" admin="false" parent="MultiWeb"
                            hidden="false" type="ref" name="Hitachi">
 <url>/portlets/hitachi.xml</url>
 <parameter value="NO" name="hptl.MultiWebPortlet.ClientCacheSwitch"/>
 <parameter value="true" name="hptl.MaximizeMode"/>
 <parameter value="false" name="hptl.MinimizeMode"/>
 <parameter value="false" name="hptl.CloseMode"/>
 <parameter value="localhost" name="hptl.ProxyHost"/>
 <parameter value="8080" name="hptl.ProxyPort"/>
 <parameter value="YES" name="hptl.MultiWebPortlet.AppletRemove"/>
 <parameter value="YES" name="hptl.MultiWebPortlet.ObjectRemove"/>
 <parameter value="YES" name="hptl.MultiWebPortlet.ScriptRemove"/>
 <parameter value="Portal"
                     name="hptl.MultiWebPortlet.BinaryDataFetching"/>
 <parameter value="FALSE" name="hptl.MultiWebPortlet.AutoMaxChange"/>
 <meta-info>
   <title>日立製作所</title>
   <description>日立製作所 ホームページ</description>
 </meta-info>
</portlet-entry>

5.4.2　Web App PortletおよびWeb Page Portlet作成時の注意事項

＜この項の構成＞

(1)　HTTPエミュレーション

(2)　認証

(3)　URL変換

(4)　キャッシュ制御

(5)　要素フィルタリング

(6)　コンテンツフィルタリング

(7)　外部サーバとのセッション維持

(8)　その他の注意事項

(1)　HTTPエミュレーション

(a)　HTTPエミュレーション

Webポートレットは，HTTPでHTMLコンテンツを取得して，ポートレットとしてポータルに統合します。WebポートレットはHTTP1.1のサブセットに対応します。HTTPレスポンスコードの取り扱いを次の表に示します。

表5-6　レスポンスコードの取り扱い（Web App PortletおよびWeb Page Portlet）

レスポンスコード
内容

1xx：Informational
結果フレーズをポートレットおよびログに出力します。

2xx：Successful
200（正常終了）に対応します。201から206は結果フレーズをポートレットおよびログに出力します。

3xx：Redirection
301，302，303，307（リダイレクト）に対応します。300，304，305，およびGET，またはHEAD以外のリクエストによって301，または307が返ってきた場合は，結果フレーズをポートレットおよびログに出力します。※１

4xx：Client Error
401（Unauthorized）および407（Proxy Authentication Required）に対応します。※2
401および407以外は，結果フレーズをポートレットおよびログに出力します。

5xx：Server Error
結果フレーズをポートレットおよびログに出力します。

注※1　Web App Portletでは，POST後に302が返却された場合，ユーザに確認しないでリダイレクトします。なお，一般的なWebブラウザと同様にPOST後の302レスポンスコードに対応します。

注※2　Web Page Portletは対応していません。

対応するレスポンスヘッダフィールドの取り扱いを次の表に示します。

表5-7　レスポンスヘッダフィールドの取り扱い（Web App PortletおよびWeb Page Portlet）

ヘッダフィールド | 内容
Cache-Control | キャッシュ制御に使用します。キャッシュ制御の指定は，Portal ManagerのWebポートレット設定時に定義できます。詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。
Content-Type | コンテンツのエンコーディング判定に使用します。text/htmlだけに対応します。
Last-Modified | コンテンツの最終更新時刻です。キャッシュ制御に使用します。
Location | リダイレクト先のURLです。リダイレクト時に使用します。
Set-Cookie | 指定されたCookie値をサーバ内で保持します。Web Page Portletは対応していません。
Set-Cookie2 | 指定されたCookie値をサーバ内で保持します。Web Page Portletは対応していません。
WWW-Authenticate | ベーシック認証を試みます。Web Page Portletは対応していません。
Proxy-Authenticate | プロキシ認証を試みます。Web Page Portletは対応していません。

クライアントからのリクエストヘッダフィールドの取り扱いを次の表に示します。

表5-8　リクエストヘッダフィールドの取り扱い（Web App PortletおよびWeb Page Portlet）

ヘッダフィールド | 内容
Host | リクエスト先のホスト名を設定します。
Accept | 対応するMIMEタイプを設定します。
Accept-Encoding | 対応するエンコーディングを設定します。
Accept-Language | 対応する言語を設定します。
User-Agent | リクエストしたUser-Agentを設定します。Web App Portletでは，User-Agentの内容をuCosminexus Portal Framework独自のUser-Agentの内容に設定できます。この設定は，Portal ManagerのWebポートレット設定時に定義できます。詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。
If-Modified-Since | コンテンツの最終更新時刻を設定します。
Cookie | Set-Cookie1でサーバに保存されたCookieを設定します。Web Page Portletは対応していません。
Cookie2 | Set-Cookie2でサーバに保存されたCookieを設定します。Web Page Portletは対応していません。
Authorization | ベーシック認証に必要な認証情報を設定します。Web Page Portletは対応していません。
Proxy-Authorization | プロキシ認証に必要な認証情報を設定します。Web Page Portletは対応していません。

(b)　エンコーディング

HTMLコンテンツ中に日本語を記述する場合には，通常のHTMLコンテンツ同様，エンコーディング方法を指定する必要があります。エンコーディング方法の決定は，外部のWebサイトに格納されたHTMLコンテンツとuCosminexus Portal Framework内に配置したHTMLコンテンツで異なります。

uCosminexus Portal Frameworkでは，ユーザの環境による文字化けを防ぐために，ユーザの環境ごとにエンコーディング方法を推奨しています。uCosminexus Portal Frameworkが推奨するエンコーディングについては，「2.1.4　エンコーディング」を参照してください。

外部Webサーバ上のHTMLコンテンツのエンコーディング指定

エンコーディング方法は，次の優先順位で決定されます。

HTTPレスポンスヘッダのContent-Typeフィールドのcharsetパラメタ

META要素中のContent-Type指定のcharsetパラメタ

自動判定

自動判定では，正しいエンコーディング方法を決定できないことがあるので，1.，または2.でのエンコーディング指定を推奨します。

●ポータル内のHTMLコンテンツのエンコーディング指定

エンコーディング方法は，次の優先順位で決定されます。

META要素中のContent-Type指定のcharsetパラメタ

自動判定

自動判定では，正しいエンコーディング方法を決定できないことがあるので，META要素中のContent-Type指定のcharsetパラメタでのエンコーディング指定を推奨します。外部Webサイトの方法と異なり，ポータル内のHTMLコンテンツは，HTTPレスポンスヘッダでエンコーディングを指定できません。

(c)　プロキシ連携

プロキシを経由してコンテンツを取得できます。プロキシと連携するには，Portal ManagerのWebポートレット設定時に定義できます。詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

(d)　リダイレクト

Web App Portletレスポンスコードの301，302，303，307に対応します。Web App PortletおよびWeb Page Portletでは，Portal ManagerのWebポートレット設定時に最大リダイレクト回数を設定できます。0から10の値を指定できます。詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

(2)　認証

(a)　認証に対するシングルサインオン

PCからポータルにアクセスしている場合，ディレクトリサーバに格納されているユーザ情報（パーソナライズ情報）から認証情報を取得することによって，Webアプリケーションとのシームレスな連携ができます。なお，Web Page Portletでは，シングルサインオンはできません。

認証機能が利用できる前提条件を次に示します。

ポートレットに表示しているアプリケーションへの，ログイン前のページの認証
認証先が参照のチェックをするアプリケーションの場合

JavaScriptを使用しているWebサイトの認証
JavaScriptで認証フィールドを動的に変更および生成している場合

●ベーシック認証

Webサーバのレスポンスコードが401（Unauthorized）の際，次の処理をします。

ユーザログイン時
対象URLに対応するユーザID，およびパスワードをリポジトリから取得して自動的に認証します。この機能は，ユーザがユーザIDとパスワードを登録すれば使用できるようになります。登録されていない場合は，ユーザIDとパスワードを登録するフォームを出力します。なお，管理者があらかじめユーザIDとパスワードを登録することはできません。

ウェルカム画面（ユーザがログインしていない場合）
ウェルカム画面でのWebサーバに対応する認証はしません。

●プロキシ認証

プロキシサーバのレスポンスコードが407（Proxy Authentication Required）の際，次の処理をします。

ユーザログイン時
ユーザがログインすると，ユーザ情報取得Beanを使用して，リポジトリから対象となるプロキシサーバに対応するユーザIDおよびパスワードを取得して，自動的に認証します。該当するユーザID，およびパスワードが登録されていない場合は，ユーザが入力できるようにフォームを出力します。なお，管理者があらかじめユーザIDとパスワードを登録することはできません。

ウェルカム画面（ユーザがログインしていない場合）
ウェルカム画面でのプロキシサーバに対応する認証はしません。

●フォーム認証

Webサーバへのリクエスト情報を基にシングルサインオンを実現します。Web App Portletの場合，シングルサインオン後は，認証の成功・失敗にかかわらず「ログイン失敗」のリンクが表示されます。認証するサイトによって，認証画面を通過する必要がある場合，シングルサインオンはできません。パスワードの入力ミスなどによってフォーム認証に失敗した場合は，認証情報をクリアして，再度認証情報を入力する必要があります。

Web App Portletの場合は，「ログイン失敗」のリンクをクリックして表示される画面に従って，認証情報を入力します。

フォーム認証をするためには，次に示す項目をあらかじめ設定しておくことが必要です。

認証するページのURL

ログインするページのURL

認証時に使用するメソッド

認証情報を示すフィールド

なお，管理者があらかじめユーザIDとパスワードを登録することはできません。

Web App Portletは，フォーム認証定義ファイルで，フォーム認証情報を設定します。Web App Portletを使用する場合のフォーム認証の設定方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「フォーム認証定義ファイル（formbase-auth.cfg）」の説明を参照してください。

(3)　URL変換

Webポートレットでは，ポータル画面内で画面遷移するために，Webページに含まれている相対パス形式および絶対パス形式のURLを，uCosminexus Portal Frameworkを経由するURLに変換します。BASE要素で基準となるURLが指定されている場合，BASE要素を基に自動的に変換します。

HTMLコンテンツ中に含まれる画像などのインラインオブジェクトは，通常uCosminexus Portal Frameworkを経由しないで，Webブラウザが直接Webサーバから取得します。Web App Portletでは，インラインオブジェクトの取得先をポートレット登録時にPortal Managerで設定できます。プロキシやコンテンツを格納するWebサーバがアクセス制御している場合，および各種認証に対してシングルサインオンをする場合は，Web App Portletではインラインオブジェクトの取得先を［ポータルサーバを経由して取得］に設定してください。

インラインオブジェクトの取得先の設定方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

(4)　キャッシュ制御

Webポートレットでは，uCosminexus Portal Framework内でHTMLコンテンツをキャッシングします。キャッシングは，HTTP1.1と同機能に基づいています。キャッシュ範囲はレスポンスのボディだけです。インラインオブジェクトは，キャッシュ対象となりません。

Web App Portletでは，ポートレットごとにキャッシュ制御の設定ができます。キャッシュ制御の設定は，Webポートレットの登録時にPortal Managerで，［有効］または［無効］を設定できます。デフォルトでは，［有効］に設定されています。キャッシュ制御の設定方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

次の場合は，キャッシュ制御を無効にしてください。サーバからのCache-Controlフィールドを無視して強制的にコンテンツを取得します。

ベーシック認証，プロキシ認証，フォーム認証のどれかを使用する場合

動的コンテンツを参照する場合

頻繁に内容が変更されるコンテンツを利用する場合

ユーザごとに異なるコンテンツを利用する場合

(a)　コンテンツの有効期限

コンテンツの有効期限を基にキャッシュ検証されます。コンテンツの有効期限は，Portal ManagerのWebポートレット設定時に指定できます。詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

コンテンツの有効期限は，次の優先順位で決定します。

HTTPレスポンスヘッダのCache-Controlフィールド指定
ローカルコンテンツの場合は指定できません。

META要素中のCache-Control指定

ポートレット定義ファイルのWebPageエントリで指定されるデフォルト動作指定

(b)　キャッシュ容量

キャッシュには，メモリキャッシュとディスクキャッシュがあり，それぞれ格納するコンテンツの最大数がプロパティファイルで設定できます。プロパティファイル（PortalResources.properties）の格納場所を次に示します。

{PROJECT_HOME}¥WEB-INF¥conf

プロパティファイル（PortalResources.properties）の詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「PortalResources.propertiesの詳細」の説明を参照してください。

キャッシュ容量の設定を次の表に示します。

表5-9　キャッシュ容量の設定

属性 | 内容 | デフォルト値
jp.co.hitachi.soft.portal.webpage.cache.directory | ディスクキャッシュの格納ディレクトリ | {PROJECT_HOME}/WEB-INF/cosmi/webpage/cache
jp.co.hitachi.soft.portal.webpage.cache.memMaxSize | メモリキャッシュに格納する最大コンテンツ数 | 16
jp.co.hitachi.soft.portal.webpage.cache.diskMaxSize | ディスクキャッシュに格納する最大コンテンツ数 | 128

メモリキャッシュおよびディスクキャッシュは，ご使用の環境に合わせた妥当値を設定してください。

(c)　キャッシュクリア

キャッシュクリアでは，キャッシュ機能を使用時に登録済みのコンテンツを更新した場合，画面表示を最新にします。キャッシュクリアは，すべてのキャッシュエントリに対して実行されます。ポートレットごとのキャッシュ検証はできません。キャッシュクリアの通知はPortal Managerの［キャッシュクリアの実行］で設定します。

キャッシュクリアは，Webポートレットにキャッシュの強制検証を通知します。キャッシュクリアはローカルホストだけに有効です。クラスタ構成の場合はホストごとにキャッシュクリアを実行する必要があります。

キャッシュクリアは，Portal Manager，または強制検証コマンドで実行します。

Portal Managerを使用してキャッシュをクリアする手順については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「キャッシュクリアの実行」の説明を参照してください。

強制検証コマンドの書式を次に示します。

cpfwvali.bat プロジェクト名称

なお，強制検証コマンドを使用するためには次の環境変数の設定を行ってください。

サーブレットエンジンモードの場合

変数名 | 値
COSMI_PORTAL_HOME | ｛Cosminexusインストールディレクトリ｝¥CC¥web¥containers¥｛サーバ名称｝¥webapps

J2EEモードの場合

変数名 | 値
COSMI_PORTAL_HOME | ｛Cosminexusインストールディレクトリ｝¥CC¥server¥Public¥Web¥｛サーバ名称｝

(5)　要素フィルタリング

Web App PortletおよびWeb Page Portletは，指定したWebページをポータル画面に取り込む際，BODY本体内に記述できない開始，終了タグや要素が取り除かれます。要素フィルタリングは，Webポートレットの登録時に，フィルタリングするかしないかを設定できます。タグ，要素は取り除かれますが，コンテンツを表示するために必要なBASE要素やエンコーディング設定，およびキャッシュ制御に必要なMETA要素の一部はコンテンツ作成のために参照されます。

Web App PortletおよびWeb Page PortletのフィルタリングはPortal Managerの［ポートレットの設定］画面で設定します。要素フィルタリングの設定方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

要素フィルタリングで取り除かれるタグ，要素と設定を次の表に示します。

表5-10　要素フィルタリングで取り除かれるタグ，要素の一覧

取り除かれるタグ，要素 | フィルタリングの設定
DOCTYPE宣言 | ×
HTML開始，終了タグ | ×
HEAD要素 | ○
BODY開始，終了タグ | ×
FRAMESET要素 （NOFRAMES要素の本体は除く） | ×
APPLET要素 | ○
OBJECT要素 | ○
SCRIPT要素（対応するNOSCRIPT要素の本体は除く） | ○
onで始まるイベント属性 | ○

（凡例）

○：設定できます。

×：設定できません。

(6)　コンテンツフィルタリング

コンテンツフィルタリングとは，HTMLファイルをWebポートレットとして取り込む際に，コンテンツを抽出，または削除することです。コンテンツフィルタリングを使用すると，HTMLファイルの一部分をポートレットに取り込めます。コンテンツフィルタリングは，Webポートレットの登録時にPortal Managerの［ポートレットの設定］画面で設定できます。コンテンツフィルタリングの設定方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

コンテンツフィルタリングでは，コンテンツのBODY要素本体に含まれるディレクティブに従ってコンテンツを抽出，または削除します。ディレクティブも同時に抽出・削除します。

ディレクティブは，コメントまたは正規表現で指定できます。

なお，コンテンツフィルタリングの設定は，Webポートレットの種類によって異なります。対応するフィルタリングの設定を次に示します。

表5-11　コンテンツフィルタリングの設定（Web App Portlet）

フィルタリング方式 | 正規表現 | コメント
削除 | ○ | ○
抽出 | ○ | ○

（凡例）

○：設定できます。

×：設定できません。

表5-12　コンテンツフィルタリングの設定（Web Page Portlet）

フィルタリング方式 | 正規表現 | コメント
削除 | × | ○
抽出 | × | ×

（凡例）

○：設定できます。

×：設定できません。

コメントでのディレクティブ指定

<!--　　　　-->で囲まれたコメント内にあるキーワードでフィルタリング範囲を指定します。BODY本体の既存のコメント，または新規に追加したコメントをディレクティブとして使用できます。要素フィルタリングで取り除かれる要素内にあるディレクティブは，使用できません。

フィルタリング範囲は，開始キーワードを含むコメントから，それ以降で最初に対応する終了キーワードを含むコメントまでです。キーワードはポートレットごとに指定できます。

開始キーワードと終了キーワードを一組で指定します。コメント中に含まれる開始キーワードと終了キーワードは，コンマで区切って指定します。

同一コメント中に開始キーワードが複数ある場合は，先に合致したキーワードを使用します。キーワードとして「,」，「"」，および「|」は使用できません。

ディレクティブを複数指定できます。フィルタリング範囲が重複しないようにキーワードを設定します。

開始ディレクティブに対応する有効な終了ディレクティブがない場合は，開始ディレクティブ以降のコンテンツすべてがフィルタリング対象となります。

ディレクティブとして，開始キーワードに"What's New"を，終了キーワードに"Information"を指定したフィルタリング削除の例を次の図に示します。

図5-3　コメントでのフィルタリング削除

正規表現でのディレクティブ指定

HTMLファイルの文字列をパターンとして指定します。パターンはWebポートレットごとに指定できます。

パターンを指定できる範囲を次に示します。

先頭からパターンまで

パターンからパターンまで

パターンから終了まで

指定するパターンは大文字小文字を区別します。また，パターンには「,」および「|」は指定できません。HTMLファイルの文字列が，正規表現と合致しない場合，コンテンツフィルタリングをしません。

パターンからパターンまでの範囲は，複数指定できます。複数のフィルタリング範囲を指定する場合，フィルタリング範囲が重複しないようにパターンを指定してください。パターンからパターンまでの範囲では，パターン1およびパターン2を指定します。パターン2には，パターン1よりファイル内で後ろに記述されている文字列を指定します。

(7)　外部サーバとのセッション維持

Web App Portletでは，外部Webサーバとのセッションを維持できます。Web Page Portletでは外部サーバとセッション維持できません。セッション維持の方法を次に示します。

Cookieによるセッション維持

URLRewritingによるセッション維持

(a)　Cookieによるセッション維持

外部WebサーバからのレスポンスからCookieを取得します。WebブラウザにはCookieを渡さないで，ポータルで保持します。ユーザがポータルにログインしており，かつ有効期限が永続的なCookieは，セッションが終了するとディレクトリサーバに保存されます。Cookieによるセッション維持を次の図に示します。

図5-4　Cookieによるセッション維持（Web App Portlet）

(b)　URLRewritingによるセッション維持

URLを読み込んだあとにURLを書き換えて，セッションを維持します。

(8)　その他の注意事項

(a)　ネームスペース

Web App PortletおよびWeb Page Portletでは，ポータル画面は複数のポートレットで構成されているためポートレット間で名称が重複する場合があります。そのため，次に示す属性はポートレット間で異なる値を指定してください。

accesskey属性（要素のアクセスキー）

class属性（要素のクラス名）

id属性（要素の識別子）

また，Web App Portletでは，Name属性名にポートレット名称を自動的に追加して，異なる名称に変更できます。スクリプトを使用する場合は，Webポートレット登録時にPortal Managerの［ポートレットの設定］画面でネームスペース自動解決機能を［無効］に設定します。ネームスペース自動解決機能の設定方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

ポートレットからPOSTによる外部Webサーバへのリクエスト時には，属性名からポートレット名称を削除します。

(b)　スタイル

ポータルの画面イメージはスタイルシートで決定します。そのため，特別に強調する場合以外で，インラインスタイルなどの個別のスタイルを指定しないでください。ポータル画面のスタイルやフォントを変更するには，次のスタイルシートを変更してください。

{PROJECT_HOME}¥css¥default.css

(c)　FRAMESET

Web App PortletおよびWeb Page Portletでは，FRAMESETを使用したHTMLコンテンツは，表示できません。

FRAMESETを使用した外部のWebサイトを取り込んだ場合，NOFRAMESの内容を表示します。NOFRAMESがない場合は何も表示しません。

(d)　スクリプトを使用するには

スクリプトを使用するには，Webポートレットの登録の際に次の設定をしてください。

スクリプトの関数やグローバル変数の定義は異なる名称を指定します。

SCRIPT要素およびonで始まるイベント属性の削除オプションを［削除しない］にします。

デフォルトでは，SCRIPT要素およびonで始まるイベント属性は削除されます。

ネームスペース自動解決機能を［無効］にします。

HEAD要素内にスクリプトを記述する場合は，HEAD要素の削除オプションを［削除しない］にします。

(e)　インラインオブジェクトとの連携

HTML中に組み込まれるオブジェクトとWebポートレットは連携できません。

(f)　最大化表示

最大化表示は，SCRIPTを使用している場合は設定しないでください。

(g)　プロキシサーバ使用時の注意事項

Web App PortletをPortal Managerで登録する際に指定するプロキシサーバは，Web App Portletが使用するすべてのページを参照できるプロキシサーバを指定してください。プロキシサーバの指定方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

使用するマシン環境によっては，インターネット向けプロキシサーバとイントラネット向けプロキシサーバを区別している場合があります。この場合，インターネットのコンテンツとイントラネットのコンテンツをWeb App Portletで統合できません。

(h)　Web App Portletに取り込むWebコンテンツ

Web App Portletに取り込むWebコンテンツで，HTML4.01に従わないタグ（<br/>など）がある場合正しく表示されないことがあります。そのため，Web App Portletに取り込むWebコンテンツには，HTML4.01に従わないタグを使用しないでください。HTML4.01に従わないタグを使用した場合，uCosminexus Portal Frameworkは次に示す例のようにタグを変換します。

（例）

<br/>のように"/"で終わるタグは，<br>>のように"/"を">"に変換します。

(i)　Web App Portletを使用する場合のURL形式

Web App Portletを使用する場合，ポートレット定義のURL形式やコンテンツのURL形式が次に示す二つの条件に合うとき，コンテンツは正しく表示されません。

URLがhttp://で始まりディレクトリを指している

URLの末尾にクエリが与えられている

（例）

http://hostname?querya=aaa&queryb=bbb

この問題は，次の例のようにディレクトリのウェルカムメッセージに相当するコンテンツのファイル名を指定することで回避できます。

（例）

http://hostname/index.htm?querya=aaa&queryb=bbb

(j)　Web App Portletでのインラインオブジェクトの取得先

Web App Portletを使用する場合，Portal Managerでインラインオブジェクトの取得方法を［ポータルサーバを経由して取得］に設定したとき，インラインオブジェクトを取得できないことがあります。この場合，Portal Managerでインラインオブジェクトの取得方法を［webサーバから直接取得］に変更することで取得できるようになります。インラインオブジェクトの取得先の設定方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

(k)　Web App PortletおよびWeb Page Portletでのコンテンツ不正表示

Web App PortletまたはWeb Page Portletを使用している場合に，相手先コンテンツから「<TABLE>タグと<FORM>タグの対応が誤っているコンテンツ」が返却されたとき，Web App PortletまたはWeb Page Portletのコンテンツは正しく表示されません。

この問題は，コンテンツの<TABLE>タグと<FORM>タグの対応を正しく修正することで回避できます。

5.5　デバイスに対応するための設定（Multi Web Portlet）

Multi Web Portletでは，PCだけでなく携帯電話（ｉモード，およびEZweb）からアクセスできるコンテンツを作成します。コンテンツは，クライアントのデバイス（PC，ｉモード，またはEZweb）ごとに対応する言語で作成する必要があります。ただし，PCの場合は，iframeタグをサポートしたWebブラウザ（Internet Explorer，Firefox，またはNetscape Navigator）で表示されます。

ポータルにアクセスできるクライアントのデバイスの種類と，対応する言語を次の表に示します。

表5-13　クライアントのデバイスの種類と対応する言語（Multi Web Portlet）

クライアントデバイス | 対応する言語
HTML4.01に対応するWebブラウザのあるPC | HTML
iモード対応HTML2.0に対応するiモードの携帯電話 | CHTML
Version 3.3 for HDMLに対応するEZwebの携帯電話 | HDML

クライアントのデバイスに合ったコンテンツ表示するために，各デバイスに対応したURLを設定する必要があります。この設定は，ポートレットを登録する際にPortal Managerで行えます。Multi Web Portletの登録については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。

アクセスしてきたクライアントのデバイスの種別を判別して，クライアントに合ったコンテンツを選択するために，マッピング定義ファイルを使用します。一つのポートレットに一つのマッピング定義ファイルが必要です。

マッピング定義ファイルとクライアント判別について次の図に示します。

図5-5　マッピング定義ファイルとクライアント判別（Multi Web Portlet）

図の説明

ユーザがポータルにアクセスしたときに，マッピング定義ファイルでユーザのクライアント種別を判別します。

クライアント種別に合致したファイルを選択します。

選択したファイルをポータルで表示します。

マッピング定義ファイルは，ポートレット登録時に作成されます。ポートレット登録時に，マッピング定義ファイルの作成場所を指定します。ポートレットごとに作成したポートレットディレクトリの直下を指定します。

6.　分散ポートレットの作成

この章では，分散ポートレットを作成する際の手順，および注意事項について説明しています。

＜この章の構成＞

6.1　分散ポートレットとは

6.2　分散ポートレットの作成手順

6.3　分散ポートレットを使用するときの注意事項

6.4　分散ポートレット作成のガイドライン

6.1　分散ポートレットとは

分散ポートレットは，ほかのポータル上に配置されたポートレットを自ポータルに取り込むポートレットです。例えば，他事業所で構築しているポータル上のポートレットを，自ポータルに取り込めます。

6.2　分散ポートレットの作成手順

この節では，分散ポートレットを作成する手順について説明します。

手順

分散ポートレットの機能を決定します。
ポータルに取り込む分散ポートレットを決定します（取り込む分散ポートレットを配置している分散サーバの決定）。ただし，取り込めるポートレットの種類は決まっています。取り込めるポートレットの種類に種類については，「6.3.1　制限事項」を参照してください。

分散ポートレットを作成します。
ポータルに取り込める分散ポートレットは，uCosminexus Portal Frameworkが決めた記述方法に従って開発されている必要があります。記述方法については，「6.4　分散ポートレット作成のガイドライン」を参照し，必要に応じて修正してください。

分散ポートレットをポータルに登録します。
ポートレットの登録方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレットの登録」の説明を参照してください。

6.3　分散ポートレットを使用するときの注意事項

＜この節の構成＞

6.3.1　制限事項

6.3.2　運用上の注意

6.3.1　制限事項

分散ポートレットを使用する場合，次の制限事項があります。

分散ポートレットを使用して，標準APIポートレット，WebポートレットおよびWebコンテンツポートレットを呼び出すことはできません。

分散ポートレットで表示できるHTMLタグの種類には制限があります。表示できるタグの種類は，Web App Portletと同じです。

6.3.2　運用上の注意

分散ポートレット運用時には次のことに注意してください。

分散サーバと分散クライアント間の通信で使用できるプロトコルは"HTTP"だけです。そのため，分散サーバと分散クライアント間のネットワーク環境はセキュアな状態に保ってください。

分散ポータル環境での文字化けを防ぐため，ポートレット，コンテンツ，分散サーバ，および分散クライアントのデフォルトのエンコーディングは，すべて統一してください。

分散ポートレットを使用している場合に，相手先コンテンツから「<TABLE>タグと<FORM>タグの対応が誤っているコンテンツ」が返却されたとき，分散ポートレットのコンテンツは正しく表示されません。
この問題は，コンテンツの<TABLE>タグと<FORM>タグの対応を正しく修正することで回避できます。

6.4　分散ポートレット作成のガイドライン

uCosminexus Portal Frameworkでは，次に示す記述方法に従ったポートレットを分散ポートレットとして表示できます。分散ポートレットを作成するときの参考にしてください。

＜この節の構成＞

6.4.1　使用できる形式

6.4.2　使用できない形式

6.4.1　使用できる形式

分散ポートレットで使用できるHTMLの形式と，使用できるuCosminexus Portal FrameworkのクラスライブラリおよびBeanを次に説明します。

＜この項の構成＞

(1)　分散ポートレットで使用できるHTML

(2)　分散ポートレットで使用できるクラスライブラリおよびBean

(1)　分散ポートレットで使用できるHTML

分散ポートレットでは，次のように記述したHTMLを表示できます。

●画面遷移を記述したHTML

画面遷移を記述したHTMLで，使用できる形式を次に示します。

<a href="...">～</a>

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:a href="url" ...>sample</uu:a>

上記の代わりに，PortletURIを使用する書き方もできます。PortletURIを使用する書き方を次に示します。

<a href="<%= PortletURI.transPortletURI("url")%>">～</a>

<area shape="..." coords="..." href="..." alt="...">

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:area href="url" alt="sample" ...>
...
</uu:area>

上記の代わりに，PortletURIを使用する書き方もできます。PortletURIを使用する書き方を次に示します。

<area href="<%= PortletURI.transPortletURI("url")%>">

<form action="...">～</form>

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:form action="url" ...>
...
</uu:form>

上記の代わりに，PortletURIを使用する書き方もできます。PortletURIを使用する書き方を次に示します。

<form action= "<%=PortletURI.transPortletURI("url")%>">～</form>

●インラインオブジェクトを表示させる記述をしたHTML

インラインオブジェクトを表示させる記述をしたHTMLで，使用できる形式を次に示します。

<iframe src="...">～</iframe>

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:iframe src="url" longdesc="url" ...>
...
</uu:iframe>

<img src="...">

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:img src="url" alt="sample" longdesc="url" .../>

<input src="...">

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:input src="url" ...>
...
</uu:input>

●ログイン直後の画面に戻る指定をしたHTML

ログイン直後の画面に戻る指定をしたHTMLを記述できます。

戻るボタンで表示する場合
戻るボタンで，ログイン直後の画面に戻る指定をHTMLに記述できます。

<form method="post" action="<portal:uriLookup type="Home" />">
   <input type=submit value="戻　る">
</form>

アンカータグで表示する場合：
アンカータグで，ログイン直後の画面に戻る指定をHTMLに記述できます。

<a href="<portal:uriLookup type="Home" />">
   Homeに戻ります。
</a>

(2)　分散ポートレットで使用できるクラスライブラリおよびBean

uCosminexus Portal Frameworkで提供するクラスライブラリおよびBeanのうち，分散ポートレットで使用できるものを次に示します。

クラスライブラリ

Javaのクラスライブラリ

サーブレットのクラスライブラリ

jp.co.hitachi.soft.portal.portlet.PortletURI

jp.co.hitachi.soft.portal.portlet.PortletUtils

jp.co.hitachi.soft.portal.portlet.PortletException

jp.co.hitachi.soft.portal.portlet.PortletURI，jp.co.hitachi.soft.portal.portlet.PortletUtils，およびjp.co.hitachi.soft.portal.portlet.PortletExceptionの詳細は，「14.4　ポートレットユティリティクラスライブラリ」を参照してください。

Bean

ポートレット情報取得Bean

ユーザ情報取得Bean

ログ出力Bean※

注※　ログ出力Beanは分散サーバのログに出力します。

ポートレット情報取得Beanの詳細は，「14.5　ポートレット情報取得Bean」を，ユーザ情報取得Beanの詳細は，「14.6　ユーザ情報取得Bean」を，ログ出力Beanの詳細は，「14.7　ログ出力Bean」を参照してください。

6.4.2　使用できない形式

分散ポートレットで使用できないHTMLの形式と，使用できないuCosminexus Portal FrameworkのBeanを次に説明します。

＜この項の構成＞

(1)　分散ポートレットで使用できないHTML

(2)　分散ポートレットで使用できないBean

(1)　分散ポートレットで使用できないHTML

分散ポートレットでは，次のHTML要素は使用できません。

<script>～</script>

<applet code="...">～</applet>

<object>～</object>

<frameset>～<frame src="...">～</frameset>

また，次に示す制限事項があります。

次のタグ内でtarget要素を指定して，別ウィンドウを表示することはできません。

<a>～</a>

<area>～</area>

<form>～</form>

ポートレットのナビゲーションテンプレートを表示するURLも記述できません。

iframeタグ(<iframe src="...">～</iframe>)などを使用して，コンテンツ自身を表示することはできません。

(2)　分散ポートレットで使用できないBean

uCosminexus Portal Frameworkで提供するBeanのうち，分散ポートレットで使用できないBeanを次に示します。

ユーザ管理メッセージ表示タグライブラリ

カスタマイズBean

ポートレットテンプレートBean

ログインログアウトBean

これらのタグライブラリ，およびBeanの詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「カスタマイズに使用するライブラリ」の説明を参照してください。

7.　シングルサインオン対応ポートレットの開発

この章では，シングルサインオン機能に対応したポートレットの開発方法について説明します。

＜この章の構成＞

7.1　シングルサインオンとは

7.2　バックエンドシステムとの連携

7.3　シングルサインオン対応ポートレットの流れ

7.4　バックエンドシステムのポートレット対応

7.5　シングルサインオン対応ポートレットの作成

7.1　シングルサインオンとは

シングルサインオンは，Cosminexus の統合ユーザ管理フレームワークの機能を利用してポートレットを開発することで実現します。シングルサインオンの設定および使用方法については，マニュアル「Cosminexus　アプリケーションサーバ V8　機能解説　拡張編」，またはマニュアル「Cosminexus V9　アプリケーションサーバ　機能解説　拡張編」の「シングルサインオンの利用方法」の説明を参照してください。

7.2　バックエンドシステムとの連携

uCosminexus Portal Frameworkとバックエンドシステムの連携について説明します。ポータル画面とバックエンドシステムとの連携方式には，疎連携と密連携があります。

ここでは，疎連携および密連携について説明します。

＜この節の構成＞

7.2.1　疎連携

7.2.2　密連携

7.2.1　疎連携

疎連携では，uCosminexus Portal Frameworkにログインしたあと，バックエンドシステムにシングルサインオンして，ポータル画面上のポートレットにバックエンドシステムへのリンク，またはサマリ情報のリンクを表示します。疎連携の場合，バックエンドシステムにシングルサインオンしたあとは，ポータル画面上のポートレットに表示されたバックエンドシステムへのリンク，またはサマリ情報のリンクをクリックすると，uCosminexus Portal Frameworkを経由しないでバックエンドシステムに直接アクセスします。

図7-1　疎連携

7.2.2　密連携

密連携では，uCosminexus Portal Frameworkにログインしたあと，バックエンドシステムにシングルサインオンして，ポータル画面上のポートレットにバックエンドシステムへのリンク，またはサマリ情報のリンクを表示します。密連携では，ログイン時にバックエンドシステムにシングルサインオンしたあとでも，バックエンドシステムへのアクセスはすべてuCosminexus Portal Frameworkを経由して，バックエンドシステムの情報を取得します。

図7-2　密連携

シングルサインオン対応ポートレットの開発には，開発工数が比較的小さくてすむ疎連携のサマリ情報を表示する方式を推奨します。密連携では，ポータル画面に対応したビューを作成する開発工数が大きくなります。また，密連携では必ずuCosminexus Portal Frameworkを経由するため，性能面での考慮が必要となります。

7.3　シングルサインオン対応ポートレットの流れ

疎連携の接続方法には，セッションIDを引き継ぐ方法と，DB連携の方法があります。

ここでは，セッションID引き継ぎ方式とDB連携方式について説明します。

＜この節の構成＞

7.3.1　セッションID引き継ぎ

7.3.2　DB連携

7.3.1　セッションID引き継ぎ

セッションID引き継ぎの場合，バックエンドが発行するセッションIDを，ポートレット内に記述することでシングルサインオンが実現されます。セッションID引き継ぎの場合，ポータルログイン中にバックエンドシステムにもログインします。なお，シングルサインオンを使用するには，バックエンドシステムがセッションIDを利用してセッショントラッキングを実現（Cookie，URL-Rewriting，hidden）している必要があります。

バックエンドシステムの認証方式がフォーム認証の場合だけ接続できます。

シングルサインオン対応ポートレットの接続の流れを次のシーケンスに示します。

図7-3　シングルサインオン対応ポートレットの流れ（セッションID引き継ぎ）

図の説明

ポータルへのログインに成功するとポートレットを呼び出します。ポートレットは，シングルサインオン専用のログインモジュールを呼び出します。

ログインモジュールでは，ディレクトリサーバのシングルサインオンマッピング情報からバックエンドシステムのユーザIDとパスワードを取得し，ポートレットに渡します。

ポートレットは，ログインモジュールから引き継いだユーザIDとパスワードを使用して，バックエンドシステムにログインします。

バックエンドシステムは，認証に成功するとセッションIDを発行します。

ポートレットは，サマリ情報をバックエンドシステムから取得し，コンテンツを生成します。このとき，バックエンドシステムへのハイパーリンクにバックエンドシステムのセッションIDを記述しておきます。

ポータルはすべてのポートレットの処理が終わると，コンテンツを合成してWebブラウザに応答を返します。

ポートレットに表示されたハイパーリンクをクリックすると，ポータルを経由しないで直接バックエンドシステムにアクセスします。ハイパーリンクに記載されたセッションIDによって，シングルサインオンが実現できます。

7.3.2　DB連携

DB連携の場合，ポータルログイン時に，ポータルのセッションIDなどの認証情報，バックエンドシステムのユーザID，およびパスワードを対応づけて，DBに格納します。ポートレットに表示されたリンクをクリックしてバックエンドシステムに直接アクセスする場合は，ポータルの認証情報をリクエスト中に含めて，バックエンドシステム側でリクエスト中のポータルの認証情報をキーとして，DBからユーザIDおよびパスワードを取得してシングルサインオンを行います。DB連携の場合，バックエンドシステムに直接アクセスするたびに，バックエンドシステムへのログイン・ログアウトを行います。

なお，バックエンドシステムの認証方式がフォーム認証，またはベーシック認証の場合に接続できます。

図7-4　シングルサインオン対応ポートレットの流れ（DB連携）

図の説明

ポータルへのログインに成功するとポートレットを呼び出します。ポートレットは，シングルサインオン専用のログインモジュールを呼び出します。

ログインモジュールでは，ディレクトリサーバのシングルサインオンマッピング情報からバックエンドシステムのユーザIDとパスワードを取得します。

ログインモジュールは，2.で取得したポータル認証情報，バックエンドシステムのユーザIDとパスワードを認証情報DBに書き込みます。

ポートレットは，ログインモジュールから引き継いだユーザIDとパスワードを使用して，バックエンドシステムにログインし，コンテンツを取得します。このとき，バックエンドシステムへのハイパーリンクには，ポータルのセッションIDを記述しておきます。

ポータルはすべてのポートレットの処理が終わると，コンテンツを合成してWebブラウザに応答を返します。

ポートレットに表示されたハイパーリンクをクリックすると，ポータルを経由しないで直接バックエンドシステムにアクセスします。

バックエンドシステムは，URLに記載されたポータルのセッションIDをキーに，認証情報DBからユーザIDおよびパスワードを取得し，認証を行います。

Webブラウザにコンテンツを生成します。

7.4　バックエンドシステムのポートレット対応

疎連携の場合，バックエンドシステムにシングルサインオン対応ポートレットに対応したビュー，およびログイン・ログアウト処理を作成すると容易に連携できます。

作成する処理は，バックエンドシステムとの接続方法，および認証方法によって異なります。

＜この節の構成＞

7.4.1　バックエンドシステムの対応（セッションID引き継ぎ）

7.4.2　バックエンドシステムの対応（DB連携）

7.4.1　バックエンドシステムの対応（セッションID引き継ぎ）

セッションID引き継ぎの場合に作成するページを次に示します。なお，接続方法がセッションID引き継ぎの場合，バックエンドシステムとの認証方式はフォーム認証となります。

ログインページ

ユーザ認証を行います。セッショントラッキング用のセッションIDをポートレットに返します。

サマリページ

サマリ画面を出力します。サマリ画面内のバックエンドシステムへのリンクはURL表記を絶対パスで記述し，リクエスト中にセッションIDを記述します。

7.4.2　バックエンドシステムの対応（DB連携）

DB連携の場合に作成するページを認証方式ごとに説明します。なお，DB連携の場合，バックエンドシステムとの認証方式はフォーム認証・ベーシック認証となります。

＜この項の構成＞

(1)　フォーム認証

(2)　ベーシック認証

(1)　フォーム認証

フォーム認証の場合に作成するページを次に示します。

サマリページ

サマリ画面を出力します。サマリ画面内のバックエンドシステムへのリンクはURL表記を絶対パスで記述し，リクエスト中にポータルのセッションIDなどの認証情報を記述します。

ログインページ

リクエスト中に記述しているポータルの認証情報をキーに，バックエンドシステムのユーザID，およびパスワードをDBから取得して，ユーザ認証を行います。認証が完了した場合，リクエスト先へフォワード，またはリダイレクトします。

(2)　ベーシック認証

ベーシック認証の場合に作成するページを次に示します。

サマリページ

サマリ画面を出力します。サマリ画面内のバックエンドシステムへのリンクはURL表記を絶対パスで記述し，リクエスト中にポータルのセッションIDなどの認証情報を記述します。

HTTPヘッダ変更モジュール

ベーシック認証の場合，リクエスト中に認証用のAuthorizationヘッダを付ける必要があります。ヘッダを付けるため，次のどちらかのモジュールを設置します。

Webサーバの前段にAuthorizationヘッダを付けるGatewayを設置する

WebサーバにAuthorizationヘッダを付ける機能拡張モジュールを追加する

このモジュールでの処理を説明します。

初回リクエスト時は，リクエスト中に記述されているポータルの認証情報をキーに，バックエンドシステムのユーザIDとパスワードを認証情報DBから取得し，Authorizationヘッダを付けます。

応答返却時には，ポータルの認証情報をCookieとしてクライアントに設定します。2回目以降のリクエストでは，Cookieにある認証情報を参照してバックエンドシステムへシングルサインオンを行います。

7.5　シングルサインオン対応ポートレットの作成

セッションID引き継ぎでのシングルサインオンをサンプルとして説明します。このサンプルでは，ログインモジュール，ポートレットの作成方法，バックエンドシステムの修正方法，および設定ファイルの記述方法を説明します。

ログインモジュール

ログインモジュール（WebLoginModule）

ログインモジュール（WebPrincipal）

ポートレット

シングルサインオンポートレット（index.jsp）

設定ファイル

統合ユーザ管理フレームワークのコンフィグレーションファイル（ua.conf）

JAAS のコンフィグレーションファイル（jaas.conf）

バックエンドシステム

ログインページ（login.jsp）

ログアウトページ（logout.jsp）

サマリページ（portlet.jsp）

それぞれのファイルの変更例を次に示します。

＜この節の構成＞

7.5.1　ログインモジュール

7.5.2　ポートレット（index.jsp）

7.5.3　設定ファイルの記述例

7.5.4　バックエンドシステム

7.5.1　ログインモジュール

ログインモジュールは，WebLoginModuleとWebPrincipalを作成します。

＜この項の構成＞

(1)　ログインモジュール（WebLoginModule）

(2)　ログインモジュール（WebPrincipal）

(1)　ログインモジュール（WebLoginModule）

package web.login;

import com.cosminexus.admin.auth.*;
import javax.security.auth.*, javax.security.auth.login.*, javax.security.auth.callback.*, javax.security.auth.spi.*;
import java.io.*, java.util.*, java.net.*;
import java.util.Properties;
import web.WebPrincipal;

public class WebLoginModule implements LoginModule {
   private Subject subject;
   private CallbackHandler callbackHandler;
   private Map sharedState;
   private Map options;

   // 接続先Webアプリパラメータ名(jaas.conf)
   private static final String PORTLET_URL = "web.portlet.url";
   private static final String LOGOUT_URL = "web.logout.url";
   private static final String LOGIN_URL = "web.login.url";
   private static final String LOGIN_FORM_UID = "web.login.form.uid";
   private static final String LOGIN_FORM_PASSWD = "web.login.form.passwd";

   // SSOパラメータ名(ua.conf)
   private static final String USERNAME = "web.login.username";
   private static final String PASSWORD = "web.login.password";

   // エラーメッセージ
   private static final String MSG_USERNOTFOUND = "user not found!";
   private static final String MSG_INVALID_URL = "invalid url option specifed";
   private static final String MSG_INVALID_LOGININFO = "invalid id/password/method option specifed";

   private boolean commitSucceeded = false;

   private String sid; // セッションID
   private String username;

   public void initialize(Subject subject, CallbackHandler callbackHandler,
                          Map sharedState, Map options) {
       this.subject = subject;
       this.callbackHandler = callbackHandler;
       this.sharedState = sharedState;
       this.options = options;
   }

   public boolean login() throws LoginException {
       // ユーザ名とパスワードを取得
       username = (String)sharedState.get(USERNAME);
       if (username == null) throw new LoginException(MSG_USERNOTFOUND);
       String passwd = (String)this.sharedState.get(PASSWORD);

       URL url;
       String form_uid_name;
       String form_passwd_name;
       String method;

       try {
           url = new URL((String)options.get(LOGIN_URL));
       } catch (Exception e) {
           throw new LoginException(MSG_INVALID_URL);
       }

       form_uid_name = (String)options.get(LOGIN_FORM_UID);
       form_passwd_name = (String)options.get(LOGIN_FORM_PASSWD);
       if (form_uid_name == null || form_passwd_name == null) {
           throw new LoginException(MSG_INVALID_LOGININFO);
       }

       // バックエンドログイン
       try {
           HttpURLConnection conn = (HttpURLConnection)url.openConnection();
           conn.setRequestMethod("POST");
           conn.setDoOutput(true);
           conn.setRequestProperty("Content-Type",
                                   "application/x-www-form-urlencoded");

           StringBuffer sb = new StringBuffer();
           sb.append(form_uid_name).append("=").append(username).append("&")
             .append(form_passwd_name).append("=").append(passwd)
             .append("&action=login");

           conn.setRequestProperty("Content-Length",
                                   Integer.toString(sb.length()));

           BufferedWriter out =
             new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
           out.write(sb.toString(), 0, sb.length());
           out.flush();

           String cookie = conn.getHeaderField("Set-Cookie");
           sid = cookie.substring(0, cookie.indexOf(";"));
           sid = "jsessionid" + sid.substring(sid.indexOf("="), sid.length());
       } catch (Exception e) {
           throw new LoginException(e.toString());
       }

       return true;
   }

   public boolean commit() throws LoginException {
       subject.getPrincipals().add( new WebPrincipal(username) );

       Vector tmp = new Vector();
       tmp.add(sid);
       tmp.add(options.get(PORTLET_URL));
       subject.getPublicCredentials().add( tmp );

       return this.commitSucceeded = true;
   }

   public boolean abort() throws LoginException {
       if (commitSucceeded) {
           logout();
       }
       return true;
   }

   public boolean logout() throws LoginException {
       try {
           URL url = new URL(options.get(LOGOUT_URL)+";"+sid);
           BufferedInputStream in =
               new BufferedInputStream(url.openConnection().getInputStream());
           int BUFLEN = 1024;
           byte[] buf = new byte[BUFLEN];
           while (in.read(buf, 0, BUFLEN) > 0) { }
           in.close();
       } catch (Exception e) {
       }

       commitSucceeded = false;

       return true;
   }
}

注意

本サンプルではCookieの先頭の値をセッションID（変数名はsid）として引き継いでいます。Cookieの先頭にセッションID以外の値が設定される場合や，セッションID以外のCookie（負荷分散のサーバIDなど）を引き継ぐ必要がある場合は，使用する環境に合わせて処理を追加・変更してください。

(2)　ログインモジュール（WebPrincipal）

ログインモジュール（WebPrincipal）の作成を次に示します。

package web;

import java.security.Principal;
import java.io.Serializable;

public class WebPrincipal implements Principal, Serializable {
 private String name;

 public WebPrincipal(String name) {
   if (name == null) throw new NullPointerException();
   this.name = name;
 }

 public String getName() { return name; }

 public String toString() { return getName(); }

 public boolean equals(Object o) {
   if (o == null) return false;
   if (this == o) return true;
   if (!(o instanceof WebPrincipal)) return false;
   WebPrincipal rhs = (WebPrincipal)o;
   if (getName().equals(rhs.getName())) return true;

   return false;
 }

 public int hashCode() { return getName().hashCode(); }
}

7.5.2　ポートレット（index.jsp）

ポートレット（index.jsp）の作成を次に示します。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="http://cosminexus.com/admin/auth/uatags" prefix="ua" %>
<%@ page import="com.cosminexus.admin.auth.*" %>
<%@ page import="com.cosminexus.admin.auth.sso.callback.*" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletUtils" %>
<%@ page import="javax.security.auth.*" %>
<%@ page import="javax.security.auth.login.*" %>
<%@ page import="java.security.*" %>
<%@ page import="java.util.Vector" %>
<%@ page import="java.io.*" %>
<%@ page import="java.net.*" %>
<%!

 class SessionListener implements HttpSessionBindingListener {
   LoginContext lc;
   SessionListener(LoginContext lc) { this.lc = lc; }
   public void valueBound(HttpSessionBindingEvent evt) { }
   public void valueUnbound(HttpSessionBindingEvent evt) {
     try {
       lc.logout();
     } catch (LoginException e) {
     }
   }
 }

%>
<%
 String sid;  // バックエンドセッションID
 String portletURL; // バックエンドポートレット用URL

 String ns = PortletUtils.getNamespace(request, response);
 Object isBackendLoggedIn = session.getAttribute(ns+"isLoggedIn");

 if (isBackendLoggedIn == null) { // 初回ログイン時(バックエンドにログイン)
   LoginContext lc = null;
   try {
     WebSSOHandler h =
       new WebSSOHandler(request, response, null);
     lc = new LoginContext("Web", h);
     lc.login();
   } catch (LoginException e) {
     out.println("Webへのログインに失敗しました。<br>");
     out.println("詳細 : " + e);
     return;
   } catch (Exception e) {
     out.println("Webへのログインで障害が発生しました。<br>");
     out.println("詳細 : " + e);
     return;
   }

   Subject subject = lc.getSubject();
   Principal principal = (Principal)subject.getPrincipals().iterator().next();
   Vector tmp = (Vector)subject.getPublicCredentials().iterator().next();
   sid = (String)tmp.get(0);  // セッションID
   portletURL = (String)tmp.get(1); // ポートレットURL

   session.setAttribute(ns+"sid", sid);
   session.setAttribute(ns+"portletURL", portletURL);

   session.setAttribute(ns+"isLoggedIn", new Object());
   session.setAttribute(ns+"logoutCB", new SessionListener(lc));
 } else {
   sid = (String)session.getAttribute(ns+"sid");
   portletURL = (String)session.getAttribute(ns+"portletURL");
 }

 // ポートレット用コンテンツ作成
 try {
   URL url = new URL(portletURL+";"+sid);

   HttpURLConnection conn = (HttpURLConnection)url.openConnection();
   //conn.setRequestProperty("Cookie", sid);
   BufferedReader in =
     new BufferedReader(new InputStreamReader(conn.getInputStream(),
                                             "JISAutoDetect"));
   int BUFLEN = 512;
   char[] buf = new char[BUFLEN];
   while (in.read(buf, 0, BUFLEN) > 0) {
     out.println(buf);
   }

   in.close();
   conn.disconnect();

 } catch (Exception e) {
   out.println("バックエンドアクセス時に障害が発生しました。<br>");
   out.println("詳細 : " + e);
 }
%>

7.5.3　設定ファイルの記述例

ポートレットで変更するファイルと記述例を次に示します。

＜この項の構成＞

(1)　統合ユーザ管理フレームワークのコンフィグレーションファイル（ua.conf）

(2)　JAAS のコンフィグレーションファイル（jaas.conf）

(1)　統合ユーザ管理フレームワークのコンフィグレーションファイル（ua.conf）

ua.confiファイルに追加する記述を次に示します。

com.cosminexus.admin.auth.sso.lm.WebLM=web.login.WebLoginModule
com.cosminexus.admin.auth.sso.param.userid.WebLM=web.login.username
com.cosminexus.admin.auth.sso.param.secdat.WebLM=web.login.password

なお，統合ユーザ管理フレームワークのコンフィグレーションファイル（ua.conf）は，次に示すディレクトリに格納されています。

格納ディレクトリ

｛Cosminexusインストールディレクトリ｝¥manager¥config

(2)　JAAS のコンフィグレーションファイル（jaas.conf）

jaas.confファイルに追加する記述を次に示します。

Web {
 com.cosminexus.admin.auth.sso.login.WebSSOLoginModule required
 com.cosminexus.admin.auth.sso="WebLM"
 com.cosminexus.admin.auth.realm="Web"
 web.portlet.url="http://localhost:8080/backend/portlet.jsp" // ポートレットURL
 web.login.url="http://localhost:8080/backend/login.jsp" // ログインURL
 web.login.form.uid="uid"        // ユーザID変数名
 web.login.form.passwd="passwd"  // パスワード変数名
 web.logout.url="http://localhost:8080/backend/logout.jsp" // ログアウトURL
 ;
};

なお，JAAS のコンフィグレーションファイル（jaas.conf）は，次に示すディレクトリに格納されています。

格納ディレクトリ

｛Cosminexusインストールディレクトリ｝¥manager¥config

7.5.4　バックエンドシステム

バックエンドシステムで作成するファイルと記述例を次に示します。

＜この項の構成＞

(1)　ログインページ（login.jsp）

(2)　ログアウトページ（logout.jsp）

(3)　サマリページ（portlet.jsp）

(1)　ログインページ（login.jsp）

<%@  page session="true" contentType="text/html; charset=Shift_JIS"
         pageEncoding="Shift_JIS" %>
<%
 String uid = request.getParameter("uid");
 // サイトのエンコーディングがShift_JISの場合，次の処理を行う。
 uid = new String(uid.getBytes("iso-8859-1"),"Windows-31J");
 String passwd = request.getParameter("passwd");
 // サイトのエンコーディングがShift_JISの場合，次の処理を行う。
 passwd = new String(passwd.getBytes("iso-8859-1"),"Windows-31J");

 if (ユーザ認証(uid, passwd)) { // ユーザ認証
   // 認証OK
   session.setAttribute("uid", uid);
 }
%>

(2)　ログアウトページ（logout.jsp）

<%@  page session="true" contentType="text/html; charset=Shift_JIS"
         pageEncoding="Shift_JIS" %>
<%
 // バックエンドはURL-Rewritingによって連携
 String url = response.encodeURL(バックエンドのコンテンツの絶対形式URL);
%>

<h2>ポートレット用画面</h2>
<a target="_blank" href="<%= url %>">バックエンドSSOアクセス</a>

(3)　サマリページ（portlet.jsp）

<%@  page session="true" contentType="text/html; charset=Shift_JIS"
         pageEncoding="Shift_JIS" %>
<%
 session.removeAttribute("uid");
%>

8.　ポートレットイベント対応ポートレットの開発

この章では，ポートレットイベント機能に対応したポートレットの開発方法について説明します。

＜この章の構成＞

8.1　ポートレットイベント機能とは

8.2　ポートレットイベント機能の処理の流れ

8.3　ポートレットイベント対応ポートレットの開発手順

8.4　アクションモジュールで利用できるAPI

8.5　ポートレットアクションイベント機能

8.6　ポートレット間通信イベント機能

8.7　ポートレットイベント対応ポートレットの開発例

8.1　ポートレットイベント機能とは

ポートレットイベント機能とは，何らかのイベントが発生した場合に，各ポートレットへ通知する機能です。この機能を利用すると，単にポートレットコンテンツを表示するだけでなく，ポートレットの状態に応じて処理を制御できるため，より柔軟なポータルサイトを提案・構築できます。

また，ポートレットイベント機能には，次の二つの機能があります。

ポートレットアクションイベント機能

クライアント（Webブラウザ）からポートレットに対して通知する機能です。この機能によって，クライアント側で要求した情報を解析して，処理を実行し，その処理が反映された内容をポートレット上に表示できます。

ポートレット間通信イベント機能（ポートレットメッセージ機能）

ポートレット間で情報をやり取りする機能です。情報をやり取りすることで，ポートレット間で情報を共有したり，分散したりできるので，業務効率を向上させるポートレットを開発できます。

8.2　ポートレットイベント機能の処理の流れ

ポートレットイベント機能の処理の流れを次の図に示します。図中の番号は，処理の順序を示します。

図8-1　ポートレットイベント機能の処理の流れ

図中の項目の概要を，次の表に示します。なお，項番は図中の番号に対応しています。

表8-1　ポートレットイベント機能の各項目の概要

項番
項目名
概要

1
ポートレットイベント制御
ポートレットイベントを制御する機能です。

2-1
デフォルトアクションモジュール
uCosminexus Portal Frameworkが標準で添付しているアクションモジュールです。

2-2
アクションモジュール
各ポートレットがイベントの種別に応じて記述するモジュール（クラス）です。
アクションモジュールには，次の二つのイベント（メソッド）があります。

ポートレット間通信イベント

ポートレット間通信イベント機能で提供するイベント（メソッド）です。

ポートレットアクションイベント

ポートレットアクションイベント機能で提供するイベント（メソッド）です。

3
ポートレットコンテンツ
ポートレットコンテンツとは，ポートレット定義で指定したJSPポートレットやWebポートレットのことです。最終的に画面に表示される内容になります。

ポートレットイベント制御，デフォルトアクションモジュール，およびアクションモジュールの詳細を，次に説明します。

＜この節の構成＞

8.2.1　ポートレットイベント制御

8.2.2　デフォルトアクションモジュール

8.2.3　アクションモジュール

8.2.1　ポートレットイベント制御

ポートレットイベント制御はすべてのポートレットイベントを制御します。

ポートレットイベント機能は仕様に従ってイベントを制御するため，ポートレット開発者はこの制御を踏まえてイベントの発生を考慮し，処理を記述してください。

ポートレットイベントの仕様を次に示します。

次の優先順位で各ポートレットに対してイベントが処理されます。

優先順位 | イベント名称
1 | ポートレットアクションイベント
2 | ポートレット間通信イベント

各イベント単位に，イベントがキューイングされます。

イベントはポートレットに関係なくイベント発生順にキューイングされ，順番に実行されます（優先キューといわれる，イベントを優先的に実行できる機能はありません）。
ただし，ポートレット並列化機能を使用しているときは，ポートレット単位に並列して実行されます。
例えば，ポートレット通信イベントのキューにポートレットA，B，C，Aの順に4個キューングされているとします。この場合，1番目のポートレットAの処理が完了すれば，ポートレットB，Cの処理が完了していなくても，4番目のポートレットAの処理が実行できます。

優先順位が高いイベントが一つでもある場合は，そのイベントが優先的に処理・実行されます。

すべてのイベント処理はシングルスレッドで実行されます。したがって，異なるイベントが別のスレッドで並行して呼び出されたり，同一のイベントが並行して呼び出されたりすることはありません。
ただし，ポートレット並列化機能を使用するときはポートレット単位にイベントが実行できます。

イベントは要求を受けるたびに無条件にキューイングされるため，同一のイベントが一つのポートレットで2回以上呼び出されることがあります。

注意事項

ポートレットの実行順序は規定できないため，画面レイアウトやポートレットの処理速度を考慮してイベントの処理を実装してはなりません。

uCosminexus Portal Frameworkに障害が発生した場合，必ずしもすべてのイベント処理が呼び出されるわけではありません。初期処理や終了処理が実行されないおそれがあることを考慮してください。

8.2.2　デフォルトアクションモジュール

デフォルトアクションモジュールは，uCosminexus Portal Frameworkに標準で添付されているアクションモジュールです。イベント発生時の標準の処理を記述したモジュールで，すべてのポートレットの標準となるイベント処理が記述されています。

各ポートレットによってイベント処理をする場合は，次のデフォルトアクションモジュール（クラス）を継承し，サポートしているイベント（メソッド）を実装します。

デフォルトアクションモジュール（クラス）

jp.co.hitachi.soft.portal.portlet.api.DefaultActionModule

デフォルトアクションモジュールのイベントの詳細は，「14.9　ポートレットイベントAPI」を参照してください。

8.2.3　アクションモジュール

アクションモジュールは各ポートレットに対してイベントが発生した場合，各イベント種別に応じて記述するモジュールです。

アクションモジュールの詳細は，「14.9　ポートレットイベントAPI」を参照してください。

8.3　ポートレットイベント対応ポートレットの開発手順

ポートレットイベント機能を利用するには，次の手順でポートレットを作成します。

図8-2　ポートレットイベント対応ポートレットの開発手順

図中の各手順の内容を，次に説明します。

＜この節の構成＞

8.3.1　ポートレットコンテンツの作成

8.3.2　ポートレットアクションモジュールの作成

8.3.3　ポートレットのデプロイ

8.3.1　ポートレットコンテンツの作成

ポートレットコンテンツを作成します。

ポートレットアクションモジュールでの処理結果をポートレットコンテンツに対して通知し，画面の表示内容を変更したい場合は，リクエストパラメタに情報を設定します。

8.3.2　ポートレットアクションモジュールの作成

各ポートレットで処理したいイベントがある場合，ポートレットアクションモジュールを作成します。作成したポートレットアクションモジュールを利用すると，MVCモデルに基づいた形式でポートレットを開発できます。MVCモデルの詳細は，「3.11.2　MVCモデル」を参照してください。

ポートレットアクションモジュールを利用して開発すると，次に示すようなMVCモデルを形成できます。

図8-3　アクションモジュールをController，JSPをViewとするMVCモデル

図の説明

actionメソッドのServletResponseパラメタによって，アクションモジュールからバックエンドへのシングルサインオンを実現します。

アクションモジュールで設定されたパラメタは，JSP（ポートレット）で取得されます。このとき，actionメソッドで渡されるrequestパラメタの属性が使用されます。アクションモジュールでは，requestパラメタに名前と値を組にして属性を設定します。JSPでは，requestパラメタの属性から名前をキーにして値を取得し，呼び出すJSPをincludeで切り替えます。JSP側では，requestパラメタの属性をすべてのポートレットが使用するため，一意の名前を指定してください。

アクションモジュールでのパラメタの設定方法およびJSPでのパラメタの取得方法を次に示します。

図8-4　アクションモジュールでのrequestパラメタの設定方法およびJSPでのrequestパラメタの取得方法

アクションモジュールでのrequestパラメタの設定方法

actionメソッドでは，名前（"paramname"）を値（"default"）を組にして，requestパラメタに属性としてsetAttributeメソッドで設定します。

JSP（ポートレット）でのrequestパラメタの取得方法

JSP（ポートレット）では，名前（"paramname"）をキーにgetAttributeメソッドを使用して，requestパラメタの属性の値を取得します。取得した属性の値（"default"）を基に，呼び出すJSP（ポートレット）をincludeで切り替えます。

アクションモジュールの詳細は，「14.9　ポートレットイベントAPI」を参照してください。

作成したポートレットアクションモジュールは，所定の場所に格納してください。

8.3.3　ポートレットのデプロイ

ポートレットをデプロイする際に，アクションモジュールを指定します。アクションモジュールは，デプロイ定義ファイル，またはPortal Managerの［ポートレットの設定］画面の［その他の項目］でconfig-param要素に指定します。

config-param要素の子要素であるparam-nameおよびparam-valueに次の値を設定します。

param-nameに設定する内容
hptl.module.action

param-valueに設定する内容
アクションモジュールのパッケージ名称を含めたクラスのフルパス名称を指定します。

デプロイ定義ファイルの設定例を次に示します。Portal Managerでの設定方法は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「日立APIポートレット（PAR形式以外）およびFileポートレットの設定」の説明を参照してください。ポートレットのデプロイ方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「日立APIポートレット（PAR形式）のデプロイ」の説明を参照してください。

<?xml version="1.0" encoding="Shift_JIS" ?>
<portlet-app>
 <portlet>
   <portlet-name>portletName</portlet-name>
   <portlet-type>ref</portlet-type>
   <portlet-parent>MultiJSP</portlet-parent>
   <config-param>
     <param-name>hptl.module.action</param-name>
     <param-value>sample.portal.portlet.api.SampleActionModule</param-value>
   </config-param>
   <title>サンプルポートレット</title>
   <description>ポートレットイベント機能を用いたポートレットです。</description>
   <device media='HTML'>
     <url>/Sample</url>
   </device>
 </portlet>
</portlet-app>

8.4　アクションモジュールで利用できるAPI

アクションモジュールではAPIを利用してさまざまな処理を実行できます。

APIは大きく分けて次の二つに分類されます。

イベント処理を実行するためのAPI

uCosminexus Portal Frameworkが提供しているBeanを利用するためのAPI

＜この節の構成＞

8.4.1　イベント処理を実行するためのAPI

8.4.2　uCosminexus Portal Frameworkが提供しているBeanを利用するためのAPI

8.4.1　イベント処理を実行するためのAPI

アクションモジュールではイベント処理を実行するためのAPIを利用できます。

対応するAPIを次の表に示します。

表8-2　イベント処理を実行するためのAPI

項目 | 対応するAPI（メソッド） | 利用目的
ポートレットの名称 | getPortletName | 現在処理中のポートレット名称が取得できます。

APIの仕様の詳細は，「14.9　ポートレットイベントAPI」を参照してください。

8.4.2　uCosminexus Portal Frameworkが提供しているBeanを利用するためのAPI

アクションモジュール内では，JSPやサーブレットでも利用できた，uCosminexus Portal Frameworkが提供しているBeanをAPIとして利用できます。このため，従来と変わらない開発環境で開発できます。

アクションモジュール内で取得できるAPIを次の表に示します。

表8-3　アクションモジュール内で取得できるAPI

Bean名称 | 対応するAPI（メソッド） | 利用目的
ポートレット情報取得Bean | getPortletInfo | 各ポートレット単位に設定しているパラメタ情報が取得できます。
ユーザ情報取得Bean | getUserInfo | ログインしているユーザ単位のリポジトリ情報（各利用者のユーザ，組織，グループ情報，カスタマイズ情報など）が取得できます。
ログ出力Bean | getPortletLog | ポートレットログに，ポートレット単位の情報を出力できます。
UserAgent情報取得Bean | getUserAgentInfoBean | 現在アクセスしているクライアントに対して，クライアント情報定義ファイルで設定されているUserAgentTypeの情報が取得できます。

APIの詳細は「14.9　ポートレットイベントAPI」を参照してください。

8.5　ポートレットアクションイベント機能

ここでは，ポートレットアクションイベント機能の概要，詳細，利用方法，および利用できるAPIについて説明します。

＜この節の構成＞

8.5.1　概要

8.5.2　詳細

8.5.3　利用方法

8.5.4　ポートレットアクションイベントで利用できるAPI

8.5.1　概要

ポートレットアクションイベント機能は，クライアント側（Webブラウザ）からコンテンツの取得要求（リクエスト）が発生した場合に呼び出されるイベントを提供します。この機能を利用することで，ポートレットコンテンツを出力する前にさまざまな前処理を実行できます。

ポートレットアクションイベント機能の概要を次の図に示します。

図8-5　ポートレットアクションイベント機能の概要

8.5.2　詳細

ポートレットアクションイベントは，クライアント側（Webブラウザ）からコンテンツの取得要求があった場合に発生するイベントです。

このイベントは，現在画面に表示しようとしている，すべてのポートレットに対して発生します。

ポートレットアクションイベントが発生する対象のポートレットを次に示します。

画面レイアウトがタブ形式の場合，選択しているタブ内のすべてのポートレット

画面レイアウトが行列形式などのタブ形式以外の場合，表示されているすべてのポートレット

ポートレットが最大化表示されている場合，最大化表示されているポートレット

なお，ポートレットが最小化状態であってもポートレットアクションイベントは発生します。

また，ポートレットのクローズボタンを押したときは，ポートレットアクションイベントは発生しません。

8.5.3　利用方法

ポートレットアクションイベントを利用する場合，ポートレットアクションモジュールに，次に示すポートレットアクションイベントを実装します。

public void action(javax.servlet.http.HttpServletRequest request) {
・
・
}

APIの詳細は「14.9　ポートレットイベントAPI」を参照してください。

8.5.4　ポートレットアクションイベントで利用できるAPI

ポートレットイベント機能で提供するAPIのほかに，次のAPIをサポートしています。

表8-4　ポートレットアクションイベントで利用できるAPI

項目 | 対応するAPI（メソッド） | 利用目的
ポートレットへの通知 | send | ポートレット間通信をするときに相手ポートレットに通知したい場合に呼び出します。

APIの詳細は「14.9　ポートレットイベントAPI」を参照してください。

8.6　ポートレット間通信イベント機能

ここでは，ポートレット間通信イベント機能の概要，詳細，利用方法，および利用できるAPIについて説明します。

＜この節の構成＞

8.6.1　概要

8.6.2　詳細

8.6.3　利用方法

8.6.4　ポートレット間通信イベントで利用できるAPI

8.6.1　概要

ポートレット間通信イベント機能は，あるポートレットから，別のポートレットに対してメッセージを送信する機能です。この機能によって，ポートレットの状態変化を検知した場合，ほかのポートレットへ状態を通知したり，処理を指示したりできます。

ポートレット間通信イベント機能の概要を次の図に示します。

図8-6　ポートレット間通信イベント機能の概要

8.6.2　詳細

ポートレット間通信イベントは，通信元ポートレットが通信要求メソッドを呼び出したときに，通信先で発生します。

ポートレット間通信イベントが発生する対象ポートレットは，次の条件をすべて満たしている必要があります。

uCosminexus Portal Frameworkに登録されているポートレット

その利用者にアクセス権があるポートレット

通信要求は次の二つのイベントで発生させることができます。

ポートレットアクションイベント

ポートレット間通信イベント

通信要求メソッドについては，「14.9　ポートレットイベントAPI」を参照してください。

8.6.3　利用方法

通信要求元ポートレットおよび通信要求先ポートレットの利用方法を説明します。

＜この項の構成＞

(1)　通信要求元のポートレット

(2)　通信要求先のポートレット

(1)　通信要求元のポートレット

ポートレットアクションモジュールで通信要求メソッドを呼び出します。

通信要求メソッドの応答は，相手側のイベント処理の完了を待たないで，すぐに返却されます。

(2)　通信要求先のポートレット

ポートレット間通信イベントを受信したい場合，ポートレットアクションモジュールに，次に示すポートレット間通信イベントを実装します。

public void receive(javax.servlet.http.HttpServletRequest request) {
・
・
}

APIの詳細は，「14.9　ポートレットイベントAPI」を参照してください。

8.6.4　ポートレット間通信イベントで利用できるAPI

ポートレットイベント機能で提供するAPIのほかに，次のAPIをサポートしています。

表8-5　ポートレット間通信イベントで利用できるAPI

項目
対応するAPI（メソッド）
利用目的

ポートレット名称の取得
getSrcPortletName
通信元のポートレット名称を取得します。
通信元によって処理を振り分けることができます。

メッセージの取得
getMessage
通信元から通知があったメッセージを取得します。

ポートレットへの通知
send
ポートレット間通信をするときに相手ポートレットに通知したい場合に呼び出します。

APIの詳細は，「14.9　ポートレットイベントAPI」を参照してください。

8.7　ポートレットイベント対応ポートレットの開発例

ここでは，ポートレットイベント対応ポートレットの開発例を説明します。

この開発例では，ユーザの好みに応じてヘルプ画面を表示するポータル業務画面の開発方法について説明します。

ポータル業務画面の概要を次の図に示します。

図8-7　ポータル業務画面例の概要

これは，あるポートレット（ここでは，＜リンク集＞ポートレット）から複数のポートレット（ここでは，＜デスクトップ＞ポートレットおよび＜ヘルプ＞ポートレット）に情報が送信されるポータル業務画面の例です。

ユーザが＜リンク集＞ポートレットから作業Aを選択すると，＜デスクトップ＞ポートレットおよび＜ヘルプ＞ポートレットに通知されます。この通知によって，作業Aの内容が＜デスクトップ＞ポートレットに，作業Aの解説が「ヘルプ」ポートレットに表示されます。

ユーザは，ポータルの習熟度に応じて，＜ヘルプ＞ポートレットの表示／非表示を切り替えたり，最小化の状態にしておいて必要に応じて復元したりするなどの使い方ができます。また，＜ヘルプ＞ポートレットに「作業に関する緊急のお知らせ」など，その作業をするときに必ず知っておいてほしい情報を表示するような使い方もできます。

＜リンク集＞ポートレットには，業務関連のリンクのほかにも，業務に関連した「経済」や「金融」などのポートレットへのリンクをそろえられます。

開発例の開発手順を次に示します。

手順

ポータル業務画面の処理を設計します。
処理の内容，および流れを設計します。

インタフェースを設定します。
ポートレット間のインタフェース，およびポートレットアクションモジュールとポートレットコンテンツ間のインタフェースを設定します。

ポートレットアクションモジュールを開発します。
各ポートレットの，ポートレットアクションモジュールの内容を記述します。

各開発手順の詳細を，次に説明します。

＜この節の構成＞

8.7.1　ポータル業務画面の処理の設計

8.7.2　インタフェースの設定

8.7.3　ポートレットアクションモジュールの開発

8.7.1　ポータル業務画面の処理の設計

開発するポータル業務画面の処理の内容および流れを設計します。処理の内容および流れの設計イメージを次の図に示します。なお，図中の番号は，処理が流れる順序を示します。

図8-8　処理の内容および流れの設計イメージ

図の説明

＜リンク集＞ポートレットの画面作成
＜リンク集＞ポートレットの画面を作成します。このとき，各リンクにLinkActionModuleに対するインタフェースとして，次のようなリクエストパラメタを設定します。

「識別名+ポートレット名称1」=「表示するJSPファイル名1」，...，「識別名+ポートレット名称n」=「表示するJSPファイル名n」

なお，「識別名」とは，ほかのポートレットのリクエストパラメタと値が競合しないために必要な設定です。

ポータル画面の表示
ユーザに，処理1.で作成した＜リンク集＞ポートレットを含むポータル画面を表示します。

ユーザのリンク選択
ユーザが，ポータル画面の＜リンク集＞ポートレットでリンクを選択することで，uCosminexus Portal Frameworkに対してコンテンツの取得を要求します。

ポートレットアクションイベントの呼び出し
処理3.でユーザがリンクをクリックすることで，＜デスクトップ＞ポートレットおよび＜ヘルプ＞ポートレットのポートレットアクションモジュール（ViewActionModule.java）が呼び出されます。

＜リンク集＞ポートレットへの情報の取得要求
＜デスクトップ＞ポートレットおよび＜ヘルプ＞ポートレットは，＜リンク集＞ポートレットとの間で取り決めたインタフェースに基づいて，＜リンク集＞ポートレットに対して「画面に表示するJSPファイル名」の取得を要求するメッセージを送信します。

ポートレット間通信イベントの受信
＜リンク集＞ポートレットのポートレットアクションモジュール（LinkActionModule.java）が，＜デスクトップ＞ポートレットおよび＜ヘルプ＞ポートレットからメッセージを受信します。このとき，処理1.で取得したリクエストパラメタの内容を解析し，「ポートレット名称n」が「メッセージ送信元のポートレット名称」と一致しているかどうかを確認します。

取得要求に対する回答の送信
処理6.で「ポートレット名称n」が「メッセージ送信元のポートレット名称」と一致していれば，「画面に表示するJSPファイル名n」を＜デスクトップ＞ポートレットおよび＜ヘルプ＞ポートレットのポートレットアクションモジュール（ViewActionModule.java）に返却します。

ポートレット間通信イベントの受信およびJSPインタフェースの設定
＜デスクトップ＞ポートレットおよび＜ヘルプ＞ポートレットのポートレットアクションモジュール（ViewActionModule.java）は，＜リンク集＞ポートレットからのメッセージを受信します。受信したメッセージに格納されている，「画面に表示するJSPファイル名n」を自分自身のJSPに対するリクエストインタフェースとして設定します。

ポートレットコンテンツの表示
＜デスクトップ＞ポートレットおよび＜ヘルプ＞ポートレットのポートレットコンテンツ（view.jsp）で，処理8.で指定されたリクエストインタフェースの情報を取り出し，そのJSPファイルの内容を表示します。

＜リンク集＞ポートレットの画面作成
＜リンク集＞ポートレットの画面を再度作成し，処理9.で設定された＜デスクトップ＞ポートレットおよび＜ヘルプ＞ポートレットの画面と統合して，ユーザにポータル画面を表示します。

8.7.2　インタフェースの設定

ポートレット間のインタフェース，およびポートレットアクションモジュールとポートレットコンテンツ間のインタフェースを設定します。

＜この項の構成＞

(1)　ポートレット間のインタフェース

(2)　ポートレットアクションモジュールとポートレットコンテンツとのインタフェース

(1)　ポートレット間のインタフェース

＜リンク集＞ポートレットと，＜ヘルプ＞ポートレットおよび＜デスクトップ＞ポートレットとのインタフェースを設定します。

この開発例では，＜リンク集＞ポートレットと＜ヘルプ＞ポートレット，および＜リンク集＞ポートレットと＜デスクトップ＞ポートレットとのインタフェースを設定します。

ポートレット間通信イベントでのインタフェースを次の表に示します。

表8-6　ポートレット間通信イベントでのインタフェース

クラス
内容
意味
利用するポートレット

なし(null)
－
表示するJSPファイル名の取得要求

通知元：

＜デスクトップ＞ポートレット，または＜ヘルプ＞ポートレット

通知先：

＜リンク集＞ポートレット

java.lang.String
表示するJSPファイル名
表示するJSPファイル名

通知元：

＜リンク集＞ポートレット

通知先：

＜デスクトップ＞ポートレット，または＜ヘルプ＞ポートレット

ポートレットアクションモジュールのインタフェースを次の表に示します。

表8-7　ポートレットアクションモジュールのインタフェース

パラメタ名称 | パラメタ設定値 | 利用するポートレット
hptl.ex.comlink.send.name | JSPファイルの内容を表示するポートレットが取得要求するポートレット名称を指定します。 | ＜デスクトップ＞ポートレットまたは＜ヘルプ＞ポートレット

注　ポートレットの定義内容は，ポートレット情報取得Beanで取得できます。ポートレット情報取得Beanの詳細は，「14.5　ポートレット情報取得Bean」を参照してください。

(2)　ポートレットアクションモジュールとポートレットコンテンツとのインタフェース

＜デスクトップ＞ポートレットおよび＜ヘルプ＞ポートレットは，次のインタフェースを持ちます。

パラメタ名 | 意味 | 利用するポートレット
hptl.ex.comlink.include.name | 表示するJSPファイル名 | ＜デスクトップ＞ポートレットまたは＜ヘルプ＞ポートレット

8.7.3　ポートレットアクションモジュールの開発

ここでは，開発例の，ポートレットアクションモジュールの内容を説明します。

＜この項の構成＞

(1)　＜リンク集＞ポートレットのポートレットアクションモジュール

(2)　＜デスクトップ＞ポートレットまたは＜ヘルプ＞ポートレットのポートレットアクションモジュール

(1)　＜リンク集＞ポートレットのポートレットアクションモジュール

＜リンク集＞ポートレットの，ポートレットアクションモジュールの内容を次に示します。

package jp.co.hitachi.soft.portal.portlet.api;

import javax.servlet.http.HttpServletRequest;
import jp.co.hitachi.soft.portal.api.log.PortletLog;

public class LinkActionModule extends DefaultActionModule {

 /**
  * リクエストパラメタの名称<br>
  * ・形式<br>
  * JSPで，以下の形式でリクエストパラメタを設定してください。<br>
  * &識別名ポートレット名称1=表示するJSPファイル名1+識別名ポートレット名称2=表示するJSPファイル名2<br>
  * ・例<br>
  * 　&hptl.ex.comlink.url.PortletName1=a.jsp+hptl.ex.comlink.url.PortletName2=b.jsp+...
  */
 public static final String PARAM_REQUEST_LINK = "hptl.ex.comlink.url.";

 /**
  * ポートレット間通信イベント処理<br>
  * @param request イベント処理に渡されたリクエストオブジェクト
  */
 public void receive(HttpServletRequest request) {
   try {
     // Webブラウザからのリクエストパラメタを取得します。
     String value = request.getParameter(PARAM_REQUEST_LINK + getSrcPortletName(request));
     // サイトのエンコーディングがShift_JISの場合，次の処理を行う。
     value = new String(value.getBytes("iso-8859-1"),"Windows-31J");
     // もし，リクエストパラメタが存在していれば，メッセージを送信します。
     if (value != null) {
       // 実際にメッセージ(表示するJSPファイル名称)を送信します
       send(request, getSrcPortletName(request), value);
     }
   }catch (java.lang.Exception e) {
     // アプリケーションログにエラー情報を出力します
     getPortletLog(request, "log").error("receive error", e);
   }
 }
}

(2)　＜デスクトップ＞ポートレットまたは＜ヘルプ＞ポートレットのポートレットアクションモジュール

＜デスクトップ＞ポートレットまたは＜ヘルプ＞ポートレットの，ポートレットアクションモジュールの内容を次に示します。

package jp.co.hitachi.soft.portal.portlet.api;

import jp.co.hitachi.soft.portal.portlet.api.*;
import javax.servlet.http.HttpServletRequest;
import jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean;
/**
* アクションイベント機能が提供するAPIです。<br>
*/
public class ViewActionModule extends DefaultActionModule {

 /**
  * ポートレットの定義に指定するパラメタ。<br>
  * 通知するポートレット名称を指定します。<br>
  */
 public static final String PORTLET_PARAMETER_SEND_NAME = "hptl.ex.comlink.send.name";
 /**
  * ポートレット情報取得Beanのbeanidを設定します。<br>
  */
 public static final String BEAN_ID_PORTLET_INFO = "hptl.ex.comlink.bean.ViewActionModule";
 /**
  * JSPに設定するパラメタ名称を設定します。<br>
  */
 public static final String CONTENT_PARAMETER_INCLUDE_NAME = "hptl.ex.comlink.include.name";
 /**
  * ポートレットアクションイベント処理<br>
  * @param request イベント処理に渡されたリクエストオブジェクト
  */
 public void action(HttpServletRequest request) {
   try {
     // 送信先ポートレット名称を取得する
     String portletName = getPortletInfo(request, BEAN_ID_PORTLET_INFO).
getParameter(PORTLET_PARAMETER_SEND_NAME);
     // メッセージを送信する
     send(request, portletName, null);
   }catch (java.lang.Exception e) {
     // アプリケーションログにエラー情報を出力します
     getPortletLog(request, "log").error("ViewActionModule.action error", e);
   }
 }
 /**
  * ポートレット間通信イベント処理<br>
  * @param request イベント処理に渡されたリクエストオブジェクト
  */
 public void receive(HttpServletRequest request) {
   try {
     // 送信先ポートレット名称を取得する
     String portletName = getPortletInfo(request, BEAN_ID_PORTLET_INFO).
getParameter(PORTLET_PARAMETER_SEND_NAME);
     // 送信先ポートレット名称と，受信したポートレットが一致している
     if (getSrcPortletName(request).equals(portletName)) {
       // メッセージ(JSPファイル名)を取得する
       String name = (String)getMessage(request);
       // JSP/サーブレットに対するインタフェースを設定します
       request.setAttribute(CONTENT_PARAMETER_INCLUDE_NAME, name);
     }
   }catch (java.lang.Exception e) {
     // アプリケーションログにエラー情報を出力します
     getPortletLog(request, "log").error("ViewActionModule.receive error", e);
   }
 }
}

9.　クライアントサイドデータ通信対応ポートレットの開発

この章では，クライアントサイドデータ通信機能に対応したポートレットの開発方法について説明します。

＜この章の構成＞

9.1　クライアントサイドデータ通信とは

9.2　クライアントサイドデータ通信対応ポートレットを開発する前に

9.3　ドラッグ&ドロップの定義方法（パターン1）

9.4　補助ウィンドウを使用したデータフォーム転送の定義方法（パターン2）

9.5　ボタンを使用したデータフォーム転送の定義方法（パターン3）

9.1　クライアントサイドデータ通信とは

データを入力する項目が多くある場合，直接入力では入力ミスが発生する可能性が高くなります。このような入力ミスを削減するため，ポートレットでデータを入力する場合に，別のポートレットから該当するデータをドラッグ&ドロップしたり，コピーボタンを利用してコピーしたりして入力することができます。この機能をクライアントサイドデータ通信といいます。

＜この節の構成＞

9.1.1　クライアントサイドデータ通信の処理概要

9.1.2　ドラッグ&ドロップ

9.1.3　データフォーム転送

9.1.4　クライアントサイドデータ通信機能がサポートするHTML

9.1.5　データ保管領域

9.1.1　クライアントサイドデータ通信の処理概要

クライアントサイドデータ通信機能には，次の二つの機能があります。

ドラッグ&ドロップ

データフォーム転送

この二つの機能は，同一のHTML部品上で実現でき，共通のAPIを使用します。HTML部品の詳細は，「9.1.4　クライアントサイドデータ通信機能がサポートするHTML」を参照してください。APIの詳細は，「14.11　クライアントサイドデータ通信タグライブラリ」，「14.12　クライアントサイドデータ通信JavaScript」，および「14.13　クライアントサイドデータ通信クラスライブラリ」を参照してください。

9.1.2　ドラッグ&ドロップ

ドラッグ&ドロップ機能を使用すると，入力操作しないでクライアントサイドでのポートレット間データ通信ができます。

ドラッグ&ドロップ機能を実現するための前提条件を次に示します。

データ転送先のポートレットには，「ペーストイベントハンドラ」が定義されている必要があります。ペーストイベントハンドラとは，データ転送先にデータを貼り付けるJavaScriptイベントハンドラのことです。ペーストイベントハンドラは，ドロップ時に呼ばれます。

データ転送元には，「コピーイベントハンドラ」が定義されている必要があります。コピーイベントハンドラとは，HTML上に格納されているシリアライズされたJavaオブジェクトである文字列を取得し，ポータルクリップボードウィンドウにその文字列をコピーするJavaScriptイベントハンドラのことです。コピーイベントハンドラは，ドラッグ時に呼ばれます。

ドラッグ&ドロップは，アイコンを使用して実現します。ポートレット開発者は，任意のアイコンを使用できます。アイコンの指定方法については，「14.11.3(3) csdc:dragicon」を参照してください。アイコンをドラッグする際に，マウスカーソルがドロップするフォーム領域に入っていない場合，またはデータ転送先とデータ転送元のdatatypeが異なる場合は，ドロップ抑止機能が働きます。

なお，ドラッグ&ドロップする際のデータの保管場所には，クライアントPCのuserData領域，またはポータルクリップボードウィンドウを使用します。userData領域およびポータルクリップボードウィンドウの詳細は，「9.1.5　データ保管領域」を参照してください。

ドラッグ&ドロップ機能の概要を次の図に示します。

図9-1　ドラッグ&ドロップ機能の概要

図の説明

画面表示
Javaオブジェクトがシリアライズされ，HTMLに格納されます。
ポータルクリップボードウィンドウだけを使用する方式の場合，ポータルクリップボードウィンドウを開きます。

項目を選択
ドラッグ対象項目を選択します。ドラッグする項目を選択していない場合は，ドラッグできません。

ドラッグ&ドロップ
ドラッグ処理
2.で選択した項目に対応するシリアライズされた文字列を「コピーイベントハンドラ」でデシリアライズし，userData領域またはポータルクリップボードウィンドウにコピーします。
userData領域に格納するデータを再シリアライズします。シリアライズ後のデータが，PortalResources.propertiesファイルのjp.co.hitachi.soft.portal.csdc.datasize.threshold項目に指定されている値を超えているかどうかによって次のようになります。PortalResources.propertiesファイルの詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「PortalResources.propertiesの詳細」の説明を参照してください。
<指定値以内の場合>
userData領域にデータを格納します。
<指定値を超えている場合>
ポータルクリップボードウィンドウを開き，ポータルクリップボードウィンドウにデータを格納します。
ドロップ処理
userData領域またはポータルクリップウィンドウから取得したデータを「ペーストイベントハンドラ」で入力フォームに反映します。
ポータルクリップボードウィンドウが開かれている場合，ポータルクリップボードウィンドウを閉じます。

9.1.3　データフォーム転送

データフォーム転送機能を使用すると，入力操作またはドラッグ&ドロップを使用しないでクライアントサイドでのポートレット間データ通信ができます。

データフォーム転送機能には，次の二つの方法があります。

補助ウィンドウを使用する方法

ボタンを使用する方法

＜この項の構成＞

(1)　補助ウィンドウを使用する方法

(2)　ボタンを使用する方法

(1)　補助ウィンドウを使用する方法

補助ウィンドウを使用する方法とは，入力項目が表示されている補助ウィンドウから入力項目を選択する方法です。入力項目が表示されている補助ウィンドウを開き，入力項目を選択したあと［OK］ボタンをクリックすることにより，補助ウィンドウで選択した入力項目のデータを入力フォームに出力します。

補助ウィンドウを使用する方法を実現するための前提条件を次に示します。

データ転送先のメイン画面には，「ペーストイベントハンドラ」が定義されている必要があります。ペーストイベントハンドラとは，データ転送先にデータを貼り付けるためのJavaScriptハンドラのことです。

データ転送元には，「コピーイベントハンドラ」が定義されている必要があります。コピーイベントハンドラとは，HTML上に格納されているシリアライズされたJavaオブジェクトである文字列を取得し，ポータルクリップボードウィンドウにその文字列をコピーするJavaScriptイベントハンドラのことです。

補助ウィンドウを使用する方法の場合，ペーストイベントハンドラおよびコピーイベントハンドラは，［OK］ボタンをクリックしたときに呼ばれます。

なお，ドラッグ&ドロップする際のデータの保管場所には，クライアントPCのuserData領域，またはポータルクリップボードウィンドウを使用します。userData領域およびポータルクリップボードウィンドウの詳細は，「9.1.5　データ保管領域」を参照してください。

補助ウィンドウを使用する方法の実現方法を次に示します。

補助ウィンドウを使用する方法では，コピーイベントハンドラおよびペーストイベントハンドラを一度に実行するため，補助ウィンドウは，データ転送先に定義されているペーストイベントハンドラの名称を認識している必要があります。

データ転送先では，補助ウィンドウを開く際のURLに，実行するペーストイベントハンドラ名称をクエリとして埋め込む必要があります。クエリ内のペーストイベントハンドラを認識するキー名称は，「hptl.pasteHandler」です。

補助ウィンドウを使用する方法の概念を次の図に示します。

図9-2　補助ウィンドウを使用する方法の概念（データフォーム転送）

図の説明

メイン画面表示

［宛先］ボタンをクリック

補助ウィンドウを表示
補助ウィンドウが表示されます。URLのクエリ部分に，実行するペーストイベントハンドラの名称を指定します。クエリ内のペーストハンドラを認識するキー名称は，「hptl.pasteHandler」です。
ポータルクリップボードウィンドウだけを使用する方式の場合，ポータルクリップボードウィンドウを開きます。

項目を選択
データ転送の対象となる項目を選択します。データ転送の対象となる項目を選択していない場合は，データを転送できません。

［OK］ボタンをクリック
4.で選択した項目に対応するシリアライズされた文字列を「コピーイベントハンドラ」でデシリアライズし，userData領域またはポータルクリップボードウィンドウにコピーします。
userData領域に格納するデータを再シリアライズします。シリアライズ後のデータが，PortalResources.propertiesファイルのjp.co.hitachi.soft.portal.csdc.datasize.threshold項目に指定されている値を超えているかどうかによって次のようになります。PortalResources.propertiesファイルの詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「PortalResources.propertiesの詳細」の説明を参照してください。
<指定値以内の場合>
userData領域にデータを格納します。
<指定値を超えている場合>
処理を続行するかどうかを示すダイアログボックスが表示されます。
処理を続行するときは，ポータルクリップボードウィンドウを開き，ポータルクリップボードウィンドウにデータを格納します。
処理を中止するときは終了します。
URLのクエリ部分から「hptl.pasteHandler」のキー値を取得します。これを実行するペーストイベントハンドラとします。
ペーストイベントハンドラを実行し，userData領域またはポータルクリップボードウィンドウから取得したデータを入力フォームに反映します。
ポータルクリップボードウィンドウが開かれている場合，ポータルクリップボードウィンドウを閉じます。

(2)　ボタンを使用する方法

ボタンを使用する方法とは，入力項目を選択して［コピー］ボタンをクリックし，データ転送先で［貼り付け］ボタンをクリックすることにより選択した入力項目のデータを入力フォームに入力する方法です。

ボタンを使用する方法を実現するための前提条件を次に示します。

データ転送先のポートレットには，「ペーストイベントハンドラ」が定義されている必要があります。ペーストイベントハンドラとは，データ転送先にデータを貼り付けるためのJavaScriptハンドラのことです。ペーストイベントハンドラは，［貼り付け］ボタンがクリックされたときに呼ばれます。

データ転送元には，「コピーイベントハンドラ」が定義されている必要があります。コピーイベントハンドラとは，HTML上に格納されているシリアライズされたJavaオブジェクトである文字列を取得し，ポータルクリップボードウィンドウにその文字列をコピーするJavaScriptイベントハンドラのことです。コピーイベントハンドラは，［コピー］ボタンがクリックされたときに呼ばれます。

なお，ドラッグ&ドロップする際のデータの保管場所には，クライアントPCのuserData領域，またはポータルクリップボードウィンドウを使用します。userData領域およびポータルクリップボードウィンドウの詳細は，「9.1.5　データ保管領域」を参照してください。

ボタンを使用する方法の概念を次の図に示します。

図9-3　ボタンを使用する方法の概念（データフォーム転送）

図の説明

画面表示
Javaオブジェクトがシリアライズされ，HTMLに格納されます。
ポータルクリップボードウィンドウだけを使用する方式の場合，ポータルクリップボードウィンドウを開きます。

項目を選択
データ転送の対象となる項目を選択します。データ転送の対象となる項目を選択していない場合は，データを転送できません。

［コピー］ボタンをクリック
2.で選択された項目に対応するシリアライズされた文字列を「コピーイベントハンドラ」でデシリアライズし，userData領域またはポータルクリップボードウィンドウにコピーします。
userData領域に格納するデータを再シリアライズします。シリアライズ後のデータが，PortalResources.propertiesファイルのjp.co.hitachi.soft.portal.csdc.datasize.threshold項目に指定されている値を超えているかどうかによって次のようになります。PortalResources.propertiesファイルの詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「PortalResources.propertiesの詳細」の説明を参照してください。
<指定値以内の場合>
userData領域にデータを格納します。
<指定値を超えている場合>
処理を続行するかどうかを示すダイアログボックスが表示されます。
処理を続行するときは，ポータルクリップボードウィンドウを開き，ポータルクリップボードウィンドウにデータを格納します。
処理を中止するときは終了します。

［貼り付け］ボタンをクリック
userData領域またはポータルクリップボードウィンドウから取得したデータを「ペーストイベントハンドラ」で，入力フォームに反映します。
ポータルクリップボードウィンドウが開かれている場合，ポータルクリップボードウィンドウを閉じます。

9.1.4　クライアントサイドデータ通信機能がサポートするHTML

クライアントサイドデータ通信機能がサポートするHTML部品を次に示します。

図9-4　サポート対象HTML部品

9.1.5　データ保管領域

クライアントサイドデータ通信を実現する際には，データの保管場所として，userData領域とポータルクリップボードウィンドウを使用できます。

＜この項の構成＞

(1)　データ保管領域の設定

(2)　userData領域

(3)　ポータルクリップボードウィンドウ

(1)　データ保管領域の設定

データ保管領域の設定は，PortalResources.propertiesファイルで行います。

(a)　データ格納方式の設定

クライアントサイドデータ通信機能では，次に示す方式でデータを格納できます。

userData領域とポータルクリップボードウィンドウを併用する方式

ポータルクリップボードウィンドウだけを使用する方式

データ格納方式は，PortalResources.propertiesファイルのjp.co.hitachi.soft.portal.csdc.datatype.userData項目で指定します。PortalResources.propertiesファイルの詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」を参照してください。

(b)　転送データサイズの設定

データの保管場所としてuserData領域とポータルクリップボードウィンドウを併用する場合，データの保管場所にuserData領域を使用するか，またはポータルクリップボードウィンドウを使用するかは，保管するデータが転送データサイズの指定値以内かどうかで決まります。

転送データサイズは，PortalResources.propertiesファイルのjp.co.hitachi.soft.portal.csdc.datasize.threshold項目で指定します。PortalResources.propertiesファイルの詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」を参照してください。保管するデータが，転送データサイズの指定値以内かどうかによって次のようになります。

保管するデータが転送データサイズの指定値以内の場合
userData領域を使用します。

保管するデータが転送データサイズの指定値を超える場合
ポータルクリップボードウィンドウを使用します。

なお，HTTPS環境でクライアントサイドデータ通信機能を使用している場合，転送データサイズが指定値を超えると，セキュリティに関する警告ダイアログボックスが2回表示されます。

(2)　userData領域

userData領域は，クライアントサイドデータ通信を実現する際に使用するデータの保管場所です。コピー処理では，通常userData領域をデータの保管場所として使用します。

userData領域には文字列だけ格納できます。そのため，データ格納時には，ポートレットで指定したJavaScript連想配列オブジェクトはシリアライズされ，データ取得時には，userData領域から取得した文字列はデシリアライズされます。

userData領域へのデータの格納に失敗した場合，次のようになります。

userData領域より格納するデータが大きいとき
ポータルクリップボードウィンドウを使用して，データ転送をします。

上記以外のとき（環境不正など）
警告を示すダイアログボックスが表示され，データ転送をしないで終了します。

(3)　ポータルクリップボードウィンドウ

ポータルクリップボードウィンドウは，HTML上で開かれる一般のウィンドウで，データを保管する場所としての機能だけを持ちます。

ポータルクリップボードウィンドウは，csdc.jsをインクルードするタイミングで開かれます。そのため，ポートレット開発者は，ポータルクリップボードウィンドウを開いたり閉じたりする処理を意識する必要はありません。

ポータルクリップボードウィンドウは，コピーしたデータを貼り付けるまで開かれている必要があります。エンドユーザの操作向上およびエンドユーザによって閉じられることを抑止するため，ポータルクリップボードウィンドウは，Window画面の表示領域外に表示されます（エンドユーザには見えないウィンドウとして表示します）。なお，ポータルクリップボードウィンドウが表示されていない状態でデータ転送をした場合には，再操作を促すダイアログボックスが表示されます。

ポータルクリップボードウィンドウが表示されている間，タスクバーには次のように表示されます。

図9-5　ポータルクリップウィンドウが表示されている間のタスクバー

9.2　クライアントサイドデータ通信対応ポートレットを開発する前に

ここでは，クライアントサイドデータ通信に対応するポートレットを開発する前に知っておいていただきたい内容について説明します。

＜この節の構成＞

9.2.1　前提条件

9.2.2　提供ファイル

9.2.3　クライアントサイドデータ通信対応ポートレットを開発するための定義

9.2.1　前提条件

＜この項の構成＞

(1)　ポータルサーバの前提条件

(2)　Webブラウザの前提条件

(3)　その他の前提条件

(1)　ポータルサーバの前提条件

ポータルサーバは，Webサーバとの連携が設定されている必要があります。

J2EEサーバモードを利用する場合，SecurityManager定義ファイルに「permission java.lang.reflect.ReflectPermission」定義があることを確認してください。セキュリティポリシーファイル（server.policy）の内容については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「uCosminexus Portal Frameworkのセットアップ」の説明を参照してください。

(2)　Webブラウザの前提条件

前提とするWebブラウザ，およびクライアントサイドデータ通信が提供する機能を次に示します。

表9-1　Webブラウザの前提条件

Webブラウザ | 提供機能※1 | 提供API
Internet Explorer | ドラッグ&ドロップ | クライアントサイドデータ通信が提供するAPI※2
データフォーム転送

注※1　Windows XP SP2のポップアップブロックを設定している場合，ポータルクリップボードを使用したデータ転送はできません。

注※2　クライアントサイドデータ通信が提供するAPIの詳細は，「14.11　クライアントサイドデータ通信タグライブラリ」，「14.12　クライアントサイドデータ通信JavaScript」，および「14.13　クライアントサイドデータ通信クラスライブラリ」を参照してください。

(3)　その他の前提条件

(a)　セキュリティゾーン

クライアントサイドデータ通信機能を使用できるかどうかは，ポータルサイトが含まれるセキュリティゾーンによって異なります。セキュリティゾーンごとのクライアントサイドデータ通信機能の使用可否を次に示します。

表9-2　セキュリティゾーンごとの使用可否

項番 | セキュリティゾーン | 使用可否
1 | インターネット | ○
2 | イントラネット | ○
3 | 信頼済みサイト | ○
4 | 制限付きサイト | ×

（凡例）

○：クライアントサイドデータ通信機能を使用できます。

×：クライアントサイドデータ通信機能を使用できません。

(b)　ポートレットの表示モード

クライアントサイドデータ通信機能は，default.jspやSinglePortlet.jspを経由しているコンテンツで使用できます。ポートレットの表示モードごとの使用可否を次に示します。

表9-3　ポートレットの表示モードごとの使用可否

項番 | 表示モード | その他の条件 | 使用可否
1 | 通常 | － | ○
2 | 最大化 | － | ○
3 | 編集 | － | ○
4 | iframe | ポータルコンテンツのフレーム内に表示 | ○
5 | フレームを介さずブラウザに直接表示 | ×※
6 | 新規ウィンドウ | － | ○
7 | － | ポータル外コンテンツ | ×※

（凡例）

－：該当しません。

○：クライアントサイドデータ通信機能を使用できます。

×：クライアントサイドデータ通信機能を使用できません。

注※　コンテンツ内にiframeを追加して，ポータル内のビヘイビア定義用コンテンツを取り込むと，クライアントサイドデータ通信機能を使用できます。この場合，ポートレット側を変更します。

(c)　ポータル画面の表示方法

クライアントサイドデータ通信機能は，ポータル全体のコンテンツをフレーム内に表示する場合には使用できません。

9.2.2　提供ファイル

uCosminexus Portal Frameworkは，クライアントサイドデータ通信対応ポートレットのために，次のファイルを提供します。

9.2.3　クライアントサイドデータ通信対応ポートレットを開発するための定義

クライアントサイドデータ通信機能には，前述したように次の三つの種別があります。

ドラッグ&ドロップ

補助ウィンドウを使用したデータフォーム転送

ボタンを使用したデータフォーム転送

ポートレット開発者がクライアントサイドデータ通信対応ポートレットを開発する際，種別ごとに従う必要のある定義パターンがあります。

定義パターンの詳細は，「9.3　ドラッグ&ドロップの定義方法（パターン1）」，「9.4　補助ウィンドウを使用したデータフォーム転送の定義方法（パターン2）」，および「9.5　ボタンを使用したデータフォーム転送の定義方法（パターン3）」を参照してください。

9.3　ドラッグ&ドロップの定義方法（パターン1）

ここでは，ドラッグ&ドロップをするための定義方法について説明します。

＜この節の構成＞

9.3.1　定義規則

9.3.2　定義例

9.3.1　定義規則

＜この項の構成＞

(1)　ドラッグ元画面

(2)　ドロップ先画面

(1)　ドラッグ元画面

<csdc:src>のdatatype属性を指定します。ドラッグ先の<csdc:dest>のdatatypeと一致するよう定義します。
複数datatypeを指定する場合は，コンマ区切りで指定してください。

<csdc:oncopy>タグ内にコピーイベントハンドラの処理を定義します。
(I)　JavaScript関数「getElementById(“html部品名称”)」を使用し，ドラッグ対象HTMLオブジェクトを取得します。
(II)　JavaScript公開関数「hptl_deserializeH2JS」を使用し，(I)で取得した値をJavaScript配列オブジェクトに格納します。
(III)　JavaScript公開関数「hptl_setPortalClipboardData」を使用し，(II)で作成したJavaScript配列オブジェクトを，userData領域またはポータルクリップボードウィンドウに格納します。
複数datatypeを指定する場合は，「hptl_setPortalClipboardData」を複数回呼んでください。

<csdc:body>タグ内にHTML構成を定義します。
(I)　HTML部品のvalue値に<csdc:serializeJ2H>を定義し，JavaオブジェクトをシリアライズしてHTMLに保存します。
(II)　タグ内のアイコンを表示したい位置に，<csdc:dragicon>タグを定義します。

(2)　ドロップ先画面

<csdc:dest>のdatatype属性を指定します。ドラッグ元の<csdc:src>のdatatypeと一致するように定義してください。ただし，このバージョンでは，<csdc:dest>のdatatype属性に指定した，先頭datatypeだけ有効とします。

<csdc:onpaste>タグ内にペーストイベントハンドラの処理を定義します。
(I)　JavaScript公開関数「hptl_getPortalClipboardData」を使用して，userData領域またはポータルクリップボードウィンドウからJavaScript連想配列オブジェクトを取得します。
(II)　JavaScript関数「getElementById(“html部品名称”)」を使用して，ドロップ先のHTMLオブジェクトを取得します。
(III)　(I)で取得したJavaScript連想配列オブジェクトを展開して値を取得します。
(IV)　(II)で取得したHTMLオブジェクトのvalueに(III)の値を格納します。

<csdc:body>タグ内にドロップ先のHTML構成を定義します。

9.3.2　定義例

＜この項の構成＞

(1)　ドラッグ元画面およびドロップ先画面共通の定義例

(2)　ドラッグ元画面の定義例

(3)　ドロップ先画面の定義例

(1)　ドラッグ元画面およびドロップ先画面共通の定義例

(2)　ドラッグ元画面の定義例

例の中の番号は，「9.3.1　定義規則」の該当個所を示します。

(3)　ドロップ先画面の定義例

例の中の番号は，「9.3.1　定義規則」の該当個所を示します。

9.4　補助ウィンドウを使用したデータフォーム転送の定義方法（パターン2）

ここでは，補助ウィンドウを使用したデータフォーム転送の定義方法について説明します。

＜この節の構成＞

9.4.1　定義規則

9.4.2　定義例

9.4.1　定義規則

＜この項の構成＞

(1)　データ転送元画面（補助ウィンドウ）

(2)　データ転送先画面(補助ウィンドウを開く画面)

(1)　データ転送元画面（補助ウィンドウ）

<csdc:src>のdatatype属性を指定します。データ転送先の<csdc:dest>のdatatypeと一致するよう定義してください。
複数datatypeを指定する場合は，コンマ区切りで指定してください。

<csdc:oncopy>タグ内にコピーイベントハンドラの処理を定義します。
(I)　JavaScript関数「getElementById(“html部品名称”)」を使用して，データ転送元HTMLオブジェクトを取得します。
(II)　JavaScript公開関数「hptl_deserializeH2JS」を使用して，(I)で取得した値をJavaScript配列オブジェクトに格納します。
(III)　JavaScript公開関数「hptl_setPortalClipboardData」を使用して，(II)で作成したJavaScript配列オブジェクトを，userData領域またはポータルクリップボードウィンドウに格納します。複数datatypeを指定する場合は，「hptl_setPortalClipboardData」を複数回呼んでください。

<csdc:body>タグ内にデータ転送元のHTML構成を定義します。
(I)　このタグに<csdc:serializeJ2H>タグを定義し，Javaオブジェクトをシリアライズして文字列として保存します。

［OK］ボタンをクリックしたときに実行される関数を作成します。
(I)　コピーイベントハンドラを実行する関数(hptl_oncopy)を定義します。
複数datatypeを指定する場合は，第一引数にコンマ区切りの文字列を指定してください。
(II)　ペーストイベントハンドラを実行する関数(hptl_onpaste)定義します。
複数datatypeを指定する場合は，第一引数にコンマ区切りの文字列を指定してください。ペーストイベントハンドラを実行する関数(hptl_onpaste)の詳細は，「14.12　クライアントサイドデータ通信JavaScript」を参照してください。
(III)　補助ウィンドウを閉じます。

(2)　データ転送先画面(補助ウィンドウを開く画面)

補助ウィンドウを開きます。
(I)　補助ウィンドウのURLを作成します。
(II)　補助ウィンドウを開くJavaScriptを定義します。

<csdc:dest>タグのdatatype属性を指定します。補助ウィンドウ画面の<csdc:src>タグのdatatypeと一致するよう定義してください。ただし，このバージョンでは，<csdc:dest>のdatatype属性に指定した先頭datatypeだけを有効とします。

<csdc:onpaste>タグ内にペーストイベントハンドラの処理を定義します。
(I)　JavaScript公開関数「hptl_getPortalClipboardData」を使用して，userData領域またはポータルクリップボードウィンドウからJavaScript連想配列オブジェクトを取得します。
(II)　JavaScript関数「getElementById(“html部品名称”)」を使用して，データ転送先のHTMLオブジェクトを取得します。
(III)　(I)で取得したJavaScript連想配列オブジェクトを展開して，値を取得します。
(IV)　(II)で取得したHTMLオブジェクトのvalueに(III)の値を格納します。

<csdc:body>タグにデータ転送先のHTML構成を定義します。

注意事項

データ転送先画面の定義<csdc:dest>のdatatypeが，データ転送元画面の定義<csdc:src>のdatatypeに含まれていない場合は何の処理も行われません。

複数階層にわたって補助ウィンドウを開いた場合に，途中のウィンドウが閉じられた場合は，親ウィンドウを見つけることができなくなります。その場合は，各ポートレット開発者が，適切なエラーメッセージを表示するなどの対応をする必要があります。

9.4.2　定義例

＜この項の構成＞

(1)　データ転送元（補助ウィンドウ）

(2)　データ転送先画面

(1)　データ転送元（補助ウィンドウ）

例の中の番号は，「9.4.1　定義規則」の該当個所を示します。

(2)　データ転送先画面

例の中の番号は，「9.4.1　定義規則」の該当個所を示します。

9.5　ボタンを使用したデータフォーム転送の定義方法（パターン3）

ここでは，ボタンを使用したデータフォーム転送の定義方法について説明します。

＜この節の構成＞

9.5.1　定義規則

9.5.2　定義例

9.5.1　定義規則

＜この項の構成＞

(1)　データ転送元画面

(2)　データ転送先画面

(1)　データ転送元画面

<csdc:src>のdatatype属性を指定します。データ転送先画面の<csdc:dest>のdatatypeと一致するよう定義してください。
複数datatypeを指定する場合は，コンマ区切りで指定してください。

<csdc:oncopy>タグ内にコピーイベントハンドラの処理を定義します。
(I)　JavaScript関数「getElementById(“html部品名称”)」を使用して，データ転送元HTMLオブジェクトを取得します。
(II)　JavaScript公開関数「hptl_deserializeH2JS」を使用して，(I)で取得した値をJavaScript配列オブジェクトに格納します。
(III)　JavaScript公開関数「hptl_setPortalClipboardData」を使用して，(II)で作成したJavaScript配列オブジェクトを，userData領域またはポータルクリップボードウィンドウに格納します。複数datatypeを指定する場合は，「hptl_setPortalClipboardData」を複数回呼んでください。

<csdc:body>タグ内にデータ転送元のHTML構成を定義します。
(I)　HTML部品のvalue値に<csdc:serializeJ2H>を定義し，Javaオブジェクトをシリアライズして，HTMLに保存します。
(II)　［コピー］ボタンをクリックすると実行される関数を作成し，その関数内でコピーイベントハンドラを呼ぶ関数(hptl_oncopy)を定義します。複数datatypeを指定する場合は，第一引数にコンマ区切りの文字列を指定してください。

(2)　データ転送先画面

<csdc:dest>のdatatype属性を指定します。データ転送元の<csdc:src>のdatatypeと一致するよう定義してください。ただし，このバージョンでは，<csdc:dest>のdatatype属性に指定した先頭datatypeだけを有効とします。

<csdc:onpaste>タグ内にペーストイベントハンドラの処理を定義します。
(I)　JavaScript公開関数「hptl_getPortalClipboardData」を使用して，userData領域またはポータルクリップボードウィンドウからJavaScript連想配列オブジェクトを取得します。
(II)　JavaScript関数「getElementById(“html部品名称”)」を使用して，データ転送先のHTMLオブジェクトを取得します。
(III)　(I)で取得したJavaScript連想配列オブジェクトを展開して，値を取得します。
(IV)　(II)で取得したHTMLオブジェクトのvalueに(III)の値を格納します。

<csdc:body>タグ内にデータ転送元のHTML構成を定義します。
(I)　［貼り付け］ボタンをクリックすると実行される関数を作成し，その関数内でペーストイベントハンドラを呼ぶ関数(hptl_onpaste)を定義します。
　複数datatypeを指定する場合は，第一引数にコンマ区切りの文字列を指定してください。
　ペーストイベントハンドラを呼ぶ関数(hptl_onpaste)の詳細は，「14.12　クライアントサイドデータ通信JavaScript」を参照してください。

注意事項

［コピー］ボタンがクリックされないで［貼り付け］ボタンがクリックされた場合は何も処理をしません。

データ転送先画面の定義<csdc:dest>のdatatypeが，データ転送元画面の定義<csdc:src>のdatatypeに含まれていない場合は何も処理をしません。

9.5.2　定義例

＜この項の構成＞

(1)　データ転送元画面

(2)　データ転送先

(1)　データ転送元画面

例の中の番号は，「9.5.1　定義規則」の該当個所を示します。

(2)　データ転送先

例の中の番号は，「9.5.1　定義規則」の該当個所を示します。

10.　ナビゲーションメニュー対応ポートレットの開発

この章では，ナビゲーションメニューにメニューとして登録できるポートレットの開発方法について説明します。

＜この章の構成＞

10.1　ナビゲーションメニュー対応ポートレットを開発する前に

10.2　ナビゲーションメニュー対応ポートレットの画面遷移

10.3　ナビゲーションメニュー対応ポートレットの開発例

10.1　ナビゲーションメニュー対応ポートレットを開発する前に

ここでは，ナビゲーションメニューに対応するポートレットを開発する前に知っておいていただきたい内容について説明します。

＜この節の構成＞

10.1.1　ナビゲーションメニュー対応ポートレットに設定する内容

10.1.2　デプロイ定義ファイルの設定

10.1.1　ナビゲーションメニュー対応ポートレットに設定する内容

ナビゲーションメニューに登録できるポートレットを開発するには，あらかじめ次の項目を開発してください。

メニューに対応するための開発項目

リンク集に対応するための開発項目

＜この項の構成＞

(1)　メニューに対応するための開発項目

(2)　リンク集に対応するための開発項目

(1)　メニューに対応するための開発項目

ポータルサーバは，ナビゲーションメニュー内にポートレット画面を呼び出すアンカーを自動的に生成します。このアンカーのことを最大化画面アンカーといいます。

ポータルサーバのこの機能を利用すると，次の項目を開発または追記するだけでナビゲーションメニュー内に最大化画面アンカーを表示できます。

最大化画面モードおよび新規ウィンドウ画面モードに対応したポートレット画面の開発

デプロイ定義ファイル（hportlet.xml）にナビゲーションメニューに対応させるためのパラメタを追記

新規ウィンドウ画面モードに対応したポートレット画面開発の詳細は，「12.　新規ウィンドウ対応ポートレットの開発」を参照してください。デプロイ定義ファイルの設定については，「10.1.2　デプロイ定義ファイルの設定」を参照してください。

最大化画面アンカーを表示しているナビゲーションメニューを次の図に示します。

図10-1　最大化画面アンカーを表示しているナビゲーションメニュー

最大化画面アンカーの左側には，対応ポートレットが指定したアイコンが表示されます。ナビゲーションメニューに対応しないポートレット，またはアイコンを指定していない対応ポートレットの場合は，ナビゲーションメニューが提供するデフォルトアイコンが表示されます。

対応ポートレットは，ポートレットのタイトルバーの最大化ボタンをクリックすることによって表示される場合と同様に，ナビゲーションメニューから呼ばれた場合でも，画面モードを取得できます。

ナビゲーションメニューから呼ばれた場合，ナビゲーションメニュー画面上の最大化画面アンカーのURLリンク内容には，次のクエリストリングが付け加えられます。

表10-1　ナビゲーションメニューが付加するクエリストリング

変数 | 値 | 説明
hptl_referer | navi | ナビゲーションメニューの操作によってリクエストが発生しました。

対応ポートレットでこのクエリストリングの有無を判定することによって，統合画面の最大化ボタンがクリックされた場合か，またはナビゲーションメニューの最大化画面アンカーがクリックされた場合かの区別ができるようになります。また，統合画面の最大化ボタンがクリックされた場合，またはナビゲーションメニューの最大化画面アンカーがクリックされた場合で，画面に表示する内容を変更できます。

なお，リンク集に登録された特定の画面へのアンカーでは，クエリストリングは付け加えられません。これは，特定の画面を含むポートレットで，任意にURLリンク内容を設定できるためです。このため，リンク集から表示した場合は，その画面がどこから表示されたか判定できません。

(2)　リンク集に対応するための開発項目

ポートレット中の特定の画面をリンク集に登録できるようにするには，ナビゲーションメニューが提供するタグライブラリを使用してポートレットを開発します。タグライブラリの詳細は，「14.15　ナビゲーションメニューのタグライブラリ」を参照してください。

10.1.2　デプロイ定義ファイルの設定

ナビゲーションメニューは，ポートレットをデプロイするときの設定値を参照して，ナビゲーションメニュー対応しているかどうかを判定します。ここでは，ナビゲーションメニュー対応ポートレットのデプロイ定義ファイルに記述する項目について説明します。

ナビゲーションメニュー対応ポートレットのデプロイ定義ファイル（ファイル名はhportlet.xml）に記述する項目を，次の図に示します。

図10-2　ナビゲーションメニュー対応ポートレットのデプロイ定義ファイルに記述する項目

注意事項

hptl.navigationbar.support項目の設定は必須です。

hptl.navigationbar.support項目にtrueを設定した場合は，ほかの項目が設定されていなくてもナビゲーションメニュー対応ポートレットと判定されます。また，hptl.navigationbar.support項目にfalseを設定した場合は，ほかの項目が設定されていてもナビゲーションメニュー非対応ポートレットと判定されます。

10.2　ナビゲーションメニュー対応ポートレットの画面遷移

ナビゲーションメニューからナビゲーションメニュー対応ポートレットの画面呼び出しがある場合の画面遷移図を次に示します。

図10-3　ナビゲーションメニューからナビゲーションメニュー対応ポートレットの画面遷移図

ナビゲーションメニューから最大化画面アンカーをクリックしてポートレットを呼び出すと，クエリストリング（hptl_referer=navi）がURLリンク内容に付け加えられます。呼び出されたポートレットは，最大化画面に表示されます。

［新しいウィンドウに表示する］チェックボックスにチェックをした状態で，ナビゲーションメニューから最大化画面アンカーをクリックしてポートレットを呼び出すと，クエリストリング（hptl_referer=navi）がURLリンク内容に付け加えられます。呼び出されたポートレットは，新規ウィンドウ画面に表示されます。

10.3　ナビゲーションメニュー対応ポートレットの開発例

uCosminexus Portal Frameworkで提供しているサンプルを基に，ナビゲーションメニューに対応するポートレットの開発方法について説明します。

＜この節の構成＞

10.3.1　サンプルの提供方法および動作確認方法

10.3.2　画面の開発

10.3.3　デプロイ定義ファイルの開発

10.3.1　サンプルの提供方法および動作確認方法

＜この項の構成＞

(1)　サンプルの提供方法

(2)　サンプルの動作確認方法

(1)　サンプルの提供方法

uCosminexus Portal Frameworkは，par形式ファイルの「sampleforum.par」をサンプルとして提供しています。

「sampleforum.par」の格納場所を次に示します。

｛uCosminexus Portal Frameworkインストールディレクトリ｝¥samples¥SampleForum¥portlets

「sampleforum.par」を解凍すると，プログラムソースを参照できます。

「sampleforum.par」を解凍したあとのディレクトリ構成およびファイル構成を次の図に示します。

図10-4　「sampleforum.par」のディレクトリ構成およびファイル構成

「sampleforum」ディレクトリに格納されているJSPファイルを次に示します。

done.jsp

edit.jsp

index.jsp

main.jsp

view.jsp

このサンプルでは，view.jspを使用します。view.jspの詳細は，「10.3.2　画面の開発」を参照してください。

(2)　サンプルの動作確認方法

サンプルを使用して動作を確認するには，「sampleforum.par」をデプロイする必要があります。「sampleforum.par」をデプロイすると，サンプルは次の表に示すようにポータルサーバに登録されます。

表10-2　デプロイされるポートレット

ポートレット名
ポートレットのタイトル※
（英語／日本語）
ポートレットが提供するAPIクラス

sampleforum
Sample forum／Sample forum
sampleforum.par内のhportlet.xmlを参照してください。

注※　デプロイしたときのデフォルト値です。

このサンプルは通常の日立APIポートレットです。そのため，特別なライブラリなどの前提条件はありません。

デプロイの方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「日立APIポートレット（PAR形式）のデプロイ」の説明を参照してください。

10.3.2　画面の開発

＜この項の構成＞

(1)　view.jsp

(1)　view.jsp

表示している画面をリンク集に登録するためのボタンおよびアンカーを開発します。ボタンやアンカーを開発するには，<navimenu:linkregisturl>タグを使用します。

このサンプルでは，［リンク集に登録］がリンク集に登録するためのアンカーとなります。

view.jspを新規ウィンドウモードで表示した場合の画面を次の図に示します。

図10-5　view.jspを新規ウィンドウモードで表示した画面

この画面上で［リンク集に登録］アンカーをクリックしたあとに，ナビゲーションメニューが表示する画面を次の図に示します。

図10-6　［リンク集登録確認画面］

10.3.3　デプロイ定義ファイルの開発

ポートレットの動作を設定するために，デプロイ定義ファイルを開発します。このサンプルのデプロイ定義ファイル（hportlet.xml）の内容を次に示します。ここで，ポートレットをナビゲーションメニューに対応するために必要な項目（<param-name>および<param-value>）を設定しています。

サンプルのデプロイ定義ファイル（hportlet.xml）の内容

<portlet-app>
   <portlet>
                ＜中略＞
       <config-param>
           <param-name>hptl.portlet.defaulticon</param-name>
           <param-value>images/forum.gif</param-value>
           <param-name>hptl.inbox.support</param-name>
           <param-value>true</param-value>
           <param-name>hptl.inbox.filtering.support</param-name>
           <param-value>true</param-value>
           <param-name>hptl.navigationbar.support</param-name>
           <param-value>true</param-value>
       </config-param>
                ＜中略＞
   </portlet>
</portlet-app>

各項目の内容を説明します。

hptl.portlet.defaulticon
ナビゲーションメニューの最大化画面アンカーの左側に表示する，デフォルトアイコンのURLを指定します。

hptl.inbox.support
ポートレットをInformation Viewに対応させるかどうかを設定します。Information Viewに対応させる場合は，trueを設定します。

hptl.inbox.filtering.support
ポートレットを新着情報の取得条件を設定する機能に対応させるかどうかを設定します。新着情報の取得条件を設定する機能に対応させる場合は，trueを設定します。

hptl.navigationbar.support
ポートレットをナビゲーションメニューに対応させるかどうかを設定します。ナビゲーションメニューに対応させる場合は，trueを設定します。ナビゲーションメニュー対応ポートレットでは，この項目の設定は必須です。

なお，デプロイ定義ファイルの詳細は，「10.1.2　デプロイ定義ファイルの設定」を参照してください。

11.　言語およびタイムゾーン切り替え対応ポートレットの開発

この章では，言語およびタイムゾーンの切り替え機能に対応したポートレットの開発方法について説明します。

＜この章の構成＞

11.1　言語切り替え対応ポートレットの開発方法

11.2　タイムゾーン切り替え対応ポートレットの開発方法

11.1　言語切り替え対応ポートレットの開発方法

ここでは，個人ごとに使用する言語およびタイムゾーンを切り替えられるポートレットの開発方法を説明します。

＜この節の構成＞

11.1.1　言語切り替え対応ポートレットの開発

11.1.2　言語切り替え対応ポートレットの開発例

11.1.1　言語切り替え対応ポートレットの開発

言語切り替え対応ポートレットでは，uCosminexus Portal Frameworkが提供するAPIによって使用する必要がある言語を判別し，最適な言語でコンテンツを作成します。uCosminexus Portal Frameworkは，標準で日本語と英語に対応していますが，システム管理者の設定により中国語等のほかの言語に対応することが可能です。使用する言語の追加については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ストリングリソースのカスタマイズ」の説明を参照してください。

言語切り替え対応ポートレットの処理概要を次の図に示します。

図11-1　言語切り替え対応ポートレットの処理概要

ポートレットでは，次の処理を行います。

使用する言語の判定
使用する言語は，ユーザが使用しているWebブラウザの言語設定か，またはポータル画面の利用者用レイアウトカスタマイズ画面で設定されます。
言語切り替え対応ポートレットでは，ユーザロケール情報取得APIのLocaleDataクラスを使用して，設定された言語の識別子を取得します。

該当する言語のストリングの作成
ストリングリソース取得API等を使用して，LocaleDataクラスが示した判定に応じた適切なストリングを作成します。

ユーザロケール情報取得APIの詳細は，「14.16　ユーザロケール情報取得API」を参照してください。また，ストリングリソース取得APIの詳細は，「14.17　ストリングリソース取得API」を参照してください。

11.1.2　言語切り替え対応ポートレットの開発例

使用する言語を判定するJSPファイルのサンプルコードを次に示します。

サンプルコード

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %>
<%@ page import="jp.co.hitachi.soft.portal.api.user.LocaleData" %>
<jsp:useBean id="configbean" class="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" scope="page"/>

<%
configbean.initBean(request);

String langType = LocaleData.getLangType(request) ;

if(langType.equals("ja"))
 configbean.setCustomizeTitle("日本語用のタイトルメニューです") ;
else if(langType.equals("en"))
 configbean.setCustomizeTitle("For English Title Menu") ;
else
 configbean.setCustomizeTitle("Other Language Title Menu") ;

%>
サンプルポートレット

11.2　タイムゾーン切り替え対応ポートレットの開発方法

＜この節の構成＞

11.2.1　タイムゾーン切り替え対応ポートレットの開発

11.2.2　タイムゾーン切り替え対応ポートレットの開発例

11.2.1　タイムゾーン切り替え対応ポートレットの開発

タイムゾーン切り替え対応ポートレットでは，使用するタイムゾーンを取得・設定して，適切な時刻をポートレットに表示します。

使用するタイムゾーンは，ユーザが使用しているWebブラウザの言語設定か，またはポータル画面の利用者用レイアウトカスタマイズ画面で設定されます。また，タイムゾーンの識別には，J2SE1.4で定めるカスタムタイムゾーンIDを使用します（サマータイムを考慮した地域は，サポートされません）。

タイムゾーン切り替え対応ポートレットでは，ユーザロケール情報取得APIで使用するタイムゾーンを取得・設定します。ユーザロケール情報取得APIの詳細は，「14.16　ユーザロケール情報取得API」を参照してください。

11.2.2　タイムゾーン切り替え対応ポートレットの開発例

ユーザのタイムゾーンに応じて日時を表示するJSPファイルのサンプルコードを次に示します。

サンプルコード

<%@ page import="jp.co.hitachi.soft.portal.api.user.LocaleData" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.util.TimeZone" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss z",LocaleData.getLocale(request));
formatter.setTimeZone(TimeZone.getTimeZone(LocaleData.getTimeZone(request)));
String dateString = formatter.format(new Date());
%>
サンプルポートレット<%=dateString%>

12.　新規ウィンドウ対応ポートレットの開発

uCosminexus Portal Frameworkには，ポートレットを新規ウィンドウ画面で表示する機能があります。この章では，ナビゲーションメニューから表示する場合などに新規ウィンドウに表示できるポートレットの開発方法について説明します。

＜この章の構成＞

12.1　新規ウィンドウ対応ポートレットを開発する前に

12.2　新規ウィンドウ対応ポートレットの開発例

12.1　新規ウィンドウ対応ポートレットを開発する前に

ここでは，新規ウィンドウ対応ポートレットを開発する前に，知っておいていただきたい内容について説明します。

＜この節の構成＞

12.1.1　新規ウィンドウの画面構成

12.1.2　新規ウィンドウ対応ポートレットの開発上の注意

12.1.1　新規ウィンドウの画面構成

新規ウィンドウ画面は，ポートレット開発者が作成したコンテンツにタイトルバーを付けた構成になります。このタイトルバーにポートレットのタイトルが表示されます。新規ウィンドウ画面は，JavaScriptのwindow.openなどで作成したWebブラウザウィンドウ画面内に統合画面を表示する場合に適しています。

新規ウィンドウ画面の例を次の図に示します。

図12-1　新規ウィンドウ画面

新規ウィンドウ画面のタイトル

新規ウィンドウ画面では，次の二つのタイトルを登録できます。

ポートレットのタイトル
ポートレットのタイトルを登録して，新規ウィンドウ画面のタイトルバーに表示できます（最大化画面と同様）。

ウィンドウのタイトル
ウィンドウのタイトルを登録して，Webブラウザのタイトルバーに表示できます。

なお，PortletInfoBeanのsetCustomizeTitleメソッドを使用すると，ポートレットのタイトルの表示を動的にできます。PortletInfoBeanのsetCustomizeTitleメソッドについては，「14.5　ポートレット情報取得Bean」の「jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean」を参照してください。

ポートレットのタイトルの登録方法については，「3.13.2　デプロイ定義ファイル（hportlet.xml）の作成」を参照してください。

12.1.2　新規ウィンドウ対応ポートレットの開発上の注意

新規ウィンドウ画面を開発する場合は，次の点に注意して開発してください。

新規ウィンドウ画面内に不正なリンク（新規ウィンドウ画面から標準画面／最大化画面／編集画面へのリンク）を出現させないようにしてください。

利用者のコンピュータ上に複数の「標準画面／最大化画面／編集画面」が表示されないようにしてください。複数の「標準画面／最大化画面／編集画面」が表示された場合，一つの画面を編集したときに，表示されている複数の画面上の情報に矛盾が発生するおそれがあります。

12.2　新規ウィンドウ対応ポートレットの開発例

ここでは，新規ウィンドウ対応ポートレットの開発例について説明します。

＜この節の構成＞

12.2.1　新規ウィンドウ画面へのリンクを表示するコンテンツ

12.2.2　新規ウィンドウ画面を表示するコンテンツ

12.2.1　新規ウィンドウ画面へのリンクを表示するコンテンツ

新規ウィンドウ画面へのリンクを表示する日立APIポートレットのソース（default.jsp）のコーディング例を次に示します。

コーディング例（default.jsp）

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletURI" %>
<%@ taglib uri="http://soft.hitachi.co.jp/portal/utils" prefix="ut" %>

<H1>デフォルト画面</H1>

<%
PortletInfoBean configBean = new PortletInfoBean();
configBean.initBean(request);
%>

<!% メール新規作成画面を新規ウィンドウ画面モードで表示するリンク %>
<A HREF="<ut:portletURI name="<%=configBean.getName()%>" mode="<%=PortletInfoBean.Mode.NEWWINDOW.toString()%>" parameter="controller=NEWMAIL" />" target="_blank">メール新規作成</A>

12.2.2　新規ウィンドウ画面を表示するコンテンツ

新規ウィンドウ画面モードで表示するリンクがクリックされた際に，新規ウィンドウ画面を表示する日立APIポートレットのソース（Controller.jsp）のコーディング例を次に示します。このサンプルでは，最大化画面モード時および新規ウィンドウ画面モード時のコンテンツを開発します。また，新規ウィンドウ画面モード時には，ポートレットのタイトルをカスタマイズしています。

コーディング例（Controller.jsp）

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %>
<%@ taglib uri="http://soft.hitachi.co.jp/portal/utils" prefix="ut" %>

<%
   PortletInfoBean pInfo = new PortletInfoBean();
   pInfo.initBean(request);
   PortletInfoBean.Mode pMode = pInfo.getMode();
%>
<%
   // 標準画面モード
   view = "default.jsp";

   // 画面モード判定
   if (pMode == PortletInfoBean.Mode.MAXIMIZE) {
       // 最大化画面モード
       view = "maximized.jsp";
   } else if (pMode == PortletInfoBean.Mode.NEWWINDOW) {
       // 新規ウィンドウ画面モード
       pInfo.setCustomizeTitle("メール新規作成画面");
       view = "newwindow.jsp";
   }
%>
<jsp:include page="<%= view %>" flush="true"/>

default.jsp

<hr>
標準画面モード時に表示する画面です。

maximized.jsp

<hr>
最大化画面モード時に表示する画面です。

newwindow.jsp

<hr>
新規ウィンドウモード時に表示する画面です。

13.　カスタマイズ情報の任意保存対応ポートレットの開発

この章では，カスタマイズ情報の任意保存機能（カスタマイズ情報を任意のタイミングで保存できる機能）に対応したポートレットの開発について説明します。

＜この章の構成＞

13.1　カスタマイズ情報任意保存機能の使用方法

13.2　カスタマイズ情報任意保存機能使用時のポートレットの開発例

13.1　カスタマイズ情報任意保存機能の使用方法

カスタマイズ情報は，通常ログアウト時に保存されますが，カスタマイズ情報任意保存機能を使用すると，ポートレット上で任意のタイミングで保存できるようになります。

カスタマイズ情報任意保存機能を使用する場合，カスタマイズ情報を追加・変更する処理部分に「排他区間」を設定する必要があります。

なお，排他区間の開始処理を行った場合は，必ず排他区間の終了処理をしてください。

ポートレット並列化機能を使用している場合

ポートレット並列化機能を使用している場合，自身のポートレットだけではなく，ほかのポートレットも同時にカスタマイズ情報にアクセスします。このため，各ポートレットで排他区間を必ず設定してください。排他区間を設定すると，排他区間中はほかのポートレットの保存処理が保留されます。

ポートレット並列化機能を使用している場合の，排他の仕様を次の表に示します。

表13-1　ポートレット並列化機能を使用している場合の排他の仕様

自身のポートレットの状態 | ほかのポートレットの状態
排他区間中 | 保存処理中
排他区間中 | ○ | ×
保存処理中 | × | ×

（凡例）

○：並列実行できます。

×：並列実行できません。

一方のポートレットが排他区間中の場合は，他方のポートレットも排他区間を開始できます。

一方のポートレットが追加・変更したカスタマイズ情報を保存処理中の場合は，他方のポートレットが排他区間を開始することはできません。また，他方のポートレットの保存処理は，排他区間が終了するまで保留されます。

13.2　カスタマイズ情報任意保存機能使用時のポートレットの開発例

ここでは，カスタマイズ情報任意保存機能を使用する場合のポートレットの開発例を説明します。

カスタマイズ情報任意保存機能を使用する場合，変更区間処理全体をtryブロックで囲って，ブロック内の先頭で排他区間の開始処理を記述し，finallyブロックで排他区間の終了処理を記述します。

日立APIポートレットでのコーディング例を次に示します。

コーディング例

 <jsp:useBean id="UserInfo"  class="jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean"  scope="page"/>
 <%
 UserInfo.setRequest(request);

 try{

   UserInfo.customizeInfoStart();  //排他区間開始
   UserInfo.setCustomizeInfo("DataA","UserID:ABC");
   UserInfo.setCustomizeInfo("DataB","UserPassword:XYZ");
   UserInfo.setCustomizeInfo("DataC","UserOu:XYZ");

  }finally{
    UserInfo.customizeInfoEnd();    //排他区間終了

  }

  //LDAP/DBへのデータの保存処理
  boolean isSave = UserInfo.commitData();
  if( isSave ){
   out.print("データ保存に成功しました");

  }else{
    out.print("データ保存に失敗しました");

  }
 %>

14.　ライブラリ

この章では，uCosminexus Portal Frameworkで提供するライブラリについて説明します。

＜この章の構成＞

14.1　ポートレットを開発するためのライブラリ

14.2　ポートレットユティリティタグライブラリ

14.3　ポートレットモードタグライブラリ

14.4　ポートレットユティリティクラスライブラリ

14.5　ポートレット情報取得Bean

14.6　ユーザ情報取得Bean

14.7　ログ出力Bean

14.8　UserAgent情報取得Bean

14.9　ポートレットイベントAPI

14.10　ポートレットパラメタ取得インタフェース

14.11　クライアントサイドデータ通信タグライブラリ

14.12　クライアントサイドデータ通信JavaScript

14.13　クライアントサイドデータ通信クラスライブラリ

14.14　ダイレクト呼び出し結果取得API

14.15　ナビゲーションメニューのタグライブラリ

14.16　ユーザロケール情報取得API

14.17　ストリングリソース取得API

14.18　ユーザ登録API

14.19　ユーザアカウント情報取得API

14.20　カスタムウィンドウステートAPI

14.21　拡張Strutsタグライブラリ

14.1　ポートレットを開発するためのライブラリ

uCosminexus Portal Frameworkでは次のライブラリを使用します。

ポートレットAPI

ポートレットを作成するときのライブラリです。

ポートレットユティリティタグライブラリ（14.2）

ポートレットモードタグライブラリ（14.3）

ポートレットユティリティクラスライブラリ（14.4）

ポートレット情報取得Bean（14.5）

ユーザ情報取得Bean（14.6）

ログ出力Bean（14.7）

UserAgent情報取得Bean（14.8）

ポートレットイベントAPI（14.9）

ポートレットパラメタ取得インタフェース（14.10）

クライアントサイドデータ通信API

クライアントサイドデータ通信機能を実現するためのライブラリです。

クライアントサイドデータ通信タグライブラリ（14.11）

クライアントサイドデータ通信JavaScript（14.12）

クライアントサイドデータ通信クラスライブラリ（14.13）

ダイレクト呼び出し結果取得API

ダイレクト呼び出し実行時のデータの引き継ぎ結果を取得するためのライブラリです。

ダイレクト呼び出し結果取得API（14.14）

ナビゲーションメニューAPI

ナビゲーションメニューに対応したポートレット作成するためのライブラリです。

ナビゲーションメニューのタグライブラリ（14.15）

ユーザロケール情報取得API

ユーザのロケール情報（言語識別子）を取得，設定するためのライブラリです。

ユーザロケール情報取得API（14.16）

ストリングリソース取得API

ストリングリソースを取得するときに使用するライブラリです。

ストリングリソース取得API（14.17）

セルフユーザ登録ポートレット用API

セルフユーザ登録ポートレットを使用するためのライブラリです。

ユーザ登録API（14.18）

ユーザアカウント情報取得API（14.19）

カスタムウィンドウステートAPI

標準APIポートレットでカスタムウィンドウステートを使用するためのライブラリです。

カスタムウィンドウステートAPI（14.20）

拡張Strutsタグライブラリ

標準APIポートレットでStrutsフレームワークを使用する場合に使用するタグライブラリです。

拡張Strutsタグライブラリ（14.21）

14.2　ポートレットユティリティタグライブラリ

ポートレットユティリティタグライブラリの一覧を次の表に示します。

表14-1　ポートレットユティリティタグライブラリの一覧

タグ名 | 説明 | JSPスクリプトレット式で評価される属性
ut:cache | 日立APIポートレットの出力するコンテンツの一部に対し，キャッシュを使用します。 | name，time，scope
ut:convert | XSLTスタイルシートに基づいて，XMLデータをポートレットに取り込みます。 | xslt
ut:logindata | ログイン画面でダイレクト呼び出しパラメタおよびPOSTデータを保持する<HIDDEN>タグを生成します。 | －
ut:portletURI | 登録されているポートレットを，画面モードを指定して呼び出すためのアンカーを作成します。 | name，mode，parameter
ut:secureURI | 現在のURLのプロトコルを「HTTPS」に変更し，コンテンツキャッシュ削除の指定を追加して出力します。 | －
uu:a | HTMLおよびCHTMLでは，href属性をURL変換します。 | href，lang，name，onblur，onclick，ondblclick，onfocus，onkeydown，onkeypress，onkeyup，onmousedown，onmousemove，onmouseout，onmouseover，onmouseup，shape，target
HDMLでは，dest属性をURL変換します。 | dest，next，cancel
uu:action | dest，next，cancel属性をURL変換します。 | dest，next，cancel
uu:area | href属性をURL変換します。 | href，alt，lang，name，onblur，onclick，ondblclick，onfocus，onkeydown，onkeypress，onkeyup，onmousedown，onmousemove，onmouseout，onmouseover，onmouseup，shape，target
uu:ce | ce要素のdest属性をURL変換します。 | dest，next，cancel
uu:choice | bookmark属性をURL変換します。終了タグの直前にログイン／ログアウトアンカーを挿入します。 | －
uu:display | bookmark属性をURL変換します。終了タグの直前にログイン／ログアウトアンカーを挿入します。 | －
uu:entry | bookmark属性をURL変換します。開始タグの直後にログイン／ログアウトアンカーを挿入します。 | －
uu:form | action属性をURL変換します。 | action，accept，accept_charset，enctype，lang，name，onclick，ondblclick，onkeydown，onkeypress，onkeyup，onmousedown，onmousemove，onmouseout，onmouseover，onmouseup，onreset，onsubmit，target
uu:frame | src，longdesc属性をURL変換します。 | src，longdesc，frameborder，marginheight，marginwidth，name，noresize，scrolling，target
uu:iframe | src，longdesc属性をURL変換します。 | src，longdesc，align，frameborder，height，marginheight，marginwidth，name，scrolling，width
uu:img | src，longdesc属性をURL変換します。longdesc属性はHTMLの場合だけURL変換します。 | src，longdesc，alt，align，border，height，hspace，lang，name，onclick，ondblclick，onkeydown，onkeypress，onkeyup，onmousedown，onmousemove，onmouseout，onmouseover，onmouseup，usemap，vspace，width
uu:input | src属性をURL変換します。 | src，accept，align，alt，lang，name，onblur，onchange，onclick，ondblclick，onfocus，onkeydown，onkeypress，onkeyup，onmousedown，onmousemove，onmouseout，onmouseover，onmouseup，onselect，size，usemap，value
uu:object | data，archive，classid，codebase属性をURL変換します。 | codebase，archive，classid，data，align，border，height，hspace，lang，name，onclick，ondblclick，onkeydown，onkeypress，onkeyup，onmousedown，onmousemove，onmouseout，onmouseover，onmouseup，type，usemap，vspace，width
uu:script | src属性をURL変換します。 | src，type

（凡例）

－：該当しません。

注意

ポートレットユーティリティクラスライブラリのjp.co.hitachi.soft.portal.portlet.PortletURIクラスを使用して取得したURLをポートレットユーティリティタグライブラリのURL指定属性に指定すると，一度変換されたURLに対して再度URL変換が行われるため，変換後のURLが不正となる場合があります。

＜この節の構成＞

ut:cache

ut:convert

ut:logindata

ut:portletURI

ut:secureURI

uu:a

uu:action

uu:area

uu:ce

uu:choice

uu:display

uu:entry

uu:form

uu:frame

uu:iframe

uu:img

uu:input

uu:object

uu:script

ut:cache

機能

日立APIポートレットの出力するコンテンツの一部に対し，キャッシュを使用します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/utils" prefix="ut" %>
<ut:cache name="CacheKey" time="3" scope="session">
キャッシュを使用するコンテンツ
</ut:cache>

対応する言語

HTML，CHTML，HDML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
name | キャッシュ内でのキー文字列を指定します。 | 必須 | ○
time | キャッシュの有効期間を指定します。単位は分です。 | 任意 | ○
scope | キャッシュの有効範囲を指定します。sessionだけに対応します。 | 必須 | ○

（凡例）

○：JSPスクリプトレット式で評価されます。

ut:convert

機能

XSLTスタイルシートに基づいて，XMLデータをポートレットに取り込みます。このタグ内にはXML形式のデータを記述します。

構文

<%@ taglib uri=" http://soft.hitachi.co.jp/portal/utils" prefix="ut" %>
<ut:convert xslt = "html_default.xsl">
XSLTスタイルシートに基づいて取り込むXMLデータ
</ut:convert>

対応する言語

HTML，CHTML，HDML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
xslt | タグ内のXMLデータを変換するXSLTスタイルシート名を指定します。 | 任意 | ○

（凡例）

○：JSPスクリプトレット式で評価されます。

ut:logindata

機能

ログイン画面でダイレクト呼び出しパラメタおよびPOSTデータを保持する<HIDDEN>タグを生成します。

このタグライブラリは，ログイン画面のFORM内に定義します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/utils" prefix="ut" %>
<ut:logindata/>

対応する言語

HTML，CHTML，HDML

属性

なし

ut:portletURI

機能

jetspeed-config.jcfgファイルに登録されているポートレットを，画面モードを指定して呼び出すためのアンカーを作成します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/utils" prefix="ut" %>
...
<a href="<ut:portletURI name='portletA'/ >">portletA</a>

対応する言語

HTML，CHTML，HDML

属性

属性
説明
必須/任意
JSPスクリプトレット式評価

name
呼び出されるポートレット名を指定します。省略した場合は呼び出したポートレットとなります。
任意
○

mode
呼び出す画面モードを示す文字列MAXIMIZE，NEWWINDOW，およびIFRAMEを指定します。
省略時は呼出元の画面モードとなります。ただし，呼出元の画面モードがDEFAULTである場合はMAXIMIZEになります。
任意
○

parameter
クエリ文字列（URLエンコード済みの文字列）を指定します。"?"の付加は不要です。省略時はクエリなしとして扱います。
任意
○

（凡例）

○：JSPスクリプトレット式で評価されます。

例外

JSPException - 次の場合に発生します。

mode引数の値がMAXIMIZE，NEWWINDOW，およびIFRAME以外の場合

ut:secureURI

機能

現在のURLのプロトコルを「HTTPS」に変更し，コンテンツキャッシュ削除の指定を追加して出力します。現在のURLがすでにHTTPSプロトコルの場合は，現在のURLをそのまま表示します。

URLのホスト名とポート番号は，HTTPSドメイン名プロパティの設定値を利用します。

構文

<%@ taglib uri='http://soft.hitachi.co.jp/portal/utils' prefix='ut' %><%@ page contentType="text/html; charset=Shift_JIS" %>
...
<A HREF="<ut:secureURI/ >">portletA</A>

対応する言語

HTML，CHTML，HDML

uu:a

機能

HTML，CHTMLでは，a要素のhref属性をURL変換します。

HDMLでは，a要素のdest属性をURL変換します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:a href="url" ...>
...
</uu:a>

対応する言語

HTML，CHTML，HDML

属性（HTML，CHTML）

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
href | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
accesskey | HTML4.01の仕様に従います。 | 任意 | ×
charset | HTML4.01の仕様に従います。 | 任意 | ×
coords | HTML4.01の仕様に従います。 | 任意 | ×
dir | HTML4.01の仕様に従います。 | 任意 | ×
hclass※1 | HTML4.01の仕様に従います。 | 任意 | ×
hid※2 | HTML4.01の仕様に従います。 | 任意 | ×
hreflang | HTML4.01の仕様に従います。 | 任意 | ×
lang | HTML4.01の仕様に従います。 | 任意 | ○
name | HTML4.01の仕様に従います。 | 任意 | ○
onblur | HTML4.01の仕様に従います。 | 任意 | ○
onclick | HTML4.01の仕様に従います。 | 任意 | ○
ondblclick | HTML4.01の仕様に従います。 | 任意 | ○
onfocus | HTML4.01の仕様に従います。 | 任意 | ○
onkeydown | HTML4.01の仕様に従います。 | 任意 | ○
onkeypress | HTML4.01の仕様に従います。 | 任意 | ○
onkeyup | HTML4.01の仕様に従います。 | 任意 | ○
onmousedown | HTML4.01の仕様に従います。 | 任意 | ○
onmousemove | HTML4.01の仕様に従います。 | 任意 | ○
onmouseout | HTML4.01の仕様に従います。 | 任意 | ○
onmouseover | HTML4.01の仕様に従います。 | 任意 | ○
onmouseup | HTML4.01の仕様に従います。 | 任意 | ○
rel | HTML4.01の仕様に従います。 | 任意 | ×
rev | HTML4.01の仕様に従います。 | 任意 | ×
shape | HTML4.01の仕様に従います。 | 任意 | ○
style | HTML4.01の仕様に従います。 | 任意 | ×
tabindex | HTML4.01の仕様に従います。 | 任意 | ×
target | HTML4.01の仕様に従います。 | 任意 | ○
title | HTML4.01の仕様に従います。 | 任意 | ×
type | HTML4.01の仕様に従います。 | 任意 | ×

（凡例）

○：JSPスクリプトレット式で評価されます。

×：JSPスクリプトレット式で評価されません。

注※1　hclass：HTML属性のclassです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

注※2　hid：HTML属性のidです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

属性（HDML）

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
dest | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
next | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
cancel | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
accesskey | HDML3.3の仕様に従います。 | 任意 | ×
accept_charset | HDML3.3の仕様に従います。 | 任意 | ×
clear | HDML3.3の仕様に従います。 | 任意 | ×
friend | HDML3.3の仕様に従います。 | 任意 | ×
label | HDML3.3の仕様に従います。 | 任意 | ×
method | HDML3.3の仕様に従います。 | 任意 | ×
number | HDML3.3の仕様に従います。 | 任意 | ×
postdata | HDML3.3の仕様に従います。 | 任意 | ×
receive | HDML3.3の仕様に従います。 | 任意 | ×
rel | HDML3.3の仕様に従います。 | 任意 | ×
retvals | HDML3.3の仕様に従います。 | 任意 | ×
sendreferer | HDML3.3の仕様に従います。 | 任意 | ×
task | HDML3.3の仕様に従います。 | 任意 | ×
vars | HDML3.3の仕様に従います。 | 任意 | ×

（凡例）

○：JSPスクリプトレット式で評価されます。

×：JSPスクリプトレット式で評価されません。

uu:action

機能

action要素のdest属性，next属性，およびcancel属性をURL変換します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:action task="gosub" dest="url" next="url" cancel="url"/>

対応する言語

HDML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
dest | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
next | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
cancel | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
accept_charset | HDML3.3の仕様に従います。 | 任意 | ×
clear | HDML3.3の仕様に従います。 | 任意 | ×
friend | HDML3.3の仕様に従います。 | 任意 | ×
icon | HDML3.3の仕様に従います。 | 任意 | ×
label | HDML3.3の仕様に従います。 | 任意 | ×
method | HDML3.3の仕様に従います。 | 任意 | ×
number | HDML3.3の仕様に従います。 | 任意 | ×
postdata | HDML3.3の仕様に従います。 | 任意 | ×
receive | HDML3.3の仕様に従います。 | 任意 | ×
rel | HDML3.3の仕様に従います。 | 任意 | ×
retvals | HDML3.3の仕様に従います。 | 任意 | ×
sendreferer | HDML3.3の仕様に従います。 | 任意 | ×
src | HDML3.3の仕様に従います。 | 任意 | ×
task | HDML3.3の仕様に従います。 | 任意 | ×
type | HDML3.3の仕様に従います。 | 任意 | ×
vars | HDML3.3の仕様に従います。 | 任意 | ×

（凡例）

○：JSPスクリプトレット式で評価されます。

×：JSPスクリプトレット式で評価されません。

uu:area

機能

area要素のhref属性をURL変換します。なお，nohref属性は使用できません。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:area href="url" alt="sample" ... />

対応する言語

HTML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
href | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
alt | HTML4.01の仕様に従います。 | 必須 | ○
accesskey | HTML4.01の仕様に従います。 | 任意 | ×
hclass※1 | HTML4.01の仕様に従います。 | 任意 | ×
coords | HTML4.01の仕様に従います。 | 任意 | ×
dir | HTML4.01の仕様に従います。 | 任意 | ×
hid※2 | HTML4.01の仕様に従います。 | 任意 | ×
lang | HTML4.01の仕様に従います。 | 任意 | ○
name | HTML4.01の仕様に従います。 | 任意 | ○
onblur | HTML4.01の仕様に従います。 | 任意 | ○
onclick | HTML4.01の仕様に従います。 | 任意 | ○
ondblclick | HTML4.01の仕様に従います。 | 任意 | ○
onfocus | HTML4.01の仕様に従います。 | 任意 | ○
onkeydown | HTML4.01の仕様に従います。 | 任意 | ○
onkeypress | HTML4.01の仕様に従います。 | 任意 | ○
onkeyup | HTML4.01の仕様に従います。 | 任意 | ○
onmousedown | HTML4.01の仕様に従います。 | 任意 | ○
onmousemove | HTML4.01の仕様に従います。 | 任意 | ○
onmouseout | HTML4.01の仕様に従います。 | 任意 | ○
onmouseover | HTML4.01の仕様に従います。 | 任意 | ○
onmouseup | HTML4.01の仕様に従います。 | 任意 | ○
shape | HTML4.01の仕様に従います。 | 任意 | ○
style | HTML4.01の仕様に従います。 | 任意 | ×
tabindex | HTML4.01の仕様に従います。 | 任意 | ×
target | HTML4.01の仕様に従います。 | 任意 | ○
title | HTML4.01の仕様に従います。 | 任意 | ×

（凡例）

○：JSPスクリプトレット式で評価されます。

×：JSPスクリプトレット式で評価されません。

注※1　hclass：HTML属性のclassです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

注※2　hid：HTML属性のidです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

uu:ce

機能

ce要素のdest属性をURL変換します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:ce task="gosub" dest="url" .../>

対応する言語

HDML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
dest | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
next | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
cancel | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
accept_charset | HDML3.3の仕様に従います。 | 任意 | ×
clear | HDML3.3の仕様に従います。 | 任意 | ×
friend | HDML3.3の仕様に従います。 | 任意 | ×
label | HDML3.3の仕様に従います。 | 任意 | ×
method | HDML3.3の仕様に従います。 | 任意 | ×
number | HDML3.3の仕様に従います。 | 任意 | ×
postdata | HDML3.3の仕様に従います。 | 任意 | ×
receive | HDML3.3の仕様に従います。 | 任意 | ×
rel | HDML3.3の仕様に従います。 | 任意 | ×
retvals | HDML3.3の仕様に従います。 | 任意 | ×
sendreferer | HDML3.3の仕様に従います。 | 任意 | ×
task | HDML3.3の仕様に従います。 | 任意 | ×
value | HDML3.3の仕様に従います。 | 任意 | ×
vars | HDML3.3の仕様に従います。 | 任意 | ×

（凡例）

○：JSPスクリプトレット式で評価されます。

×：JSPスクリプトレット式で評価されません。

uu:choice

機能

choice要素のbookmark属性をURL変換します。終了タグの直前にログイン／ログアウトアンカーを挿入します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:choice name="choicetag" bookmark="url" ...>
...
</uu:choice>

対応する言語

HDML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
bookmark | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ×
default | HDML3.3の仕様に従います。 | 任意 | ×
idefault | HDML3.3の仕様に従います。 | 任意 | ×
ikey | HDML3.3の仕様に従います。 | 任意 | ×
key | HDML3.3の仕様に従います。 | 任意 | ×
markable | HDML3.3の仕様に従います。 | 任意 | ×
method | HDML3.3の仕様に従います。 | 任意 | ×
name | HDML3.3の仕様に従います。 | 任意 | ×
public | HDML3.3の仕様に従います。 | 任意 | ×
title | HDML3.3の仕様に従います。 | 任意 | ×

（凡例）

×：JSPスクリプトレット式で評価されません。

uu:display

機能

display要素のbookmark属性をURL変換します。終了タグの直前にログイン／ログアウトアンカーを挿入します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:display name="displaytag" bookmark="url" ...>
...
</uu:display>

対応する言語

HDML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
bookmark | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ×
markable | HDML3.3の仕様に従います。 | 任意 | ×
name | HDML3.3の仕様に従います。 | 任意 | ×
public | HDML3.3の仕様に従います。 | 任意 | ×
title | HDML3.3の仕様に従います。 | 任意 | ×

（凡例）

×：JSPスクリプトレット式で評価されません。

uu:entry

機能

entry要素のbookmark属性をURL変換します。開始タグの直後にログイン／ログアウトアンカーを挿入します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:entry name="entrytag" src="url" ...>
...
</uu:entry>

対応する言語

HDML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
bookmark | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ×
default | HDML3.3の仕様に従います。 | 任意 | ×
emptyok | HDML3.3の仕様に従います。 | 任意 | ×
fill | HDML3.3の仕様に従います。 | 任意 | ×
format | HDML3.3の仕様に従います。 | 任意 | ×
key | HDML3.3の仕様に従います。 | 任意 | ×
markable | HDML3.3の仕様に従います。 | 任意 | ×
name | HDML3.3の仕様に従います。 | 任意 | ×
noecho | HDML3.3の仕様に従います。 | 任意 | ×
public | HDML3.3の仕様に従います。 | 任意 | ×
title | HDML3.3の仕様に従います。 | 任意 | ×

（凡例）

×：JSPスクリプトレット式で評価されません。

uu:form

機能

form要素のaction属性をURL変換します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:form action="url" ...>
...
</uu:form>

対応する言語

HTML，CHTML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
action | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 必須 | ○
accept | HTML4.01の仕様に従います。 | 任意 | ○
accept_charset※1 | HTML4.01の仕様に従います。 | 任意 | ○
dir | HTML4.01の仕様に従います。 | 任意 | ×
enctype | HTML4.01の仕様に従います。 | 任意 | ○
hclass※2 | HTML4.01の仕様に従います。 | 任意 | ×
hid※3 | HTML4.01の仕様に従います。 | 任意 | ×
lang | HTML4.01の仕様に従います。 | 任意 | ○
method | HTML4.01の仕様に従います。 | 任意 | ×
name | HTML4.01の仕様に従います。 | 任意 | ○
onclick | HTML4.01の仕様に従います。 | 任意 | ○
ondblclick | HTML4.01の仕様に従います。 | 任意 | ○
onkeydown | HTML4.01の仕様に従います。 | 任意 | ○
onkeypress | HTML4.01の仕様に従います。 | 任意 | ○
onkeyup | HTML4.01の仕様に従います。 | 任意 | ○
onmousedown | HTML4.01の仕様に従います。 | 任意 | ○
onmousemove | HTML4.01の仕様に従います。 | 任意 | ○
onmouseout | HTML4.01の仕様に従います。 | 任意 | ○
onmouseover | HTML4.01の仕様に従います。 | 任意 | ○
onmouseup | HTML4.01の仕様に従います。 | 任意 | ○
onreset | HTML4.01の仕様に従います。 | 任意 | ○
onsubmit | HTML4.01の仕様に従います。 | 任意 | ○
style | HTML4.01の仕様に従います。 | 任意 | ×
target | HTML4.01の仕様に従います。 | 任意 | ○
title | HTML4.01の仕様に従います。 | 任意 | ×

（凡例）

○：JSPスクリプトレット式で評価されます。

×：JSPスクリプトレット式で評価されません。

注※1　accept_charset：HTML属性のaccept-charsetです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

注※2　hclass：HTML属性のclassです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

注※3　hid：HTML属性のidです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

uu:frame

機能

frame要素のsrcおよびlongdesc属性をURL変換します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:frame src="url" longdesc="url" ... />

対応する言語

HTML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
src | uCosminexus Portal Frameworkを経由してコンテンツを出力するように変換します。 | 任意 | ○
longdesc | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
frameborder | HTML4.01の仕様に従います。 | 任意 | ○
hclass※1 | HTML4.01の仕様に従います。 | 任意 | ×
hid※2 | HTML4.01の仕様に従います。 | 任意 | ×
marginheight | HTML4.01の仕様に従います。 | 任意 | ○
marginwidth | HTML4.01の仕様に従います。 | 任意 | ○
name | HTML4.01の仕様に従います。 | 任意 | ○
noresize | HTML4.01の仕様に従います。 | 任意 | ○
scrolling | HTML4.01の仕様に従います。 | 任意 | ○
style | HTML4.01の仕様に従います。 | 任意 | ×
target | HTML4.01の仕様に従います。 | 任意 | ○
title | HTML4.01の仕様に従います。 | 任意 | ×

（凡例）

○：JSPスクリプトレット式で評価されます。

×：JSPスクリプトレット式で評価されません。

注※1　hclass：HTML属性のclassです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

注※2　hid：HTML属性のidです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

uu:iframe

機能

iframe要素のsrc属性およびlongdesc属性をURL変換します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:iframe src="url" longdesc="url" ...>
...
</uu:iframe>

対応する言語

HTML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
src | uCosminexus Portal Frameworkを経由してインラインフレーム内に表示するコンテンツを出力するように変換します。 | 任意 | ○
longdesc | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
align | HTML4.01の仕様に従います。 | 任意 | ○
frameborder | HTML4.01の仕様に従います。 | 任意 | ○
hclass※1 | HTML4.01の仕様に従います。 | 任意 | ×
height | HTML4.01の仕様に従います。 | 任意 | ○
hid※2 | HTML4.01の仕様に従います。 | 任意 | ×
marginheight | HTML4.01の仕様に従います。 | 任意 | ○
marginwidth | HTML4.01の仕様に従います。 | 任意 | ○
name | HTML4.01の仕様に従います。 | 任意 | ○
scrolling | HTML4.01の仕様に従います。 | 任意 | ○
style | HTML4.01の仕様に従います。 | 任意 | ×
title | HTML4.01の仕様に従います。 | 任意 | ×
width | HTML4.01の仕様に従います。 | 任意 | ○

（凡例）

○：JSPスクリプトレット式で評価されます。

×：JSPスクリプトレット式で評価されません。

注※1　hclass：HTML属性のclassです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

注※2　hid：HTML属性のidです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

uu:img

機能

img要素のsrc属性およびlongdesc属性をURL変換します。なお，ismap属性は使用できません。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:img src="url" alt="sample" longdesc="url" ... />

対応する言語

HTML，CHTML，HDML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
src | インラインオブジェクトを直接参照するように変換します。 | 必須 | ○
longdesc | 指定された相対パス形式のURLをポータル画面内に遷移するように変換します。 | 任意 | ○
alt | HTML4.01の仕様に従います。 | 必須 | ○
align | HTML4.01の仕様に従います。 | 任意 | ○
border | HTML4.01の仕様に従います。 | 任意 | ○
hclass※1 | HTML4.01の仕様に従います。 | 任意 | ×
dir | HTML4.01の仕様に従います。 | 任意 | ×
height | HTML4.01の仕様に従います。 | 任意 | ○
hspace | HTML4.01の仕様に従います。 | 任意 | ○
hid※2 | HTML4.01の仕様に従います。 | 任意 | ×
lang | HTML4.01の仕様に従います。 | 任意 | ○
name | HTML4.01の仕様に従います。 | 任意 | ○
onclick | HTML4.01の仕様に従います。 | 任意 | ○
ondblclick | HTML4.01の仕様に従います。 | 任意 | ○
onkeydown | HTML4.01の仕様に従います。 | 任意 | ○
onkeypress | HTML4.01の仕様に従います。 | 任意 | ○
onkeyup | HTML4.01の仕様に従います。 | 任意 | ○
onmousedown | HTML4.01の仕様に従います。 | 任意 | ○
onmousemove | HTML4.01の仕様に従います。 | 任意 | ○
onmouseout | HTML4.01の仕様に従います。 | 任意 | ○
onmouseover | HTML4.01の仕様に従います。 | 任意 | ○
onmouseup | HTML4.01の仕様に従います。 | 任意 | ○
style | HTML4.01の仕様に従います。 | 任意 | ×
title | HTML4.01の仕様に従います。 | 任意 | ×
usemap | HTML4.01の仕様に従います。 | 任意 | ○
vspace | HTML4.01の仕様に従います。 | 任意 | ○
width | HTML4.01の仕様に従います。 | 任意 | ○

（凡例）

○：JSPスクリプトレット式で評価されます。

×：JSPスクリプトレット式で評価されません。

注※1　hclass：HTML属性のclassです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

注※2　hid：HTML属性のidです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

uu:input

機能

input要素のsrc属性をURL変換します。なお，次の属性は使用できません。

checked

disabled

ismap

readonly

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:input src="url" ... />

対応する言語

HTML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
src | インラインオブジェクトを直接参照するように変換します。 | 任意 | ○
accept | HTML4.01の仕様に従います。 | 任意 | ○
accesskey | HTML4.01の仕様に従います。 | 任意 | ×
align | HTML4.01の仕様に従います。 | 任意 | ○
alt | HTML4.01の仕様に従います。 | 任意 | ○
dir | HTML4.01の仕様に従います。 | 任意 | ×
hclass※1 | HTML4.01の仕様に従います。 | 任意 | ×
hid※2 | HTML4.01の仕様に従います。 | 任意 | ×
lang | HTML4.01の仕様に従います。 | 任意 | ○
maxlength | HTML4.01の仕様に従います。 | 任意 | ×
name | HTML4.01の仕様に従います。 | 任意 | ○
onblur | HTML4.01の仕様に従います。 | 任意 | ○
onchange | HTML4.01の仕様に従います。 | 任意 | ○
onclick | HTML4.01の仕様に従います。 | 任意 | ○
ondblclick | HTML4.01の仕様に従います。 | 任意 | ○
onfocus | HTML4.01の仕様に従います。 | 任意 | ○
onkeydown | HTML4.01の仕様に従います。 | 任意 | ○
onkeypress | HTML4.01の仕様に従います。 | 任意 | ○
onkeyup | HTML4.01の仕様に従います。 | 任意 | ○
onmousedown | HTML4.01の仕様に従います。 | 任意 | ○
onmousemove | HTML4.01の仕様に従います。 | 任意 | ○
onmouseout | HTML4.01の仕様に従います。 | 任意 | ○
onmouseover | HTML4.01の仕様に従います。 | 任意 | ○
onmouseup | HTML4.01の仕様に従います。 | 任意 | ○
onselect | HTML4.01の仕様に従います。 | 任意 | ○
size | HTML4.01の仕様に従います。 | 任意 | ○
style | HTML4.01の仕様に従います。 | 任意 | ×
tabindex | HTML4.01の仕様に従います。 | 任意 | ×
title | HTML4.01の仕様に従います。 | 任意 | ×
type | HTML4.01の仕様に従います。 | 任意 | ×
usemap | HTML4.01の仕様に従います。 | 任意 | ○
value | HTML4.01の仕様に従います。 | 任意 | ○

（凡例）

○：JSPスクリプトレット式で評価されます。

×：JSPスクリプトレット式で評価されません。

注※1　hclass：HTML属性のclassです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

注※2　hid：HTML属性のidです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

uu:object

機能

object要素のcodebase属性，classid属性，data属性，およびarchive属性をURL変換します。なお，declare属性は使用できません。

codebase属性が指定された場合

codebase属性だけをURL変換します。

codebase属性が指定されていない場合

classid属性，data属性，archive属性をURL変換します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:object codebase="url" classid="url" data="url" archive="url list">
...
</uu:object>

対応する言語

HTML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
codebase | 指定された相対パス形式のURLを直接参照するように変換します。 | 任意 | ○
archive | codebase属性が指定されなかった場合，指定された相対パス形式のURLを直接参照するように変換します。 | 任意 | ○
classid | codebase属性が指定されなかった場合，指定された相対パス形式のURLを直接参照するように変換します。 | 任意 | ○
data | codebase属性が指定されなかった場合，指定された相対パス形式のURLを直接参照するように変換します。 | 任意 | ○
align | HTML4.01の仕様に従います。 | 任意 | ○
border | HTML4.01の仕様に従います。 | 任意 | ○
codetype | HTML4.01の仕様に従います。 | 任意 | ×
dir | HTML4.01の仕様に従います。 | 任意 | ×
hclass※1 | HTML4.01の仕様に従います。 | 任意 | ×
height | HTML4.01の仕様に従います。 | 任意 | ○
hid※2 | HTML4.01の仕様に従います。 | 任意 | ×
hspace | HTML4.01の仕様に従います。 | 任意 | ○
lang | HTML4.01の仕様に従います。 | 任意 | ○
name | HTML4.01の仕様に従います。 | 任意 | ○
onclick | HTML4.01の仕様に従います。 | 任意 | ○
ondblclick | HTML4.01の仕様に従います。 | 任意 | ○
onkeydown | HTML4.01の仕様に従います。 | 任意 | ○
onkeypress | HTML4.01の仕様に従います。 | 任意 | ○
onkeyup | HTML4.01の仕様に従います。 | 任意 | ○
onmousedown | HTML4.01の仕様に従います。 | 任意 | ○
onmousemove | HTML4.01の仕様に従います。 | 任意 | ○
onmouseout | HTML4.01の仕様に従います。 | 任意 | ○
onmouseover | HTML4.01の仕様に従います。 | 任意 | ○
onmouseup | HTML4.01の仕様に従います。 | 任意 | ○
standby | HTML4.01の仕様に従います。 | 任意 | ×
style | HTML4.01の仕様に従います。 | 任意 | ×
tabindex | HTML4.01の仕様に従います。 | 任意 | ×
title | HTML4.01の仕様に従います。 | 任意 | ×
type | HTML4.01の仕様に従います。 | 任意 | ○
usemap | HTML4.01の仕様に従います。 | 任意 | ○
vspace | HTML4.01の仕様に従います。 | 任意 | ○
width | HTML4.01の仕様に従います。 | 任意 | ○

（凡例）

○：JSPスクリプトレット式で評価されます。

×：JSPスクリプトレット式で評価されません。

注※1　hclass：HTML属性のclassです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

注※2　hid：HTML属性のidです。詳細は「3.4　タグライブラリ使用時の注意」を参照してください。

uu:script

機能

script要素のsrc属性をURL変換します。なお，defer属性は使用できません。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<uu:script type="text/javascript" src="url" ...>
...
</uu:script>

対応する言語

HTML

属性

属性 | 説明 | 必須/任意 | JSPスクリプトレット式評価
src | 指定された相対パス形式のURLを直接参照するように変換します。 | 任意 | ○
type | HTML4.01の仕様に従います。 | 必須 | ○
charset | HTML4.01の仕様に従います。 | 任意 | ×
language | HTML4.01の仕様に従います。 | 任意 | ×

（凡例）

○：JSPスクリプトレット式で評価されます。

×：JSPスクリプトレット式で評価されません。

14.3　ポートレットモードタグライブラリ

ポートレットモードタグライブラリの一覧を次の表に示します。

表14-2　ポートレットモードタグライブラリの一覧

タグ名 | 説明
PortalAC:ModeDeniedList | 画面に表示されていないポートレットで，ポートレットモードの変更が拒否されたポートレットのリストを表示します。
PortalAC:isModeDenied | 画面に表示されていないポートレットで，ポートレットモードの変更が拒否されたポートレットが一つ以上ある場合だけボディを表示します。

＜この節の構成＞

PortalAC:ModeDeniedList

PortalAC:isModeDenied

PortalAC:ModeDeniedList

機能

画面に表示されていないポートレットで，ポートレットモードの変更が拒否されたポートレットのリストを表示します。

注意

このタグライブラリはナビゲーションテンプレートの下部設定JSPファイル（bottom.jsp）だけで使用できます。

構文

<%@ taglib uri='http://soft.hitachi.co.jp/portal/portalac' prefix='PortalAC' %><%@ page contentType="text/html; charset=Shift_JIS" %>
...
<PortalAC:ModeDeniedList separator="," />

対応する言語

HTML，CHTML，HDML

属性

属性 | 説明 | 必須/任意
separator | ポートレット名を区切る文字列。省略時は半角コンマ記号が区切り文字になる。 | 任意

PortalAC:isModeDenied

機能

画面に表示されていないポートレットで，ポートレットモードの変更が拒否されたポートレットが一つ以上ある場合だけボディを表示します。

注意

このタグライブラリは，ナビゲーションテンプレートの下部設定JSPファイル（bottom.jsp）だけで使用できます。

構文

<%@ taglib uri='http://soft.hitachi.co.jp/portal/portalac' prefix='PortalAC' %><%@ page contentType="text/html; charset=Shift_JIS" %>
...
<PortalAC:isModeDenied>画面に表示されていないポートレットモード変更不可ポートレットがあるときだけ表示する内容</PortalAC:isModeDenied>

対応する言語

HTML，CHTML，HDML

14.4　ポートレットユティリティクラスライブラリ

ポートレットユティリティクラスライブラリの一覧を次の表に示します。

表14-3　ポートレットユティリティクラスライブラリの一覧

クラス名 | 説明
jp.co.hitachi.soft.portal.portlet.PortletException | uCosminexus Portal Frameworkで使用するタグライブラリおよびクラスライブラリで発生した例外を格納します。
jp.co.hitachi.soft.portal.portlet.PortletURI | 指定された相対パスを基に，ポートレット URL変換，ポータルURL変換，ドキュメントベースURL変換をします。
jp.co.hitachi.soft.portal.portlet.PortletUtils | 日立APIポートレット用ユティリティクラスです。

＜この節の構成＞

jp.co.hitachi.soft.portal.portlet.PortletException

jp.co.hitachi.soft.portal.portlet.PortletURI

jp.co.hitachi.soft.portal.portlet.PortletUtils

jp.co.hitachi.soft.portal.portlet.PortletException

機能

uCosminexus Portal Frameworkで使用するタグライブラリおよびクラスライブラリで発生した例外を格納します。日立APIポートレットの開発者は，通常はこのクラスのインスタンスを作成する必要はありません。

コンストラクタの説明

PortletException〔詳細メッセージなし〕

形式

public PortletException()

機能

詳細メッセージを指定しないでPortletExceptionを生成します。

PortletException〔詳細メッセージ指定〕

形式

public PortletException(String msg)

機能

指定された詳細メッセージを持つPortletExceptionを生成します。

パラメタ

msg - 詳細メッセージ

jp.co.hitachi.soft.portal.portlet.PortletURI

機能

ポートレット URL変換，ポータルURL変換，およびドキュメントベースURL変換をします。

URL変換種別，変換対象および変換内容を次の表に示します。

表14-4　URLの変換種別，変換対象および変換内容

URL変換種別
変換対象
変換内容

ポートレットURL変換

相対パス形式
例：index.jsp

統合アダプタを経由してポータル画面内に遷移するように，URL変換をします。必要に応じてHttpServletResponse#encodeURLを呼び出して，URLRewritingをします。

ドキュメントベースURL変換

相対パス形式
例：index.jsp

指定されたURLをWebサーバから直接参照するようにURL変換をします。なお，URLRewritingはしません。

ポータルURL変換

相対パス形式
例：index.jsp

ポータルを経由してコンテンツを取得するようにURL変換をします。統合アダプタは経由しません。

無変換

絶対URL形式
例：http://server/portal/sample/index.jsp

ホスト内絶対パス形式
例：/portlets/sample/index.jsp

URL変換をしません。

注意

本クラスを使用して取得したURLをポートレットユーティリティタグライブラリのURL指定属性に指定すると，一度変換されたURLに対して再度URL変換が行われるため，変換後のURLが不正となる場合があります。

コンストラクタの説明

PortletURI

形式

public PortletURI(ServletRequest req,
                ServletResponse res)

機能

PortletURIオブジェクトを生成します。

パラメタ

req - 日立APIポートレットに渡されたServletRequestオブジェクト

res - 日立APIポートレットに渡されたServletResponseオブジェクト

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
static String | getRestoreURI(ServletRequest req, ServletResponse res) | ポートレット編集状態から復元するURLを取得するstaticメソッドです。
String | getRestoreURI() | ポートレット編集状態から復元するURLを取得します。
static String | lookupURI(ServletRequest req, ServletResponse res, String portletname, PortletInfoBean.Mode mode, String parameter) | ポートレットを呼び出すURLを取得するstaticメソッドです。
String | lookupURI(String portletname, PortletInfoBean.Mode mode, String parameter) | ポートレットを呼び出すURLを取得します。
static String | transInlineURI(ServletRequest req,ServletResponse res,String org_uri) | ドキュメントベースURL変換をするstaticメソッドです。
String | transInlineURI(String org_uri) | ドキュメントベースURL変換をします。
static String | transInlineURIEx(ServletRequest req,ServletResponse res,String org_uri) | ドキュメントベースURL変換をするstaticメソッドです。
String | transInlineURIEx(String org_uri) | ドキュメントベースURL変換をします。
static String | transPortalURI(ServletRequest req,ServletResponse res, String org_uri) | ポータルURL変換をするstaticメソッドです。
String | transPortalURI(String org_uri) | ポータルURL変換をします。
static String | transPortletURI(ServletRequest req, ServletResponse res, String org_uri) | ポートレットURL変換をするstaticメソッドです。
String | transPortletURI(String org_uri) | ポートレットURL変換をします。
static String | transContextURI(ServletRequest req, ServletResponse res, String org_uri) | ポータルサーバのコンテキストルートからのコンテンツを取得するURLに変換をするstaticメソッドです。
String | transContextURI(String org_uri) | ポータルサーバのコンテキストルートからのコンテンツを取得するURLに変換をします。

メソッドの説明

getRestoreURI〔staticメソッド〕

形式

public static String getRestoreURI(ServletRequest req,
                                  ServletResponse res)

機能

ポートレット編集状態から復元するURLを取得します。

通常画面から呼び出された編集画面で呼び出したとき
通常画面に遷移するURLを取得します。

最大化画面から呼び出された編集画面で呼び出したとき
最大化画面に遷移するURLを取得します。

通常画面（最小化表示時）から呼び出された編集画面で呼び出したとき
最大化画面に遷移するURLを取得します。

編集画面以外から呼び出したとき
通常画面に遷移するURLを取得します。

パラメタ

req -日立APIポートレットに渡されたServletRequestオブジェクト

res -日立APIポートレットに渡されたServletResponseオブジェクト

戻り値

生成されたURL（最大2,048文字）

例外

PortletException - 次の場合に発生します。

引数req，resの値が不正な場合

注意事項

このメソッドを使用した場合，表示するJSPファイルを指定できません。そのため，マッピング定義ファイルで指定したJSPファイル（メイン画面）に編集内容を反映する処理を入れる必要があります。

このメソッドは，IFRAMEモード，およびNEWWINDOWモードには対応していません。そのため，これらの画面モードではこのメソッドを呼び出さないようにしてください。

getRestoreURI

形式

public String getRestoreURI()

機能

ポートレット編集状態から復元するURLを取得します。

通常画面から呼び出された編集画面で呼び出したとき
通常画面に遷移するURLを取得します。

最大化画面から呼び出された編集画面で呼び出したとき
最大化画面に遷移するURLを取得します。

通常画面（最小化表示時）から呼び出された編集画面で呼び出したとき
最大化画面に遷移するURLを取得します。

編集画面以外から呼び出したとき
通常画面に遷移するURLを取得します。

パラメタ

なし

戻り値

生成されたURL（最大2,048文字）

例外

PortletException - 次の場合に発生します。

コンストラクタで渡された引数req，resの値が不正な場合

注意事項

このメソッドは，PortletURIクラスのコンストラクタで初期化したあとに使用してください。

このメソッドを使用した場合，表示するJSPファイルを指定できません。そのため，マッピング定義ファイルで指定したJSPファイル（メイン画面）に編集内容を反映する処理を入れる必要があります。

このメソッドは，IFRAMEモード，およびNEWWINDOWモードには対応していません。そのため，これらの画面モードではこのメソッドを呼び出さないようにしてください。

lookupURI〔staticメソッド〕

形式

public static String lookupURI(ServletRequest req,
                              ServletResponse res,
                              String portletname,
                              PortletInfoBean.Mode mode,
                              String parameter)

機能

ポートレットを呼び出すURLを取得します。PortletURIクラスのインスタンス生成後は，次の形式でも利用できます。

public String lookupURI(String portletname,            
                       PortletInfoBean.Mode mode,                        
                       String parameter)

パラメタ

req - 日立APIポートレットに渡されたServletRequestオブジェクト

res -日立APIポートレットに渡されたServletResponseオブジェクト

portletname - 呼び出すポートレットの名称。指定しない場合はnullを設定します。その場合には自ポートレットとみなします。空文字列を指定した場合は，空のポートレットとしてURLを生成するため，クリック時にはエラーとなります。

mode - 呼び出す画面モード。指定できる画面モードを次に示します。

MAXIMIZE

IFRAME

NEWWINDOW

これ以外を指定すると例外が発生します。指定しない場合はnullを設定します。その場合には呼び出し元の画面モードとなります。ただし，呼び出し元の画面モードがDEFAULTの場合はMAXIMIZEになります。呼び出し元とは，このメソッドの実行時のことです。

parameter - 呼び出すポートレットに渡すパラメタ。クエリ文字列で指定します（URLエンコード済みの文字列を指定）。指定できる最大バイト数は1,024バイトです。"?"の付加は不要です。指定しない場合はnullを設定します。

戻り値

生成されたURL（最大2,046文字）

例外

PortletException - 次の場合に発生します。

引数modeの指定に誤りがある場合

引数req，resの値が不正な場合

注意事項

デプロイされていないportletnameを指定した場合，および無効なparameterを指定してもURLは生成されますが，ユーザがURLをクリックした際にエラー画面を表示します。

lookupURI

形式

public String lookupURI(String portletname,
                       PortletInfoBean.Mode mode,
                       String parameter)

機能

ポートレットを呼び出すURLを取得します。PortletURIクラスのコンストラクタで初期化したあとにこのメソッドを利用してください。処理についてはstatic版と同様です。

パラメタ

portletname - 呼び出すポートレットの名称。指定しない場合はnullを設定します。その場合には自ポートレットとみなします。空文字列を指定した場合は，空ポートレットとしてURLを生成するため，クリック時にはエラーとなります。

mode - 呼び出す画面モード。指定できる画面モードを次に示します。

MAXIMIZE

IFRAME

NEWWINDOW

これ以外を指定すると例外が発生します。指定しない場合はnullを設定します。その場合には呼び出し元の画面モードとなります。ただし，呼び出し元の画面モードがDEFAULTの場合はMAXIMIZEになります。呼び出し元とは，このメソッドの実行時のことです。

parameter - 呼び出すポートレットに渡すパラメタ。クエリ文字列で指定します（URLエンコード済みの文字列を指定）。指定できる最大バイト数は1,024バイトです。"?"の付加は不要です。指定しない場合はnullを設定します。

戻り値

生成されたURL（最大2,046文字）

例外

PortletException - 次の場合に発生します。

引数modeの指定に誤りがある場合

transInlineURI〔staticメソッド〕

形式

public static String transInlineURI(ServletRequest req,
                                  ServletResponse res,
                                  String org_uri)

機能

このメソッドは，画像ファイルを指定するとき，およびポータル外に画面遷移するときに使用するURLを生成します。このメソッドで生成されたURLは，ポータルを経由しません。

「3.8.4　ポートレットユティリティクラスライブラリ使用時の画面遷移」に従ってドキュメントベースURL変換をします。

パラメタ

req - 日立APIポートレットに渡されたServletRequestオブジェクト

res - 日立APIポートレットに渡されたServletResponseオブジェクト

org_uri - 変換対象URL

戻り値

変換後URL。このメソッドは，プロパティ「jp.co.hitachi.soft.portal.transurlflag」の設定に関わらず，プロトコルとサーバ名称を含まないURLが返却されます。プロトコルとサーバ名称を含むURLを取得する場合は，transInlineURIExメソッドを使用してください。URL変換規則の詳細については，マニュアル「uCosminexus Portal Framework システム管理者ガイド」を参照してください。

例外

PortletException - reqまたはresが不正な場合

java.net.MalformedURLException - 不正なURLを指定した場合

transInlineURI〔staticではないメソッド〕

形式

public String transInlineURI(String org_uri)

機能

このメソッドは，画像ファイルを指定するとき，およびポータル外に画面遷移するときに使用するURLを生成します。このメソッドで生成されたURLは，ポータルを経由しません。

パラメタ

org_uri - 変換対象URL

戻り値

変換後URL。このメソッドは，プロパティ「jp.co.hitachi.soft.portal.transurlflag」の設定に関わらず，プロトコルとサーバ名称を含まないURLが返却されます。プロトコルとサーバ名称を含むURLを取得する場合は，transInlineURIExメソッドを使用してください。URL変換規則の詳細については，マニュアル「uCosminexus Portal Framework システム管理者ガイド」を参照してください。

例外

PortletException - reqまたはresが不正な場合

java.net.MalformedURLException - 不正なURLを指定した場合

transInlineURIEx〔staticメソッド〕

形式

public static String transInlineURIEx(ServletRequest req,
                                  ServletResponse res,
                                  String org_uri)

機能

このメソッドは，画像ファイルを指定するとき，およびポータル外に画面遷移するときに使用するURLを生成します。このメソッドで生成されたURLは，ポータルを経由しません。

「3.8.4　ポートレットユティリティクラスライブラリ使用時の画面遷移」に従ってドキュメントベースURL変換をします。

パラメタ

req - 日立APIポートレットに渡されたServletRequestオブジェクト

res - 日立APIポートレットに渡されたServletResponseオブジェクト

org_uri - 変換対象URL

戻り値

変換後URL

例外

PortletException - reqまたはresが不正な場合

transInlineURIEx〔staticではないメソッド〕

形式

public String transInlineURIEx(String org_uri)

機能

このメソッドは，画像ファイルを指定するとき，およびポータル外に画面遷移するときに使用するURLを生成します。このメソッドで生成されたURLは，ポータルを経由しません。

「3.8.4　ポートレットユティリティクラスライブラリ使用時の画面遷移」に従ってドキュメントベースURL変換をします。

パラメタ

org_uri - 変換対象URL

戻り値

変換後URL

例外

PortletException - reqまたはresが不正な場合

transPortalURI〔staticメソッド〕

形式

public static String transPortalURI(ServletRequest req,
                                  ServletResponse res,
                                  String org_uri)

機能

「3.8.4　ポートレットユティリティクラスライブラリ使用時の画面遷移」に従ってポータルURL変換をします。

パラメタ

req - 日立APIポートレットに渡されたServletRequestオブジェクト

res - 日立APIポートレットに渡されたServletResponseオブジェクト

org_uri - 変換対象URL

戻り値

変換後URL

例外

PortletException - reqまたはresが不正な場合

transPortalURI〔staticではないメソッド〕

形式

public String transPortalURI(String org_uri)

機能

「3.8.4　ポートレットユティリティクラスライブラリ使用時の画面遷移」に従ってポータルURL変換をします。

パラメタ

org_uri - 変換対象URL

戻り値

変換後URL

例外

PortletException - reqまたはresが不正な場合

transPortletURI〔staticメソッド〕

形式

public static String transPortletURI(ServletRequest req,
                                   ServletResponse res,
                                   String org_uri)

機能

「3.8.4　ポートレットユティリティクラスライブラリ使用時の画面遷移」に従ってポートレットURL変換をします。

パラメタ

req - 日立APIポートレットに渡されたServletRequestオブジェクト

res - 日立APIポートレットに渡されたServletResponseオブジェクト

org_uri - 変換対象URL

戻り値

変換後URL

例外

PortletException - reqまたはresが不正な場合

java.net.MalformedURLException - 不正なURLを指定した場合

transPortletURI〔staticではないメソッド〕

形式

public String transPortletURI(String org_uri)

機能

「3.8.4　ポートレットユティリティクラスライブラリ使用時の画面遷移」に従ってポートレットURL変換をします。

パラメタ

org_uri - 変換対象URL

戻り値

変換後URL

例外

PortletException - reqまたはresが不正な場合

java.net.MalformedURLException - 不正なURLを指定した場合

transContextURI〔staticメソッド〕

形式

public static String transContextURI(ServletRequest req,
                                   ServletResponse res,
                                   String org_uri)

機能

このメソッドは，コンテキストルートからのコンテンツのURLを指定するときに使用するURLを生成します。このメソッドで生成されたURLは，ポータルを経由しません。

パラメタ

req - 日立APIポートレットに渡されたServletRequestオブジェクト

res - 日立APIポートレットに渡されたServletResponseオブジェクト

org_uri - 変換対象URL

戻り値

変換後URL

例外

PortletException - reqまたはorg_uriが不正な場合

transContextURI〔staticではないメソッド〕

形式

public String transContextURI(String org_uri)

機能

このメソッドは，コンテキストルートからのコンテンツのURLを指定するときに使用するURLを生成します。このメソッドで生成されたURLは，ポータルを経由しません。

パラメタ

org_uri - 変換対象URL

戻り値

変換後URL

例外

PortletException - org_uriが不正な場合

jp.co.hitachi.soft.portal.portlet.PortletUtils

機能

日立APIポートレット用ユティリティクラスです。

コンストラクタの説明

PortletUtils

形式

public PortletUtils()

機能

空のPortletUtilsオブジェクトを作成します。通常は作成の必要はありません。

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
static String | getNamespace(ServletRequest req, ServletResponse res) | ポータルでユニークなポートレットネームスペースを取得します。

メソッドの説明

getNamespace

形式

public static String getNamespace(ServletRequest req,
                                  ServletResponse res)

機能

ポータルでユニークなポートレットネームスペースを取得します。

パラメタ

req - 日立APIポートレットに渡されたServletRequestオブジェクト

res - 日立APIポートレットに渡されたServletResponseオブジェクト

戻り値

ポータル内でユニークなネームスペース

例外

PortletException - reqまたはresが不正な場合

14.5　ポートレット情報取得Bean

ポートレット情報取得Beanは，ポートレット固有の情報や画面モード情報を取得するためのAPIです。

ポートレット情報取得Beanの一覧を次の表に示します。

表14-5　ポートレット情報取得Beanの一覧

クラス名 | 説明
jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean | ポートレット固有の情報を取得します。
jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean.Mode | 画面モード情報を示すクラスです。

ポートレット情報取得Beanの詳細を説明します。

＜この節の構成＞

jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean

jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean.Mode

jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean

機能

ポートレット固有の情報を取得します。

Beanの項目

宣言

<jsp:useBean id="configbean"
class="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean"
scope="page"/>

対象スコープ

page

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
String | getDescription() | ポートレットの説明文を取得します。
PortletInfoBean.Mode | getMode() | 現在の画面モードを取得します。
String | getName() | ポートレット名称を取得します。
String | getParameter(String name) | パラメタ設定値を取得します。
String | getTitle() | ポートレットのタイトル文字列を取得します。
void | initBean(ServletRequest req) | Beanを初期化します。
void | initBean(ServletRequest req, String portletName) | 指定したポートレット名称でPortletInfoBeanを初期化します。
void | setCustomizeTitle(String titleString) | 新規ウィンドウのタイトルを，一時的に変更します。

メソッドの説明

getDescription

形式

public String getDescription()

機能

ポートレットの説明文を取得します。

パラメタ

なし

戻り値

ポートレットの説明文

説明文が設定されていない場合，空文字列を戻します。

例外

なし

getMode

形式

public PortletInfoBean.Mode getMode()

機能

現在の画面モードを取得します。

パラメタ

なし

戻り値

現在の画面モード

次のどれかの値を戻します。

戻り値 | モード名称 | 説明
PortletInfoBean.Mode.DEFAULT | 標準モード | 複数ポートレット表示状態
PortletInfoBean.Mode.MAXIMIZE | 最大化モード | 最大化表示状態
PortletInfoBean.Mode.EDIT | 編集モード | 編集画面表示状態
PortletInfoBean.Mode.NEWWINDOW | 新規ウィンドウモード | 新規ウィンドウ表示状態
PortletInfoBean.Mode.IFRAME | インラインモード | インラインフレーム表示状態
PortletInfoBean.Mode.IRREGULAR | 規格外モード | 画面モードが取得できない状態

例外

なし

getName

形式

public String getName()

機能

ポートレット名称を取得します。

パラメタ

なし

戻り値

ポートレット名称

initBean()が呼ばれていない，またはinitBean()に失敗している場合，nullを戻します。

例外

なし

getParameter

形式

public String getParameter(String name)

機能

nameで指定されたパラメタ設定値を取得します。

パラメタ

name - パラメタ名称

戻り値

パラメタ設定値

例外

IllegalArgumentException - 入力パラメタが不正な場合

getTitle

形式

public String getTitle()

機能

ポートレットのタイトル文字列を取得します。

パラメタ

なし

戻り値

ポートレットのタイトル文字列

ポートレットのタイトルが設定されていない場合，"No title set"を戻します。

例外

なし

initBean〔PortletInfoBeanを初期化〕

形式

public void initBean(ServletRequest req)

機能

PortletInfoBeanを初期化します。

パラメタ

req - JSPに渡されたServletRequestオブジェクト

戻り値

なし

例外

IllegalArgumentException - 引数reqがnullまたは不正なオブジェクトである場合

initBean〔指定したポートレット名称でPortletInfoBeanを初期化〕

形式

public void initBean(ServletRequest req,
                    String portletName)

機能

指定したポートレット名称でPortletInfoBeanを初期化します。以降，指定したポートレットの情報を取得します。

パラメタ

req - JSPに渡されたServletRequestオブジェクト

portletName - ポートレット名称。指定できる最大文字数は80文字です。

戻り値

なし

例外

IllegalArgumentException - 次の場合に発生します。

引数reqがnullまたは不正なオブジェクトである場合

引数portletNameがnullの場合

IllegalStateException - 引数portletNameに指定したポートレットがデプロイされていない場合

setCustomizeTitle

形式

public void setCustomoizeTitle(String titleString)

機能

新規ウィンドウのタイトルを，一時的に変更します。

パラメタ

titleString - 新規ウィンドウのタイトルに表示する文字列。指定できる最大文字数は64文字です。

戻り値

なし

例外

IllegalAugumentException - 次の場合に発生します。

引数titleStringがnullの場合

引数titleStringの文字数が64文字を超えた場合

InitializationException - 初期化されていない場合

jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean.Mode

機能

画面モード情報を示すクラスです。

フィールドの説明

フィールド | モード名称
PortletInfoBean.Mode DEFAULT | 標準モード
PortletInfoBean.Mode MAXIMIZE | 最大化モード
PortletInfoBean.Mode EDIT | 編集モード
PortletInfoBean.Mode NEWWINDOW | 新規ウィンドウモード
PortletInfoBean.Mode IFRAME | インラインモード
PortletInfoBean.Mode IRREGULAR | 規格外モード

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
String | toString() | 画面モードの文字列表現を戻します。

メソッドの説明

toString

形式

public String toString()

機能

画面モードの文字列表現を戻します。

パラメタ

なし

戻り値

画面モードの文字列表現

次のどれかの値を戻します。

戻り値 | モード名称
DEFAULT | 標準モード
MAXIMIZE | 最大化モード
EDIT | 編集モード
NEWWINDOW | 新規ウィンドウモード
IFRAME | インラインモード
IRREGULAR | 規格外モード

例外

なし

14.6　ユーザ情報取得Bean

ユーザ情報取得Beanは，リポジトリに格納されているユーザ情報を取得するAPIです。

ユーザ情報取得Beanの一覧を次の表に示します。

表14-6　ユーザ情報取得Beanの一覧

クラス名 | 説明
jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean | リポジトリに格納されているユーザ情報を取得します。

ユーザ情報取得Beanの詳細を説明します。

＜この節の構成＞

jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean

jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean

機能

リポジトリに格納されているユーザ情報を取得します。

Beanの項目

宣言

<jsp:useBean id="user"
class="jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean"
scope="session" />

対象スコープ

session，request

requestは性能が低下するためsessionを推奨します。

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
boolean | checkGroup(String groupName) | ユーザがグループに所属しているかをチェックします。
boolean | checkLoggedIn() | ユーザがログイン済みかをチェックします。
boolean | checkOu(String ouName) | ユーザが組織に所属しているかをチェックします。
boolean | commitData() | LDAPまたはDBにデータを書き込みます。
void | customizeInfoEnd() | 排他区間の終了を設定します。
void | customizeInfoStart() | 排他区間の開始を設定します。区間中では，LDAP/DBへのデータの保存処理は保留されます。
Object | getCustomizeInfo(String appKey) | ポートレットのカスタマイズ情報を取得します。
String[] | getGroupName() | ユーザのグループ名をすべて取得します。
String[] | getOuName() | ユーザの組織単位名をすべて取得します。
Object | getParameter(String column) | ユーザ独自に定義している属性値を戻します。
Object | getUserCustomizeInfo(String appKey) | ユーザのカスタマイズ情報を取得します。
String | getUserId() | ユーザのユーザIDを取得します。
boolean | isAccessible(String portletName) | ポートレットのアクセス権を判定します。
void | removeCustomizeInfo(String appKey) | ポートレットのカスタマイズ情報を削除します。
void | removeUserCustomizeInfo(String appKey) | ユーザのカスタマイズ情報を削除します。
void | setCustomizeInfo(String appKey, Object appData) | ポートレットのカスタマイズ情報を保存します。
void | setRequest(HttpServletRequest req) | リクエストオブジェクトを設定します。必ず最初にこのメソッドを呼び出してください。
void | setUserCustomizeInfo(String appKey, Object appData) | ユーザのカスタマイズ情報を保存します。

メソッドの説明

checkGroup

形式

public boolean checkGroup(String groupName)

機能

ユーザがグループに所属しているかをチェックします。<jsp:getProperty>タグ，および<jsp:setProperty>タグでの操作はできません。

パラメタ

groupName - チェックするグループ名

戻り値

グループに所属しているかどうか

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

checkLoggedIn

形式

public boolean checkLoggedIn()

機能

ユーザがログイン済みかをチェックします。<jsp:getProperty>タグ，<jsp:setProperty>タグでの操作はできません。

パラメタ

なし

戻り値

ログインしているかどうか

例外

なし

checkOu

形式

public boolean checkOu(String ouName)

機能

ユーザが組織に所属しているかをチェックします。<jsp:getProperty>タグ，<jsp:setProperty>タグでの操作はできません。

パラメタ

ouName - チェックする組織単位名

戻り値

組織単位に所属しているかどうか

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

commitData

形式

public boolean commitData()

機能

LDAPまたはDBにデータを書き込みます。

パラメタ

なし

戻り値

true - データ書き込み成功

false - データ書き込み失敗

例外

なし

customizeInfoEnd

形式

public void customizeInfoEnd()

機能

排他区間の終了を設定します。

パラメタ

なし

戻り値

なし

例外

なし

customizeInfoStart

形式

public void customizeInfoStart()

機能

排他区間の開始を設定します。区間中では，LDAP/DBへのデータの保存処理は保留されます。

パラメタ

なし

戻り値

なし

例外

なし

getCustomizeInfo

形式

public Object getCustomizeInfo(String appKey)

機能

ポートレットのカスタマイズ情報を取得します。アプリケーションキーに対応するポートレットのカスタマイズ情報を取得します。指定されたカスタマイズ情報が見つからない場合はnullを戻します。<jsp:getProperty>タグ，<jsp:setProperty>タグでの操作はできません。

パラメタ

appKey - アプリケーションキー

戻り値

カスタマイズ情報

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

注意事項

このメソッドを複数回呼び出すとき（複数のカスタマイズ情報を取得するとき）にエラーが発生した場合は，エラーの発生したカスタマイズ情報だけが取得できません。それ以外のカスタマイズ情報については，正常に取得できます。

getGroupName

形式

public String[] getGroupName()

機能

ユーザのグループ名をすべて取得します。ユーザのグループ名が見つからないときはnullを戻します。

パラメタ

なし

戻り値

ユーザのグループ名

例外

なし

getOuName

形式

public String[] getOuName()

機能

ユーザの組織単位名をすべて取得します。ユーザの組織単位名が見つからないときはnullを戻します。

パラメタ

なし

戻り値

ユーザの組織単位名

例外

なし

getParameter

形式

public Object getParameter(String column)

機能

ユーザ独自に定義している属性値を戻します。multivalueの場合はEnumeration型で戻します。singlevalueの場合はObject型で戻します。指定した属性値が見つからない場合はnullを戻します。<jsp:getProperty>タグ，および<jsp:setProperty>タグでの操作はできません。

パラメタには，リポジトリファイルのマッピング情報の共通項目名（dest）を指定します。getParameterを用いて属性値を取得するには，リポジトリファイルにディレクトリ情報の属性と共通項目名を設定する必要があります。設定方法については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「リポジトリファイル（Repository.xml）」の説明を参照してください。

パラメタ

column - リポジトリファイルの共通項目名（dest）

戻り値

ディレクトリサーバ上の属性値

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

getUserCustomizeInfo

形式

public Object getUserCustomizeInfo(String appKey)

機能

ユーザのカスタマイズ情報を取得します。アプリケーションキーに対応するユーザのカスタマイズ情報を取得します。指定されたカスタマイズ情報が見つからない場合はnullを返却します。<jsp:getProperty>タグ，および<jsp:setProperty>タグでの操作はできません。

ログインしていない場合，nullを戻します。

パラメタ

appKey - アプリケーションキー（null以外）

戻り値

カスタマイズ情報（シリアライズできる値）

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

注意事項

このメソッドを複数回呼び出すとき（複数のカスタマイズ情報を取得するとき）にエラーが発生した場合は，エラーの発生したカスタマイズ情報だけが取得できません。それ以外のカスタマイズ情報については，正常に取得できます。

getUserId

形式

public String getUserId()

機能

ユーザのユーザIDを取得します。このAPIで取得できるユーザIDは，ユーザ情報のマッピング項目のユーザIDで指定した属性の値です。

ユーザのユーザIDが見つからないときはnullを戻します。

パラメタ

なし

戻り値

ユーザのユーザID

例外

なし

isAccessible

形式

public boolean isAccessible(String portletName)

機能

PortalUserInfoBeanに結び付けられたユーザ（対象ユーザ）が，引数portletNameに指定したポートレット（対象ポートレット）に対してアクセス権があるかどうかを判定します。

なお，対象ユーザがログインしていない状態でこのメソッドを呼び出した場合（ウェルカム画面に配置されたポートレットからこのメソッドを呼び出すなど），対象ユーザを匿名のユーザとみなしてアクセス権を判定します。このとき，ウェルカム画面に対象ポートレットが配置されているかどうか（デプロイされているかどうか）も判定します。

「アクセス権がある」とは，複数ポートレットが表示されている状態で対象ポートレットを表示できること，および対象ポートレットを最大化状態で表示できることを示します。

アクセス権は，対象ポートレットがデプロイされているかどうか，および対象ユーザが対象ポートレットに対してアクセス権があるかどうかの組み合わせにより次のように決定されます。

対象ポートレットのデプロイ状況 | 対象ユーザの対象ポートレットへのアクセス権 | このメソッドの戻り値
未デプロイ | あり | false
なし
デプロイ済み | あり | true
なし | false

利用手順

HTTPリクエストを受信してからこのメソッドを使用するまでの間にsetRequestメソッドでPortalUserInfoBeanを初期化します。

このメソッドを呼び出します。

パラメタ

portletName - アクセス権を判定するポートレットの名称（null以外）。指定できる最大文字数は，標準APIポートレットの場合は64文字，標準APIポートレット以外の場合は32文字です。

戻り値

true - パラメタに指定したポートレットにアクセス権がある

false - パラメタに指定したポートレットにアクセス権がない

例外

IllegalArgumentException - 次の場合に発生します。

引数portletNameにnullを指定した場合

引数portletNameに空文字列を指定した場合

引数portletNameに33文字以上の文字数を指定した場合（標準APIポートレットの場合は65文字以上の文字数を指定した場合）

IllegalStateException - setRequestメソッドで初期化する前にこのメソッドが呼ばれたとき

注意事項

このメソッドを使用してアクセス権を判定する場合，ページスコープまたはリクエストスコープ（推奨）でキャッシュしてください。

isAccessibleメソッドの結果は，ページまたはリクエストの開始時点でboolean型の変数に格納され，アプリケーションは，その変数の値を用いてアクセス権を判断します。そのため，複数リクエストにわたってキャッシュしないでください。複数リクエストにわたってキャッシュすると，不正な情報を表示するおそれがあります。

この注意事項には，次に示す理由があります。

呼び出しオーバヘッドは無視できない
boolean型の変数参照とpublicメソッドの呼び出しでは，実行速度が数倍異なるため，オーバヘッドは無視できません。

計算量
単体コストは，（コミュニティ数）×（コミュニティ単位の平均所属ポートレット数）に比例します。計算量は，O(n)です。したがって，コミュニティ数がおおむね2,000を超える環境でこのメソッドを頻繁に呼び出すと，性能に影響を及ぼします。
このメソッドを呼び出す回数の目安を次に示します。
　　推奨値：リクエスト内で１回／調査対象ポートレット　以内
　　最大値：リクエスト内で５回／調査対象ポートレット　以内

removeCustomizeInfo

形式

public void removeCustomizeInfo(String appKey)

機能

アプリケーションキーに対応するポートレットのカスタマイズ情報を削除します。

パラメタ

appKey - アプリケーションキー

戻り値

なし

例外

IllegalArgumentException - 引数が不正またはnullの場合

removeUserCustomizeInfo

形式

public void removeUserCustomizeInfo(String appKey)

機能

アプリケーションキーに対応するユーザのカスタマイズ情報を削除します。<jsp:getProperty>タグ，および<jsp:setProperty>タグでの操作はできません。

ログインしていない場合，何もしません。

パラメタ

appKey - アプリケーションキー（null以外）

戻り値

なし

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

setCustomizeInfo

形式

public void setCustomizeInfo(String appKey,
                           Object appData)

機能

アプリケーションキーに対応するポートレットのカスタマイズ情報をセットします。<jsp:getProperty>タグ，および<jsp:setProperty>タグでの操作はできません。ログインしていないときは何もしません。

パラメタ

appKey - アプリケーションキー

appData - カスタマイズ情報（シリアライズできる値）

戻り値

なし

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

setRequest

形式

public void setRequest(HttpServletRequest req)

機能

リクエストオブジェクトを設定します。PortalUserInfoBeanを使用する場合，必ず最初にこのメソッドを呼び出してください。リクエストの2回目以降は呼び出す必要はありません。ただし，2回目以降は正しいリクエストオブジェクトを設定してください。

パラメタ

req - イベント処理に渡されたリクエストオブジェクト

戻り値

なし

例外

IllegalStateException - 引数が不正またはnullの場合

setUserCustomizeInfo

形式

public void setUserCustomizeInfo(String appKey,
                               Object appData)

機能

アプリケーションキーに対応するユーザのカスタマイズ情報を保存します。<jsp:getProperty>タグ，および<jsp:setProperty>タグでの操作はできません。

ログインしていない場合，何もしません。

ユーザ単位に情報を保存するため，ポートレット間でデータを受け渡せますが，ポートレットごとにアプリケーションキーが衝突しないように注意する必要があります。また，"hptl"で始まるキー名は予約されています。

パラメタ

appKey - アプリケーションキー（null以外）

appData - カスタマイズ情報（シリアライズできる値）

戻り値

なし

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

14.7　ログ出力Bean

ログ出力Beanは，ポートレットからログを出力するためのAPIです。

ログ出力Beanの一覧を次の表に示します。

表14-7　ログ出力Beanの一覧

クラス名 | 説明
jp.co.hitachi.soft.portal.api.log.PortletLog | ポートレットからログを出力します。

ポートレットログの出力レベルによって，出力されるログの種類が異なります。そのため，ログ出力Beanのメソッドは，次の方針に従って使用します。方針に従わない場合，必要なログが得られない，または大量のログが出力され性能が著しく低下するおそれがあるので注意してください。

ログ出力Beanのメソッドと出力するログ内容を次の表に示します。

表14-8　ログ出力Beanのメソッドと出力するログ内容

使用するメソッド | 出力レベル | 内容
error，printStackTrace | 0 | ポートレットの起動・終了のメッセージ，および業務に支障があるエラーメッセージを出力します。トランジェントオブジェクトの起動や終了のメッセージはこのレベルでは出力しません。
warn | 10 | 主要なリクエストをトレースし，システムの大まかな動きが把握できるレベルのログを出力します。発生頻度の低い障害の再発監視や本番前の現地テストへの適用を想定しています。トレースの出力量をシステムの性能に影響を与えない範囲に抑える必要があります。
note | 20 | 再現性のある障害に対し，障害の部位を明確に分類するために使用します。ほかのプロセスとの通信など，ほかのプログラムとの関連を把握するのに十分な情報，およびプログラムの大体の動作を把握できるトレース情報を出力します。
debug | 30 | 障害の個所を特定するために使用します。主要なメンバ関数の開始や終了が取得およびトレースできる内容を出力する必要があります。

ログ出力Beanの詳細を説明します。

＜この節の構成＞

jp.co.hitachi.soft.portal.api.log.PortletLog

jp.co.hitachi.soft.portal.api.log.PortletLog

機能

ポートレットからログを出力します。

Beanの項目

宣言

<jsp:useBean id="Log"
class="jp.co.hitachi.soft.portal.api.log.PortletLog" scope="session" />

対象スコープ

session，request

requestは性能が低下するためsessionを推奨します。

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
void | debug(Object obj) | デバッグログを出力します。
void | error(Object obj) | エラーログを出力します。
void | error(Object obj, Throwable t) | エラーログおよびスタックトレースを出力します。
void | note(Object obj) | 情報ログを出力します。
void | printStackTrace(Throwable t) | スタックトレースを出力します。
void | setApplication(String appName) | アプリケーション名を設定します。必ず最初にこのメソッドを呼び出してください。
void | warn(Object obj) | 警告ログを出力します。
void | warn(Object obj, Throwable t) | 警告ログおよびスタックトレースを出力します。

メソッドの説明

debug

形式

public void debug(Object obj)

機能

ログに対してデバッグログとしてobj.toString()の結果を出力します。このメソッドを呼び出す前に，setApplication()メソッドを呼び出す必要があります。setApplication()メソッドを呼び出す前にこのメソッドを呼び出すと，このメソッドは何もしないで戻ります。

ログの出力条件を次に示します。

メッセージID：KDPF99990-I

ログ出力レベルが30のときに出力

種別：なし

パラメタ

obj - ログに出力する内容

戻り値

なし

例外

なし

error〔obj.toString()の結果をエラーログとして出力〕

形式

public void error(Object obj)

機能

ログに対してエラーログとして，obj.toString()の結果を出力します。このメソッドを呼び出す前に，setApplication()メソッドを呼び出す必要があります。setApplication()メソッドを呼び出す前にこのメソッドを呼び出すと，このメソッドは何もしないで戻ります。

ログの出力条件を次に示します。

メッセージID：KDPF99993-E

ログ出力レベルが0のときに出力

種別：常に"ER"

パラメタ

obj - ログに出力する内容

戻り値

なし

例外

なし

error〔String.valueOf(obj)の結果をエラーログとして出力〕

形式

public void error(Object obj,
                Throwable t)

機能

ログに対してエラーログとしてString.valueOf(obj)の結果を出力し，その次の行にスタックトレースを出力します。ただし，tがnullの場合はスタックトレースを出力しません。このメソッドを呼び出す前に，setApplication()メソッドを呼び出す必要があります。setApplication()メソッドを呼び出す前にこのメソッドを呼び出すと，このメソッドは何もしないで戻ります。

ログの出力条件を次に示します。

メッセージID：KDPF99993-E

ログ出力レベルが0のときに出力

種別：常に"ER"

パラメタ

obj - ログに出力する内容

t - 警告を出力するきっかけとなったThrowable

戻り値

なし

例外

なし

note

形式

public void note(Object obj)

機能

ログに対して情報ログとしてobj.toString()の結果を出力します。このメソッドを呼び出す前に，setApplication()メソッドを呼び出す必要があります。setApplication()メソッドを呼び出す前にこのメソッドを呼び出すと，このメソッドは何もしないで戻ります。

ログの出力条件を次に示します。

メッセージID：KDPF99991-I

ログ出力レベルが20のときに出力

種別：なし"

パラメタ

obj - ログに出力する内容

戻り値

なし

例外

なし

printStackTrace

形式

public void printStackTrace(Throwable t)

機能

ログに対してデバッグログとしてスタックトレースを出力します。ただし，tがnullの場合は何もしません。このメソッドを呼び出す前に，setApplication()メソッドを呼び出す必要があります。setApplication()メソッドを呼び出す前にこのメソッドを呼び出すと，このメソッドは何もしないで戻ります。

ログの出力条件を次に示します。

メッセージID：KDPF99990-I

ログ出力レベルが30のときに出力

種別：なし

パラメタ

t - 警告を出力するきっかけとなったThrowable

戻り値

なし

例外

なし

setApplication

形式

public void setApplication(String appName)

機能

ログ出力Beanのアプリケーション名を設定します。このアプリケーション名は，ログ中のアプリケーション名の文字列として表示されます。appNameがnullまたは英数字以外を含む場合，アプリケーション名は設定されません。このとき，setApplication()メソッド後に呼ばれたログ出力メソッドについても何も行われません。このメソッドはインスタンスに対して1回だけ有効で，2回目以降は何もしないで戻ります。

パラメタ

appName - アプリケーション名（NULL以外の英数字）

戻り値

なし

例外

IllegalArgumentException - appNameに英数字以外が渡された場合：詳細メッセージは" There is an illegal letter in appName."

IllegalArgumentException - appNameがnullの場合：詳細メッセージは"appName is null."

warn〔obj.toString()の結果を警告ログとして出力〕

形式

public void warn(Object obj)

機能

ログに対して警告ログとして，obj.toString()の結果を出力します。このメソッドを呼び出す前に，setApplication()メソッドを呼び出す必要があります。setApplication()を呼び出す前にこのメソッドを呼び出すと，このメソッドは何もしないで戻ります。

ログの出力条件を次に示します。

メッセージID：KDPF99992-W

ログ出力レベルが10のときに出力

種別：なし

パラメタ

obj - ログに出力する内容

戻り値

なし

例外

なし

warn〔String.valueOf(obj)の結果を警告ログとして出力し，次の行にスタックトレースを出力〕

形式

public void warn(Object obj,
                Throwable t)

機能

ログに対してString.valueOf(obj)の結果を出力し，その次の行にスタックトレースを出力します。ただし，tがnullの場合はスタックトレースを出力しません。このメソッドを呼び出す前に，setApplication()メソッドを呼び出す必要があります。setApplication()を呼び出す前にこのメソッドを呼び出すと，このメソッドは何もしないで戻ります。

ログの出力条件を次に示します。

メッセージID：KDPF99992-W

ログ出力レベルが10のときに出力

種別：tがnull以外の場合は"EC"，tがnullの場合はなし

パラメタ

obj - ログに出力する内容

t - 警告を出力するきっかけとなったThrowable

戻り値

なし

例外

なし

14.8　UserAgent情報取得Bean

UserAgent情報取得Beanは，現在アクセスしているクライアントに対して，クライアント情報定義ファイルで設定されているUserAgentTypeを取得するためのAPIです。ポートレットユティリティタグライブラリにある<ut:convert>内のxslt属性で，UserAgentType属性によってXSLTスタイルシートを変換するときに使用します。

UserAgent情報取得Beanの一覧を次の表に示します。

表14-9　UserAgent情報取得Beanの一覧

クラス名 | 説明
jp.co.hitachi.soft.portal.portlet.beans.UserAgentInfoBean | UserAgentTypeの情報を取得します。

UserAgent情報取得Beanの詳細を説明します。

＜この節の構成＞

jp.co.hitachi.soft.portal.portlet.beans.UserAgentInfoBean

jp.co.hitachi.soft.portal.portlet.beans.UserAgentInfoBean

機能

UserAgentTypeの情報を取得します。

Beanの項目

宣言

<jsp:useBean id="useragentinfobean"
class="jp.co.hitachi.soft.portal.portlet.beans.UserAgentInfoBean"
scope="session"/>

対象スコープ

session

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
String | getUserAgentGroup() | UsarAgentTypeの値を取得します。
void | initBean(ServletRequest req) | Beanを初期化します。

メソッドの説明

getUserAgentGroup

形式

public String getUserAgentGroup()

機能

現在のクライアントで設定されているuseragentTypeオブジェクトの値を取得します。

パラメタ

なし

戻り値

現在のクライアントのuseragentType値

useragentTypeに値がない場合は，nullを戻します。

例外

なし

initBean

形式

public void initBean(ServletRequest req)

機能

UserAgentTypeの値を取得するBeanを使用する前に初期化します。UserAgentInfoBeanを使用する場合は，必ずこのメソッドで初期化します。

パラメタ

req - 日立APIポートレットに渡されたServletRequestオブジェクト

戻り値

なし

例外

IllegalArgumentException - 引数reqがnullまたは不正なオブジェクトである場合

14.9　ポートレットイベントAPI

ポートレットイベントAPIは，アクションイベント機能が提供するAPIです。

ポートレットイベントAPIの一覧を次の表に示します。

表14-10　ポートレットイベントAPIの一覧

クラス名 | 説明
jp.co.hitachi.soft.portal.portlet.api.DefaultActionModule | ポートレット間通信機能を提供するクラスです。

ポートレットイベントAPIの詳細を説明します。

＜この節の構成＞

jp.co.hitachi.soft.portal.portlet.api.DefaultActionModule

jp.co.hitachi.soft.portal.portlet.api.DefaultActionModule

機能

ポートレット間通信機能を提供するクラスです。

使用方法

必要に応じて次に示すメソッドをオーバーライドしてください。

actionメソッド
ポートレットアクションイベント発生時に呼び出されます。
利用者からuCosminexus Portal Frameworkに対して要求が発生したとき，そのポートレットが画面上に表示されていれば呼び出されます。

receiveメソッド
ポートレット間通信イベント発生時に呼び出されます。
あるポートレットのアクションモジュール内から，このポートレットを対象としてsendメソッドが呼び出された場合に，このreceiveメソッドが呼び出されます。

なお，次の場合は，後述のデフォルトアクションモジュールの動作をします。

イベント（メソッド）を定義しなかった場合

アクションモジュールが存在しない場合

アクションモジュールは，ポートレット単位で指定できます。

注意事項

uCosminexus Portal Frameworkはアクションモジュールごとにインスタンスを保持します。
したがって，アクションモジュールでインスタンス変数を定義しても，それらはstatic変数のように共有化されています。

アクションモジュールは利用者要求（リクエスト）単位のシングルスレッドで実行されます。
イベント内で処理負荷が掛かる記述をすると，uCosminexus Portal Framework全体の性能を低下させるおそれがあるので注意してください。
ただし，ポートレット並列表示機能使用時は，ポートレットごとに並列動作ができます。ポートレット並列表示機能については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ポートレット並列表示」の説明を参照してください。

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
void | action(HttpServletRequest req, HttpServletResponse res) | ポートレットアクションイベント処理（推奨）
void | action(HttpServletRequest req) | ポートレットアクションイベント処理（非推奨）
final java.lang.Object | getMessage(javax.servlet.http.HttpServletRequest request) | ポートレット間通信イベントの場合に通信元が設定したメッセージを取得します。
final jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean | getPortletInfo(javax.servlet.http.HttpServletRequest request,java.lang.String beanid) | ポートレット情報取得Bean取得メソッド
final jp.co.hitachi.soft.portal.api.log.PortletLog | getPortletLog(javax.servlet.http.HttpServletRequest request,java.lang.String beanid) | ポートレットログ出力Bean取得メソッド
final java.lang.String | getPortletName(javax.servlet.http.HttpServletRequest request) | 処理中のポートレット名称を取得します。
final java.lang.String | getSrcPortletName(javax.servlet.http.HttpServletRequest request) | ポートレット間通信イベントの場合に通信元のポートレット名称を取得します。
final jp.co.hitachi.soft.portal.portlet.beans.UserAgentInfoBean | getUserAgentInfoBean(javax.servlet.http.HttpServletRequest request,java.lang.String beanid) | UserAgent情報取得Bean取得メソッド
final jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean | getUserInfo(javax.servlet.http.HttpServletRequest request,java.lang.String beanid) | ユーザ情報取得Bean取得メソッド
void | receive(HttpServletRequest req, HttpServletResponse res) | ポートレット間通信イベント処理（推奨）
void | receive(HttpServletRequest req) | ポートレット間通信イベント処理（非推奨）
final void | send(javax.servlet.http.HttpServletRequest request,java.lang.String portletName,java.lang.Object message) | ポートレット間通信をしたい場合にメッセージを送信します。

メソッドの説明

action〔使用を推奨するメソッド〕

形式

public void action(HttpServletRequest request,          
HttpServletResponse response)

機能

Webブラウザからフォームデータを入力した，アンカーをクリックしたなどの利用者要求が発生した場合に呼び出されます。

ただし，そのポートレットが画面上に表示されている場合だけです。

利用方法

利用者要求が発生した場合で，何らかの処理が必要なときはこのメソッドをオーバーライドしてください。

利用手順

どのポートレットに対して要求があったのかをチェックします。
getPortletName()
注　この処理は推奨しません。ポートレットを判断しなくてもよい処理にしてください。

インタフェースの内容を参照して処理を実行します。
request.getAttribute(key)の内容

インタフェースを設定します。
Webブラウザからの要求を取得する場合
次のパラメタ取得メソッドを使用します。
getParameter(String)，getParameterMap()，getParameterNames()，getParameterValues(String)
ほかのポートレットのインタフェースを設定する場合
sendメソッドにメッセージを設定します。
相手側ポートレットは，receiveメソッドで受信します。
JSPやサーブレットに対してインタフェースを設定する場合
次の値を利用します。
[リクエスト]に設定
　request.setAttribute(key, value)
[セッション]に設定
　request.getSession().setAttribute(key, value)
なお，request.setAttribute(key, value)した結果は，各ポートレットに独立して引き渡されます。
例えば，ポートレットAのポートレットアクションモジュールで，request.setAttribute("test", "a")と設定したあと，ポートレットBのポートレットアクションモジュールで，request.setAttribute("test", "b")と設定したとします。各ポートレットのJSPやサーブレットに対してポートレットAには，request.getAttribute("test")で，"a"を返します。そして，ポートレットBには，request.getAttribute("test")で，"b"を返します。
なお，そのほかのポートレット（例えば，ポートレットCなど）には，最後に設定したポートレットの情報である"b"が返されます。したがって，全ポートレット共通にパラメタを持つ場合には，一意となるようなパラメタ名称を設定してください。

特定のポートレットに対して処理を依頼したり，状態変化を通知したい場合，次の処理を実行します。

このメソッド内で通知先ポートレットと，メッセージ内容を決定してsendメソッドを呼び出します。

パラメタ

request - イベント処理に渡されたリクエストオブジェクト

response - イベント処理に渡されたレスポンスオブジェクト

戻り値

なし

例外

なし

注意事項

responseに何らかの操作を行っても無視されます。

responseパラメタのgetOutpuStream()メソッドまたはgetWriter()メソッドを呼び出した場合，JSP（ポートレット）側に制御を渡す処理でjava.lang.IllegalStateExceptionが発生する場合があります。

action〔使用を推奨しないメソッド〕

形式

public void action(HttpServletRequest req)

機能

旧バージョンとの互換のためのメソッドです。そのため，このメソッドを使用することは，推奨しません。

パラメタ

req - イベント処理に渡されたリクエストオブジェクト

戻り値

なし

例外

java.lang.IllegalArgumentException - requestがnullの場合

ログにエラー情報が出力されますので確認してください。

getMessage

形式

public final java.lang.Object getMessage(javax.servlet.http.HttpServletRequest request)

機能

ポートレット間通信イベントの場合，通信元が設定したメッセージを取得します。receiveメソッドが呼ばれた場合に使用してください。

パラメタ

request - イベント処理に渡されたリクエストオブジェクト

戻り値

通信元のメッセージ内容

メッセージが設定されていない場合はnullを返します。

例外

java.lang.IllegalArgumentException - requestがnullの場合

getPortletInfo

形式

public final jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean
       getPortletInfo(javax.servlet.http.HttpServletRequest request,
                        java.lang.String beanid)

機能

ポートレット情報取得Bean取得メソッド

ポートレットの情報を取得するためのAPIオブジェクトを取得します。

ポートレットのパラメタを取得したい場合は，ポートレット定義ファイル(jetspeed-config.jcfg)またはPortal Managerで設定します。

そのほかに，ポートレットのタイトル，説明文を取得できます。

パラメタ

request - イベント処理に渡されたリクエストオブジェクト

beanid - JSPなどで定義しているbean名称を指定してください。

JSPファイルのjsp:useBeanアクションで指定するscope属性は，pageでなければなりません。

ポートレット情報取得Beanオブジェクトが存在しない場合は，新たに生成します。

新たにbeanを生成した場合，その情報はpageに保持されます。

戻り値

PortletInfoBean ポートレット情報取得Beanオブジェクト（nullでは返却されません）

例外

java.lang.IllegalArgumentException - 次の場合に発生します。

uCosminexus Portal Frameworkが状態不正を検出した場合

引数のrequestまたはbeanidがnullの場合

ログにエラー情報が出力されますので確認してください。

getPortletLog

形式

public final jp.co.hitachi.soft.portal.api.log.PortletLog
      getPortletLog(javax.servlet.http.HttpServletRequest request,
                       java.lang.String beanid)

機能

ポートレットログ出力Bean取得メソッド

ポートレット単位でログをファイルに出力するための情報が取得できます。

利用方法

jp.co.hitachi.soft.portal.api.log.PortletLogパッケージをインポートしてください。

actionおよびreceiveメソッド内で，getPortletLogメソッドを呼び出すことによって，ポートレットログ出力Beanオブジェクトを取得できます。

ログ出力Beanのメソッドを利用して，目的の情報にアクセスしてください。
ログ出力Beanのメソッドについては，「14.7　ログ出力Bean」を参照してください。

パラメタ

request - イベント処理に渡されたリクエストオブジェクト

beanid - JSP等で定義しているbean名称を指定してください。

JSPファイルのjsp:useBeanアクションで指定するscope属性は，sessionまたはrequestでなければなりません。

sessionとrequest双方に，指定したbeanidが設定されている場合はsessionを優先的に利用します。

sessionにポートレットログ出力Beanでないオブジェクトが設定されていて，requestにポートレットログ出力Beanが設定されている場合は，requestに設定されているポートレットログ出力Beanを取得します。

sessionとrequest双方に存在しない場合は，ポートレットログ出力Beanオブジェクトを保持しません。

戻り値

PortletLog ポートレットログ出力Beanオブジェクト（nullでは返却されません）

例外

java.lang.IllegalArgumentException - 次の場合発生します。

引数のbeanidまたはrequestがnullの場合

ログにエラー情報が出力されますので確認してください。

getPortletName

形式

public final java.lang.String getPortletName(javax.servlet.http.HttpServletRequest request)

機能

処理中のポートレット名称を取得します。actionまたはreceiveメソッドが呼ばれた場合に使用してください。

パラメタ

request - イベント処理に渡されたリクエストオブジェクト

戻り値

処理中のポートレット名称

例外

java.lang.IllegalArgumentException - requestがnullの場合

getSrcPortletName

形式

public final java.lang.String getSrcPortletName(javax.servlet.http.HttpServletRequest request)

機能

ポートレット間通信イベントの場合，通信元のポートレット名称を取得します。receiveメソッドが呼ばれた場合に使用してください。

パラメタ

request - イベント処理に渡されたリクエストオブジェクト

戻り値

通信元のポートレット名称

例外

java.lang.IllegalArgumentException - requestがnullの場合

getUserAgentInfoBean

形式

public final jp.co.hitachi.soft.portal.portlet.beans.UserAgentInfoBean
getUserAgentInfoBean(javax.servlet.http.HttpServletRequest request,
                         java.lang.String beanid)

機能

UserAgent情報取得Bean取得メソッド

要求されたリクエストに関して，ユーザエージェントを判定します。

クライアント情報定義ファイル（UserAgentType.xml）で定義しているuseragentTypeを取得できます。

利用方法

jp.co.hitachi.soft.portal.portlet.beans.UserAgentInfoBeanパッケージをインポートしてください。

actionおよびreceiveメソッド内で，getUserAgentInfoBeanメソッドを呼び出すことによって，UserAgent情報取得Beanオブジェクトを取得できます。
Bean初期化のためのinitBeanメソッドを明示的に呼び出す必要はありません。

UserAgent情報取得Beanのメソッドを利用して，目的の情報にアクセスしてください。
UserAgent情報取得Beanのメソッドについては，「14.8　UserAgent情報取得Bean」を参照してください。

パラメタ

request - イベント処理に渡されたリクエストオブジェクト

beanid - JSPなどで定義しているbean名称を指定してください。

JSPファイルのjsp:useBeanアクションで指定するscope属性は，sessionでなければなりません。

指定したbeanidのUserAgent情報取得Beanオブジェクトが存在しない場合は，新たに生成します。

新たにbeanを生成した場合，その情報はsessionに保持されます。

戻り値

UserAgent情報取得Beanオブジェクト（nullで返却されることはありません）

例外

java.lang.IllegalArgumentException - 次の場合発生します。

引数のbeanidまたはrequestがnullの場合

uCosminexus Portal Frameworkが状態不正を検出した場合

ログにエラー情報が出力されますので確認してください。

getUserInfo

形式

public final jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean
         getUserInfo(javax.servlet.http.HttpServletRequest request,
                        java.lang.String beanid)

機能

ユーザ情報取得Bean取得メソッド

現在ログインしているユーザの情報を取得したり，各ユーザのポートレット固有の情報にアクセスしたりできます。

現在ログインしているユーザのユーザ情報，組織情報，およびグループ情報が取得できます。
これは，リポジトリファイル（Repository.xml）に定義されたLDAP/DBで定義している情報です。

各ユーザのポートレット固有の情報にアクセスできます。
これは，LDAP/DBに保持している情報です。

利用方法

jp.co.hitachi.soft.portal.api.user.PortalUserInfoBeanパッケージをインポートしてください。

actionおよびreceiveメソッド内で，getUserInfoメソッドを呼び出すことによって，ユーザ情報取得Beanオブジェクトを取得できます。
Bean初期化のためのsetRequestメソッドを明示的に呼び出す必要はありません。

ユーザ情報取得Beanのメソッドを利用して，目的の情報にアクセスしてください。
ユーザ情報取得Beanのメソッドについては，「14.6　ユーザ情報取得Bean」を参照してください。

パラメタ

request - イベント処理に渡されたリクエストオブジェクト

beanid - JSPなどで定義しているbean名称を指定してください。

JSPファイルのjsp:useBeanアクションで指定するscope属性は，sessionでなければなりません。

指定したbeanidのユーザ情報取得Beanオブジェクトが存在しない場合は，新たに生成します。

新たにbeanを生成した場合，その情報はsessionに保持されます。

戻り値

ユーザ情報取得Beanオブジェクト（nullでは返却されません）

例外

java.lang.IllegalStateException -

uCosminexus Portal Frameworkが状態不正を検出した場合に発生します。ログにエラー情報が出力されますので確認してください。java.lang.IllegalArgumentException -

引数のbeanidまたはrequestがnullの場合に発生します。ログにエラー情報が出力されますので確認してください。

receive〔使用を推奨するメソッド〕

形式

public void receive(HttpServletRequest request,
                     HttpServletResponse response)

機能

ポートレット間通信イベント処理

ほかのポートレットからsendメソッドを呼ばれた場合に，このメソッドが呼び出されます。

利用方法

ほかのポートレットからsendメソッドを呼ばれた場合，何らかの処理が必要なときはこのメソッドをオーバーライドしてください。

利用手順

どのポートレットに対して要求があったのかチェックします。
getPortletName()

どのポートレットから要求があったのかチェックします。
getSrcPortletName()

どのようなメッセージをポートレットから受信したのかチェックします。
getMessage()

インタフェースの内容を参照して処理を実行します。
request.getAttribute(key)の内容

インタフェースを設定します。
詳細はactionメソッドを参照してください。

特定のポートレットに対して処理を依頼したり，状態変化を通知したい場合，次の処理を実行します。

このメソッド内でsendメソッドを呼び出します。
send（リクエストオブジェクト，送信先ポートレット名称，送信メッセージ）

パラメタ

request - イベント処理に渡されたリクエストオブジェクト

response - イベント処理に渡されたレスポンスオブジェクト

戻り値

なし

例外

java.lang.IllegalStateException - responseパラメタのgetOutpuStream()メソッドまたはgetWriter()メソッドを呼び出した場合，JSP（ポートレット）側に制御を渡す処理で発生する場合があります。

注意事項

responseに何らかの操作を行っても無視されます。

receive〔使用を推奨しないメソッド〕

形式

public void receive(HttpServletRequest req)

機能

ポートレット間通信イベント処理

ほかのポートレットからsendメソッドを呼ばれた場合に，このメソッドが呼び出されます。

このメソッドを使用することは，推奨しません。

利用方法

ほかのポートレットからsendメソッドを呼ばれた場合，何らかの処理が必要なときはこのメソッドをオーバーライドしてください。

利用手順

どのポートレットに対して要求があったのかチェックします。
getPortletName()

どのポートレットから要求があったのかチェックします。
getSrcPortletName()

どのようなメッセージをポートレットから受信したのかチェックします。
getMessage()

インタフェースの内容を参照して処理を実行します。
request.getAttribute(key)の内容

インタフェースを設定します。
詳細はactionメソッドを参照してください。

特定のポートレットに対して処理を依頼したり，状態変化を通知したりしたい場合，次の処理を実行します。

このメソッド内でsendメソッドを呼び出します。
send（リクエストオブジェクト，送信先ポートレット名称，送信メッセージ）

パラメタ

req - イベント処理に渡されたリクエストオブジェクト

戻り値

なし

例外

java.lang.IllegalArgumentException - requestがnullの場合

ログにエラー情報が出力されますので確認してください。

send

形式

public final void send(javax.servlet.http.HttpServletRequest request,
                       java.lang.String portletName,
                       java.lang.Object message)

機能

ポートレット間通信をしたい場合，メッセージを送信します。

actionメソッドまたはreceiveメソッドから呼び出せます。

パラメタ

request - イベント処理に渡されたリクエストオブジェクト

portletName - 通知先ポートレット名称

message - 相手側に通知するメッセージオブジェクト

戻り値

なし

例外

java.lang.IllegalArgumentException - 次の場合，例外が発生します。

request，portletNameがnullの場合

portletNameで指定されたポートレットが，Cosminexus Portal Frameworkに未登録である場合

portletNameで指定されたポートレットを，この利用者が利用できない（アクセス権限がない）場合

デフォルトアクションモジュールを不正に生成した場合

ログにエラー情報が出力されますので確認してください。

14.10　ポートレットパラメタ取得インタフェース

ポートレットパラメタ取得インタフェースは，ほかのポートレットに設定情報などのパラメタを受け渡すためのインタフェースです。

ポートレットパラメタ取得インタフェースの一覧を次の表に示します。

クラス名 | 説明
jp.co.hitachi.soft.portal.api.portlets.PortletParameters | ポートレット間でパラメタを受け渡すためのインタフェースです。

ポートレットパラメタ取得インタフェースの詳細を説明します。

＜この節の構成＞

jp.co.hitachi.soft.portal.api.portlets.PortletParameters

jp.co.hitachi.soft.portal.api.portlets.PortletParameters

機能

ポートレット間でパラメタを受け渡すためのインタフェースです。

使用方法

ポートレットでこのインタフェースを実装した場合，各ポートレットデプロイ定義ファイル（hportlet.xml）の中に以下の形式で実装クラスを指定します。

<param-name>hptl.portlet.parameters</param-name>

<param-value>PortletParameters実装クラスのFQCN（パッケージ名を含むクラス名）</param-value>

PortletParameters実装クラスの呼び出し側では，上記より取得したFQCNからClass.forNameでオブジェクトを取得して，newInstanceメソッドでインスタンス化します。そのインスタンスに対してsetRequestメソッドを発行後，ウィンドウサイズ情報の取得用のキーなどを指定してgetParameterメソッドをコールすることで，対応する情報を取得します。newInstanceでPortletParametersのインスタンスを生成する呼び出し側では，JSPページ内やrequestスコープ内でインスタンスを解放し，このインスタンスを複数ページ／複数スレッド間で共有してはいけません。

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
void | setRequest(javax.servlet.http.HttpServletRequest req) | リクエストオブジェクトを設定します。必ず最初にこのメソッドを呼び出してください。
java.lang.String | getParameter(java.lang.String key) | 指定したキーに対応するポートレットの設定値を取得します。

メソッドの説明

setRequest

形式

public void setRequest(javax.servlet.http.HttpServletRequest req)

機能

このメッソドを発行することで，PortletParameters実装クラスからHttpServletRequestオブジェクトを利用できるようになります。PortletParameters実装クラスの呼び出し側は，必ず最初にこのメソッドを呼び出す必要があります。

パラメタ

req - HttpServletRequestオブジェクト

戻り値

なし

getParameter

形式

public java.lang.String getParameter(java.lang.String key)

機能

指定したキーに対応するポートレットの設定値を取得します。

パラメタ

key - 設定値を取得するためのキー値

戻り値

キーに対応する設定値。設定値を返せない場合にはnullを返す。

14.11　クライアントサイドデータ通信タグライブラリ

＜この節の構成＞

14.11.1　タグライブラリの概要

14.11.2　タグライブラリのタグ階層

14.11.3　タグライブラリの説明

14.11.1　タグライブラリの概要

クライアントサイドデータ通信タグライブラリは，シンプルで統一感のあるユーザインタフェースを実現するためのAPIを提供します。このAPIを利用して，ドラッグ&ドロップ機能およびデータフォーム転送機能の二つの機能を実現できます。

このタグライブラリを使用する際の前提となる条件を次に示します。

WebアプリケーションのDD（web.xml）内のタグライブラリに関する要素の追加
uCosminexus Portal Frameworkにポートレットをインストールする際，<web-app>の子要素に次の要素を追加します。なお，この要素は，新規にポータルサーバを構築した場合に追加されます。

<taglib>
   <taglib-uri>http://soft.hitachi.co.jp/portal/api/csdc</taglib-uri>
   <taglib-location>/WEB-INF/cosmi/portal/taglib/csdc.tld</taglib-location>
</taglib>

web.xmlの格納場所を次に示します。

｛PROJECT_HOME｝¥WEB-INF

注意事項

<web-app>の文書型定義（DTD定義）に沿った順番で定義してください。

taglibディレクティブの追加
該当するJSPファイルに，次に示すtaglibディレクティブの定義を記述します。

<%@ taglib uri="http://soft.hitachi.co.jp/portal/api/csdc" prefix="csdc" %>

csdc.jspへのマッピング定義に関する要素の追加
uCosminexus Portal Frameworkにポートレットをインストールする際，
<web-app>の子要素に次の要素を設定します。

 <servlet>
   <servlet-name>csdc</servlet-name>
   <jsp-file>/js/csdc.jsp</jsp-file>
 </servlet>

 <servlet-mapping>
   <servlet-name>csdc</servlet-name>
   <url-pattern>/js/csdc.js</url-pattern>
 </servlet-mapping>

注意事項

<web-app>の文書型定義（DTD定義）に沿った順番で定義してください。

クライアントサイドデータ通信タグライブラリの一覧を次の表に示します。

表14-11　クライアントサイドデータ通信タグライブラリの一覧

タグ名
説明
JSPスクリプトレット式で評価される属性値

csdc:body
コピー元およびコピー先のHTML構成を定義します。<csdc:src>および<csdc:dest>の子要素として利用できます。
－

csdc:dest
データ転送先オブジェクトを定義します。
datatype，nodetype

csdc:dragicon
ドラッグ用のアイコン（img要素）を出力します。<csdc:src>の<csdc:body>の子要素としてだけ利用できます。
desc，escape，hid，src，align，type

csdc:oncopy
コピーイベントハンドラを作成します。<csdc:src>の子要素としてだけ利用できます。
name

csdc:onpaste
ペーストイベントハンドラを定義します。<csdc:dest>の子要素としてだけ利用できます。
name

csdc:serializeJ2H
Javaオブジェクトをシリアライズします。次のJavaデータ型をサポートします。

JavaBeans

HashMapクラス

これら以外のJavaデータ型はサポートしません。
data，type

csdc:src
データ転送元のオブジェクトを定義します。
datatype

csdc:use
クライアントサイドデータ通信機能を使用するための初期定義をします。このタグライブラリは，ポートレット／テンプレート上で<body>タグ内に1回だけ定義します。また，フレームで使用する場合には，そのフレームを取り込んでいるウィンドウの<body>タグ内に定義します。
type

（凡例）

－：該当しません。

14.11.2　タグライブラリのタグ階層

クライアントサイドデータ通信機能を実現するために使用するタグライブラリのタグ階層を次に示します。ポートレット開発者は，階層に従ってタグライブラリを定義する必要があります。

なお，クライアントサイドデータ通信APIで例外が発生すると，javax.servlet.jsp.JspExceptionが発生します。また，クライアントサイドデータ通信APIはライブラリ名と例外内容をログファイルに出力します。

14.11.3　タグライブラリの説明

＜この項の構成＞

(1)　csdc:body

(2)　csdc:dest

(3)　csdc:dragicon

(4)　csdc:oncopy

(5)　csdc:onpaste

(6)　csdc:serializeJ2H

(7)　csdc:src

(8)　csdc:use

(1)　csdc:body

機能

コピー元およびコピー先のHTML構成を定義します。<csdc:src>および<csdc:dest>の子要素として利用できます。

構文

<csdc:src>の子要素の場合

<csdc:body>
   コピー元のHTML構成定義
   <csdc:dragicon />
   コピー元のHTML構成定義
   <csdc:serializeJ2H />
</csdc:body>

<csdc:dest>の子要素の場合

<csdc:body>
   コピー先のHTML構成定義
   <csdc:dragicon />
   コピー先のHTML構成定義
   <csdc:serializeJ2H />
</csdc:body>

属性

なし

HTML変換規則

<csdc:src>の子要素の場合

<csdc:body>タグ内に記述された内容が表示されます。

<csdc:dest>の子要素の場合

1.　ドラッグ&ドロップの場合

nodetype == blockの場合

　<div ondrop="hptl_onpaste(‘(I)’,(II),(III))"
　ondragenter="cancelDefault('(I)')" ondragover="cancelDefault(‘(I)')">
　<csdc:body>タグ内に記述された内容が表示される。
　</div>

nodetype == inlineの場合

　<span ondrop="hptl_onpaste(‘(I)’,(II),(III))"
　ondragenter="cancelDefault('(I)')"
　ondragover="cancelDefault(‘(I)')">
　<csdc:body>タグ内に記述された内容が表示される。
　</span>

　（凡例）

　　　(I)：<csdc:dest>タグのdatatype属性に指定した値

　　　(II)：ペーストイベントハンドラ名称

　　　(III)：ペーストハンドラに渡すオブジェクト

2.　データフォーム転送の場合

　<csdc:body>タグ内に記述された内容が表示されます。

(2)　csdc:dest

機能

データ転送先オブジェクトを定義します。

構文

属性を定義する順序は任意です。

<csdc:dest datatype="data type" nodetype="{block|inline}">
   <csdc:onpaste> // 子要素
   <csdc:body>    // 子要素
</csdc:dest>

属性

属性
型
説明
必須/任意
JSPスクリプトレット式評価

datatype
String
・この属性には，単一の文字列だけ指定できます。
・定義フォーマットを次に示します。
「ネームスペース名.通信データオブジェクト名称」
・ネームスペース名がJavaクラスライブラリ名と同じ場合は，ドメインの文字列を反転させたものを記述します。
必須
○

nodetype
String
<csdc:body>のHTMLタグの要素を指定します（ブロックレベル要素またはインライン要素）。
必須
○

（凡例）

○：JSPスクリプトレット式で評価されます。

HTML変換規則

<csdc:dest>タグ内に記述された内容が表示されます。

(3)　csdc:dragicon

機能

ドラッグ用のアイコン（img要素）を出力します。<csdc:src>の<csdc:body>の子要素としてだけ利用できます。

構文

属性を定義する順序は任意です。

<csdc:dragicon [type="ポートレット任意の文字列"] [src="path to icon"]
[desc="アイコンの説明"] hid="任意文字列" escape="single-quote | double-quote"
[hclass="ドラッグ用のアイコン(img要素)のclass属性"]
[align="ドラッグ用のアイコン(img要素)のalign属性"]>

属性

属性
型
説明
必須/任意
JSPスクリプトレット式評価

desc
String
アイコンの説明を記述します。HTMLでは，ツールチップとして出力されます。
任意
○

escape
String
このタグライブラリが出力するHTMLの文字列の文字列囲み文字「”」，「’」を，ポートレットで制御したい場合に指定します。省略した場合は，「single-quote」が指定されます。通常は指定しないでください。

single-quote：文字列囲み文字「’」を利用して出力する場合に指定します。

double-quote：文字列囲み文字「”」を利用して出力する場合に指定します。

任意
○

hclass
String
アイコンのスタイルシートのクラスを指定するためのclass属性を指定します。
任意
○

hid
String
ドラッグ&ドロップに使用するアイコンを，ポートレットで一意に識別したい場合に付け加えるIDです。通常は指定しないでください。
任意
○

src
String
ユーザが定義したアイコンのURLを指定します。省略した場合は，「item.gif」を表示します。「item.gif」のドラッグ用アイコンについては，「図9-1ドラッグ&ドロップ機能の概要」に示す「ドラッグ用アイコン」を参照してください。
任意
○

align
String
アイコンの表示位置を指定するためのalign属性を指定します。
任意
○

type
String

ポートレットごとの組み込み型を指定します。（例：people）

この属性は，src属性で指定するアイコンがどのような種別であるかを示すコメントの役割を果たします。

この属性に定義された文字列は，このタグライブラリから参照されることはないため，不正な種別文字列が定義されていてもエラーにはなりません。

任意
○

（凡例）

○：JSPスクリプトレット式で評価されます。

HTML変換規則

<csdc:dragicon>のHTML変換規則を次に示します。

表14-12　<csdc:dragicon>のHTML変換規則

変換前/後
変換規則

変換前

<csdc:dragicon type="people" hid=”0” src=”http://○○○/×××/people.gif” desc=”人の情報です” />

変換後※

<img id=”1” src=”http://○○○/×××/people.gif" alt=”人の情報です” ondragstart="hptl_oncopy('1.',2.,3.)" >

（凡例）

1.：<csdc:src>のname属性に指定した値

2.：コピーイベントハンドラ名称

3.：イベント対象オブジェクト（this）

注※　変換前の属性の定義順に関係なく，表中の順序で属性は表示されます。

(4)　csdc:oncopy

機能

コピーイベントハンドラを作成します。<csdc:src>の子要素としてだけ利用できます。

構文

<csdc:oncopy [name="function name"]>
   コピーイベントハンドラの処理※
</csdc:oncopy>

注※　ここでは，JavaScriptを使用し，次の処理を定義します。

Javaオブジェクトがシリアライズされた文字列を，HTMLから取得します。

1.で取得した文字列をJavaScript関数「hptl_deserializeH2JS」により，JavaScriptオブジェクトにデシリアライズします。

JavaScript関数「hptl_setPortalClipboardData」により，2.のオブジェクトをポータルクリップボードウィンドウにセットします。

属性

属性
型
説明
必須/任意
JSPスクリプトレット式評価

name
String
・「コピーイベントハンドラ」の関数名称を定義します。関数名称を定義することで，任意のJavaScriptコードから呼出しができるようになります。ただし，ページ内で関数名をユニークとなるように注意する必要があります。
・他JavaScriptコードから呼び出しがない場合は省略できます。
・省略した場合は，イベントハンドラの名称は「”hptl_uap_oncopy” + ページ内でユニークな通番」となります。
任意
○

（凡例）

○：JSPスクリプトレット式で評価されます。

HTML変換規則

<csdc:oncopy>のHTML変換規則を次に示します。

表14-13　<csdc:oncopy>のHTML変換規則

変換前/後
name属性が定義されていない場合
name属性が定義されている場合

変換前

<csdc:oncopy>
コピーイベントハンドラの処理※
</csdc:oncopy>

<csdc:oncopy name="samplehandler">
   コピーイベントハンドラの処理※
</csdc:oncopy>

変換後

<script type="text/javascript">
   function hptl_uap_oncopy1(){
   コピーイベントハンドラの処理※
   }
</script>

<script type="text/javascript">
     function samplehandler() {
   コピーイベントハンドラの処理※
   }
</script>

注※　コピーイベントハンドラの処理の詳細は，このタグライブラリの構文の注を参照してください。

(5)　csdc:onpaste

機能

ペーストイベントハンドラを定義します。<csdc:dest>の子要素としてだけ利用できます。

構文

<csdc:onpaste [name="function name"]>
   ペーストイベントハンドラの処理※
</csdc:onpaste>

注※　ここでは，JavaScriptを使用し，次の処理を定義します。

JavaScript関数「hptl_getPortalClipboardData」を使用し，ポータルクリップボードウィンドウからJavaScriptオブジェクトを取得します。

転送先HTML部品のオブジェクトを取得します。

1.で取得したJavaScriptオブジェクトを2.で取得した転送先HTML部品のオブジェクトに格納します。

属性

属性 | 型 | 説明 | 必須/任意 | JSPスクリプトレット式評価
name | String | ハンドラの関数名を定義します。関数名を定義することで，任意のJavaScriptコードから呼び出しができるようになります。ただし，ページ内で関数名をユニークにする必要があります。 | 任意 | ○

（凡例）

○：JSPスクリプトレット式で評価されます。

HTML変換規則

<csdc:onpaste>のHTML変換規則を次に示します。

表14-14　<csdc:onpaste>のHTML変換規則

変換前/後
name属性が定義されていない場合
name属性が定義されている場合

変換前

<csdc:onpaste>
   ペーストイベントハンドラの処理※
</csdc:onpaste>

<csdc:onpaste name="samplehandler2">
   ペーストイベントハンドラの処理※
</csdc:onpaste>

変換後

<script type="text/javascript">
    function hptl_uap_oncopy2() {
       ペーストイベントハンドラの処理※
    }
</script>

<script type="text/javascript">
   function samplehandler2() {
   ペーストイベントハンドラの処理※
}
</script>

注※　ペーストイベントハンドラの処理の詳細は，このタグライブラリの構文の注を参照してください。

(6)　csdc:serializeJ2H

機能

Javaオブジェクトをシリアライズします。このタグライブラリでは，次のJavaデータ型をサポートします。

JavaBeans

HashMapクラス

これら以外のJavaデータ型はサポートしません。

構文

属性を定義する順序は任意です。

<csdc:serializeJ2H type="{bean|map}" data="java data object" />

属性

属性
型
説明
必須/任意
JSPスクリプトレット式評価

data
Object
シリアライズ対象のオブジェクトを指定します。
・JavaBeansの場合：JavaBeansインスタンスを指定
・HashMapの場合：HashMapインスタンスを指定
必須
○

type
String
Javaオブジェクトのデータ型を指定します。
・JavaBeansの場合："bean"を指定
・HashMapの場合："map"を指定
必須
○

（凡例）

○：JSPスクリプトレット式で評価されます。

HTML変換規則

変換前

<csdc:serializeJ2H type="bean" data="object" />

変換後

data属性に指定されているインスタンス”object”がシリアライズされた文字列

(7)　csdc:src

機能

データ転送元のオブジェクトを定義します。

構文

<csdc:src datatype="data type">
   <csdc:oncopy> // 子要素
   <csdc:body>   // 子要素
</csdc:src>

属性

属性
型
説明
必須/任意
JSPスクリプトレット式評価

datatype
String
・この属性には，複数の文字列を指定できます。文字列を複数指定する場合は，文字列をコンマ区切りで記述します。指定する文字列の中にコンマが含まれる場合は，動作しなくなるおそれがあるため注意が必要です。
・指定できる文字列は，最大16文字です。
・定義フォーマットを次に示します。
「ネームスペース名.通信データオブジェクト名称」
・ネームスペース名がJavaクラスライブラリ名と同じ場合は，ドメインの文字列を反転させたものを記述します。
・uCosminexus Portal Frameworkでは，「hptl」で始まる文字列を予約語としているため，開発ユーザは，「hptl」で始まる文字列以外を指定する必要があります。
必須
○

（凡例）

○：JSPスクリプトレット式で評価されます。

HTML変換規則

<csdc:src>タグ内に記述された内容が表示されます。

(8)　csdc:use

機能

クライアントサイドデータ通信機能を使用するための初期定義をします。このタグライブラリは，ポートレット／テンプレート上で<body>タグ内に1回だけ定義します。また，フレームで使用する場合には，そのフレームを取り込んでいるウィンドウの<body>タグ内に定義します。

なお，複数定義した場合，HTML変換は実行されますが，iframeタグのIDが重複するため，クライアントサイドデータ通信機能の動作を保証できません。また，フレーム内で定義した場合，HTML変換は実行されますが，初期定義として使用されません。

構文

<csdc:use/>

属性

なし

HTML変換規則

変換前

<csdc:use/>

変換後

<PortalResources.propertiesファイル※のjp.co.hitachi.soft.portal.csdc.datatype.userData項目が「true」の場合>

<iframe id="hptl_csdc_behavior_frame" src="{uCosminexus Portal Frameworkのコンテキストルート}/html/userData.html" width="0" height="0" frameborder="no" scrolling="no" marginwidth="0" marginheight="0">
</iframe>
<iframe id="hptl_csdc_serialize_temporary_frame" src=”{uCosminexus Portal Frameworkのコンテキストルート}/html/blank.html” width="0" height="0" frameborder="no" scrolling="no" marginwidth="0" marginheight="0">
</iframe>

<PortalResources.propertiesファイル※のjp.co.hitachi.soft.portal.csdc.datatype.userData項目が「true」以外の場合>

何も記述されません。

注※　PortalResources.propertiesファイルの詳細は，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「PortalResources.propertiesの詳細」の説明を参照してください。

14.12　クライアントサイドデータ通信JavaScript

＜この節の構成＞

14.12.1　クライアントサイドデータ通信JavaScriptの概要

14.12.2　関数の説明

14.12.1　クライアントサイドデータ通信JavaScriptの概要

クライアントサイドデータ通信JavaScriptは，ポートレット開発者がクライアントサイドデータ通信機能を実現するために使用するJavaScript関数を提供します。ポートレット開発者は，クライアントサイドデータ通信機能を使用するためにはJSPファイルにJavaScriptファイル「csdc.js」への絶対パス参照を次のように記述する必要があります。

<script src="/ポータルプロジェクト名称/js/csdc.js">
</script>

上記の“/ポータルプロジェクト名称“は，「request.getContextPath()」を使用して取得できます。

クライアントサイドデータ通信JavaScript関数の一覧を次の表に示します。

表14-15　クライアントサイドデータ通信JavaScript関数の一覧

JavaScript関数
説明

hptl_deserializeH2JS
<csdc:serializeJ2H>タグライブラリでシリアライズされたデータをデシリアライズし，JavaScriptオブジェクトに変換します。

hptl_getPortalClipboardData

userData領域またはポータルクリップボードウィンドウ内のJavaScriptグローバル変数に設定されているJavaScript配列オブジェクトへの参照を取得します。

ペーストイベントハンドラ内には，この関数を定義する必要があります。

hptl_oncopy

コピーイベントハンドラを実行します。

コピーイベントハンドラを実行する場合は，この関数を使用する必要があります。

hptl_onpaste

ペーストイベントハンドラを実行します。

ペーストイベントハンドラを実行する場合は，この関数を使用する必要があります。

hptl_setPortalClipboardData

userData領域またはポータルクリップボードウィンドウに存るJavaScriptグローバル変数に，JavaScriptオブジェクトを設定します。

コピーイベントハンドラ内にこの関数を定義する必要があります。

14.12.2　関数の説明

hptl_deserializeH2JS

形式

function hptl_deserializeH2JS(type, data)

機能

<csdc:serializeJ2H>タグライブラリでシリアライズされたデータをデシリアライズし，JavaScriptオブジェクトに変換します。

パラメタ

type - デシリアライズの方式。<csdc:serializeJ2H>タグライブラリのtype属性で指定した文字列を指定してください。

data - デシリアライズ対象のデータ（文字列）

戻り値

戻り値 == nullでない場合
JavaScript連想配列オブジェクト

戻り値 == nullの場合
null

hptl_getPortalClipboardData

形式

function hptl_getPortalClipboardData(datatype)

機能

userData領域またはポータルクリップボードウィンドウ内のJavaScriptグローバル変数に設定されているJavaScript配列オブジェクトへの参照を取得します。

ペーストイベントハンドラ内には，この関数を定義する必要があります。

パラメタ

datatype - <csdc:dest>タグライブラリのdatatype属性に指定する文字列

戻り値

戻り値 == nullでない場合
userData領域またはポータルクリップボードウィンドウにセットされているJavaScriptデータ

戻り値 == nullの場合
null

hptl_oncopy

形式

function hptl_oncopy(datatype, handler, obj)

機能

コピーイベントハンドラを実行します。

コピーイベントハンドラを実行する場合は，この関数を使用する必要があります。

パラメタ

datatype - <csdc:src>タグライブラリのdatatype属性に指定してある文字列。複数のdatatype属性を指定する場合は，コンマ区切りで文字列を指定してください。

handler - コピーイベントハンドラ

obj - イベント対象オブジェクト（this）

戻り値

なし

hptl_onpaste

形式

function hptl_onpaste(datatype, handler, obj)

機能

ペーストイベントハンドラを実行します。

ペーストイベントハンドラを実行する場合は，この関数を使用する必要があります。

パラメタ

datatype - <csdc:dest>タグライブラリのdatatype属性に指定してある文字列。複数のdatatypeを指定する場合は，コンマ区切りで文字列を指定してください。

handler - ペーストイベントハンドラ

obj - イベント対象オブジェクト（this）

注意事項

このバージョンでは，データ転送先で複数のdatatypeを指定することはサポートされていません。そのため，第一パラメタに複数のdatatypeを指定することはできますが，動作しません。

戻り値

なし

hptl_setPortalClipboardData

形式

function hptl_setPortalClipboardData(datatype, data)

機能

userData領域またはポータルクリップボードウィンドウに存るJavaScriptグローバル変数に，JavaScriptオブジェクトを設定します。

コピーイベントハンドラ内にこの関数を定義する必要があります。

パラメタ

datatype - <csdc:src>タグライブラリのdatatype属性に指定する文字列

data - デシリアライズされたデータを格納したJavaScript配列オブジェクト

戻り値

なし

14.13　クライアントサイドデータ通信クラスライブラリ

クライアントサイドデータ通信クラスライブラリは，ドラッグアイコン取得APIだけを提供します。

ドラッグアイコン取得APIの一覧を次の表に示します。

表14-16　ドラッグアイコン取得APIの一覧

クラス名 | 説明
jp.co.hitachi.soft.portal.api.csdc.lib.CsdcUtil | クライアントサイドデータ通信機能のドラッグ用アイコン（img要素）を示すHTML文字列を取得します。

＜この節の構成＞

jp.co.hitachi.soft.portal.api.csdc.lib.CsdcUtil

jp.co.hitachi.soft.portal.api.csdc.lib.CsdcUtil

機能

クライアントサイドデータ通信機能のドラッグ用アイコンの画像を示すHTML文字列を取得します。

このAPIは，クライアントサイドデータ通信タグライブラリの<csdc:src>の<csdc:body>内で使用します。

メソッドの一覧

戻り値のデータ型
メソッド
説明

static String
getDragIcon(HttpServletRequest request, String desc, String hclass, String src)
クライアントサイドデータ通信機能のドラッグ用アイコンの画像を示すHTML文字列を取得します。
HTML内に格納するコードを出力する場合に使用します。ただし，alignパラメタは指定できません。

static String
getDragIcon(HttpServletRequest request, String desc, int escape, String hclass, String hid, String src, String type)
クライアントサイドデータ通信機能のドラッグ用アイコンの画像を示すHTML文字列を取得します。
JavaScript内に記載するためのコードを出力する場合に使用します。ただし，alignパラメタは指定できません。

static String
getDragIcon(HttpServletRequest request, String desc, String hclass, String src, String align)
クライアントサイドデータ通信機能のドラッグ用アイコンの画像を示すHTML文字列を取得します。
HTML内に格納するコードを出力する場合に使用します。alignパラメタを指定できます。

static String
getDragIcon(HttpServletRequest request, String desc, int escape, String hclass, String hid, String src, String align, String type)
クライアントサイドデータ通信機能のドラッグ用アイコンの画像を示すHTML文字列を取得します。
JavaScript内に記載するためのコードを出力する場合に使用します。alignパラメタを指定できます。

メソッドの説明

getDragIcon〔HTML用　alignパラメタなし〕

形式

public static String getDragIcon(HttpServletRequest request,
                                String desc, String hclass,
                                String src)

機能

指定したパラメタに従って，クライアントサイドデータ通信機能のドラッグ用アイコンの画像を示すHTML文字列を取得します。

HTML内に格納するコードを出力する場合に使用します。ただし，alignパラメタは指定できません。

パラメタ

request - JSP表示時のリクエストオブジェクト（null以外）

desc - <img>タグのalt属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，alt属性は設定されません。

hclass - <img>タグのclass属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，class属性は設定されません。

src - <img>タグのsrc属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，src属性は設定されません。

戻り値

ドラッグ用のアイコンを示すHTML文字列

例外

PortletException - 入力パラメタが不正な場合，またはこのAPIの使用個所が不正な場合

getDragIcon〔JavaScript用　align パラメタなし〕

形式

public static String getDragIcon(HttpServletRequest request,
                                String desc, int escape,
                                String hclass, String hid,
                                String src, String type)

機能

指定したパラメタに従って，クライアントサイドデータ通信機能のドラッグ用アイコンの画像を示すHTML文字列を取得します。

JavaScript内に記載するためのコードを出力する場合に使用します。ただし，alignパラメタは指定できません。

パラメタ

request - JSP表示時のリクエストオブジェクト（null以外）

desc - <img>タグのalt属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，alt属性は設定されません。

escape - JavaScript内で使用する場合に，区切り文字を変更するために指定します。

CSDC_DRAGICON_ESCAPE_TYPE_SINGLE_QUOTE（数値は0とする）：このメソッドが出力するHTMLをJavaScript上で文字列リテラルとして埋め込む場合で，文字列リテラルを「'」で囲むときに指定します。

CSDC_DRAGICON_ESCAPE_TYPE_DOUBLE_QUOTE（数値は1とする）：このメソッドが出力するHTMLをJavaScript上で文字列リテラルとして埋め込む場合で，文字列リテラルを「"」で囲むときに指定します。

CSDC_DRAGICON_ESCAPE_TYPE_NONE（数値は-1とする）：このメソッドが出力するHTMLを，HTML上に直接埋め込むときに指定します。

上記以外の値の場合：CSDC_DRAGICON_ESCAPE_TYPE_NONEが指定されたものとして処理します。

hclass - <img>タグのclass属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，class属性は設定されません。

hid - <img>タグのid属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，id属性は設定されません。

src - <img>タグのsrc属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，src属性は設定されません。

type - ポートレットごとの組み込み型を指定します（例：people）。

このパラメタに指定した文字列は，src属性で指定するアイコンがどのような種別であるかを示すコメントになります。なお，このパラメタに指定した文字列は，クライアントサイドデータ通信クラスライブラリから参照されることがないため，不正な文字列が定義されていてもエラーにはなりません。

戻り値

ドラッグ用のアイコンを示すHTML文字列

例外

PortletException - 入力パラメタが不正な場合，またはこのAPIの使用個所が不正な場合

getDragIcon〔HTML用　align パラメタあり〕

形式

public static String getDragIcon(HttpServletRequest request,
                                String desc, String hclass,
                                String src, String align)

機能

指定したパラメタに従って，クライアントサイドデータ通信機能のドラッグ用アイコンの画像を示すHTML文字列を取得します。

HTML内に格納するコードを出力する場合に使用します。alignパラメタを指定できます。

パラメタ

request - JSP表示時のリクエストオブジェクト（null以外）

desc - <img>タグのalt属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，alt属性は設定されません。

hclass - <img>タグのclass属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，class属性は設定されません。

src - <img>タグのsrc属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，src属性は設定されません。

align - <img>タグのalign属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，src属性は設定されません。

戻り値

ドラッグ用のアイコンを示すHTML文字列

例外

PortletException - 入力パラメタが不正な場合，またはこのAPIの使用個所が不正な場合

getDragIcon〔JavaScript用　align パラメタあり〕

形式

public static String getDragIcon(HttpServletRequest request,
                                String desc, int escape,
                                String hclass, String hid,
                                String src, String align,
                                String type)

機能

指定したパラメタに従って，クライアントサイドデータ通信機能のドラッグ用アイコンの画像を示すHTML文字列を取得します。

JavaScript内に記載するためのコードを出力する場合に使用します。alignパラメタを指定できます。

パラメタ

request - JSP表示時のリクエストオブジェクト（null以外）

desc - <img>タグのalt属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，alt属性は設定されません。

escape - JavaScript内で使用する場合に，区切り文字を変更するために指定します。

CSDC_DRAGICON_ESCAPE_TYPE_SINGLE_QUOTE（数値は0とする）：このメソッドが出力するHTMLをJavaScript上で文字列リテラルとして埋め込む場合で，文字列リテラルを「'」で囲むときに指定します。

CSDC_DRAGICON_ESCAPE_TYPE_DOUBLE_QUOTE（数値は1とする）：このメソッドが出力するHTMLをJavaScript上で文字列リテラルとして埋め込む場合で，文字列リテラルを「"」で囲むときに指定します。

CSDC_DRAGICON_ESCAPE_TYPE_NONE（数値は-1とする）：このメソッドが出力するHTMLを，HTML上に直接埋め込むときに指定します。

上記以外の値の場合：CSDC_DRAGICON_ESCAPE_TYPE_NONEが指定されたものとして処理します。

hclass - <img>タグのclass属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，class属性は設定されません。

hid - <img>タグのid属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，id属性は設定されません。

src - <img>タグのsrc属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，src属性は設定されません。

align - <img>タグのalign属性に設定する文字列を指定してください。nullまたは空文字列を指定した場合，src属性は設定されません。

type - ポートレットごとの組み込み型を指定します（例：people）。

このパラメタに指定した文字列は，src属性で指定するアイコンがどのような種別であるかを示すコメントになります。なお，このパラメタに指定した文字列は，クライアントサイドデータ通信クラスライブラリから参照されることがないため，不正な文字列が定義されていてもエラーにはなりません。

戻り値

ドラッグ用のアイコンを示すHTML文字列

例外

PortletException - 入力パラメタが不正な場合，またはこのAPIの使用個所が不正な場合

14.14　ダイレクト呼び出し結果取得API

ダイレクト呼び出し結果取得APIの一覧を次の表に示します。

表14-17　ダイレクト呼び出し結果取得APIの一覧

クラス名 | 説明
jp.co.hitachi.soft.portal.api.request.PortalHttpRequest | ダイレクト呼び出し実行時のデータの引き継ぎ結果を取得します。

ダイレクト呼び出し結果取得APIの詳細を説明します。

＜この節の構成＞

jp.co.hitachi.soft.portal.api.request.PortalHttpRequest

jp.co.hitachi.soft.portal.api.request.PortalHttpRequest

機能

ダイレクト呼び出し実行時のデータの引き継ぎ結果を取得するクラスです。

使用方法

ダイレクト呼び出し実行時のデータの引き継ぎ結果を取得する場合に使用します。

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
int | getSuccessionResult(ServletRequest) | データの引き継ぎ結果を取得します。

メソッドの説明

getSuccessionResult

形式

public int getSuccessionResult(ServletRequest req)

機能

データの引き継ぎ結果を取得します。

パラメタ

req - 日立APIポートレットに渡されたServletRequestオブジェクト

戻り値

以下のint型整数値の変数名

RETURN_SUCCESS_DIRECT - POSTデータの引き継ぎに成功した

RETURN_NOT_DIRECT - ダイレクト呼び出しされていない

RETURN_MAX_ERROR - POSTデータのサイズが上限を超えている

RETURN_MIME_ERROR - MIMEタイプがmultipart/form-data;である

RETURN_NOT_HEADER - 引き継ぎデータにHTTPヘッダがない

RETURN_OTHER_ERROR - その他の例外的な処理によってPOSTデータの引き継ぎに失敗した

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

14.15　ナビゲーションメニューのタグライブラリ

各ポートレットが，ナビゲーションメニューのリンク集機能を使用する際に，リンク集の登録をするリクエスト先URLと，登録情報を引き渡すインタフェースが必要となります。ここでは，ナビゲーションメニューが提供するリンク集登録用URLを生成するタグライブラリについて説明します。

提供方法

このタグライブラリは，ナビゲーションメニューのjarファイル内に同梱して提供されます。

利用手順

このタグライブラリを使用する前に以下の設定が必要です。

1.　WebアプリケーションのDD（web.xml）内のタグライブラリに関する要素を追加します。

この要素は，新規にポータルサーバを構築した場合に追加されます。

　<taglib>

　<taglib-uri>http://soft.hitachi.co.jp/portal/api/navigationbar</taglib-uri>

　<taglib-location>/portlets/navigationmenu/navimenu.tld</taglib-location>

　</taglib>

web.xmlの格納場所を次に示します。

｛PROJECT_HOME｝¥WEB-INF

2.　該当するJSPファイルに，次に示すtaglibディレクティブの定義を記述します。

　<%@ taglib uri="http://soft.hitachi.co.jp/portal/api/navigationbar" prefix="navimenu" %>

＜この節の構成＞

14.15.1　タグライブラリの一覧

14.15.2　タグライブラリの説明

14.15.1　タグライブラリの一覧

ナビゲーションメニューで提供するタグライブラリ一覧を次の表に示します。

表14-18　ナビゲーションメニューで提供するタグライブラリ一覧

タグ名 | 説明 | 属性
navimenu:linkregisturl / | ナビゲーションメニューのリンク集にリンクを登録するためのURLを出力します。 | label，description，url，target，portletname

14.15.2　タグライブラリの説明

<navimenu:linkregisturl />

機能

ナビゲーションメニューのリンク集にリンクを登録するためのURLを出力します。

構文

<navimenu:linkregisturl label="labelString" url="urlString" target={"other"} portletname="name"/>

属性

属性
型
説明
必須/任意
JSPスクリプトレット式評価
最大値

description
String
リンク集に表示するラベル名のツールチップに表示する説明文を指定します。
必須
○
32文字

label
String
リンク集に表示するラベル名の文字列を指定します。
必須
○
16文字

portletname
String
リンク集のリンクに表示するアイコン（hportlet.xmlで指定したdefaulticon）を取得するための，キーとなる対応ポートレット名を指定します。
必須
○
－

target
String
リンク集に登録されたURLの参照先を開くWebブラウザを指定します。

other：新しいWebブラウザのウィンドウに表示します。このバージョンでは，otherを必ず指定してください。

指定できるURLは，ポートレットのNEWWINDOWモードまたはIFRAMEモードです。MAXIMIZEモードのURLを指定すると，HOME画面が複数現れてしまい動作の保証外となります。
必須
○
－

url
String
リンク集に登録するURLを指定します。
必須
○
670バイト

（凡例）

○：JSPスクリプトレット式で評価されます。

－：該当しません。

HTML変換規則

各属性に指定したリンクの情報をリンク集に登録するURLが出力されます。

このタグライブラリは，属性で指定したデータをクエリとして，引き渡すURLを出力します。

このタグライブラリで生成されるURLは，登録確認画面を表示します。そのため，HTMLのaタグ，またはJavaScriptのwindow.open()で，ターゲットに一意な値を代入して参照する必要があります。（例：target="_blank"）

制限および注意事項

ポートレットユティリティクラスライブラリが使用できるJSP内でだけ利用できます。ポートレットユティリティクラスライブラリの詳細は，「14.4　ポートレットユティリティクラスライブラリ」を参照してください。

属性値の最大値を超えて利用した場合，Internet ExplorerではGETリクエストの発行ができなくなります。

属性値の最大値を超えて利用したい場合
label，description，およびurlの属性値の最大値を超えて利用したい場合は，次の計算式を満たす範囲で拡張して利用してください。
　1100バイト＝（label文字数＋description文字数）×9＋urlバイト数
<備考>
labelおよびdescriptionは，URLEnecoding対象のフィールドです。ASCII文字以外は，1文字当たり9バイトの変換文字列となるため9を掛けています。

14.16　ユーザロケール情報取得API

ユーザロケール情報取得APIの一覧を次の表に示します。

表14-19　ユーザロケール情報取得APIの一覧

クラス名 | 説明
jp.co.hitachi.soft.portal.api.user.LocaleData | ユーザのロケール情報を取得，設定します。

ユーザロケール情報取得APIの詳細を説明します。

＜この節の構成＞

jp.co.hitachi.soft.portal.api.user.LocaleData

jp.co.hitachi.soft.portal.api.user.LocaleData

機能

カスタマイズ情報に保存されているユーザのロケール情報（言語およびタイムゾーン）を取得，設定するクラスです。

使用方法

ユーザの利用言語に応じたコンテンツを作成する場合に使用します。

注意事項

カスタマイズ情報が取得できない場合に，Webブラウザの設定値を取得する場合があります。しかし，このAPIからWebブラウザの設定を変更することはできません。

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
static final String | getLangType(HttpServletRequest req) | ユーザが表示可能な言語の中で最も優先度の高い言語の識別子をISO言語コードに従った形式で取得します。
public static final Enumeration | getLangTypes(HttpServletRequest req) | ユーザが表示可能な言語のすべての識別子を取得します。
public static final String | getLanguage(HttpServletRequest req) | ユーザが表示可能な言語の中で最も優先度の高い言語の識別子を文字列表現で取得します。
static final String | getTimeZone(HttpServletRequest req) | カスタマイズ情報に設定されているタイムゾーンIDを取得します。
static final void | setLangType(HttpServletRequest req,String langtype) | カスタマイズ情報に言語IDを設定します。
static final void | setTimeZone(HttpServletRequest req,String timezone) | カスタマイズ情報にタイムゾーンIDを設定します。
public static final Locale | getLocale(HttpServletRequest req) | ユーザが表示可能な言語の中で最も優先度の高い言語に対応するロケールを取得します。
public static final Enumeration | getLocales(HttpServletRequest req) | ユーザが表示可能な言語に対応するロケールをすべて取得します。
public static final Enumeration | getSupportLocales() | uCosminexus Portal Frameworkがサポートしているすべての言語に対応するロケールを取得します。
public static final Enumeration | getSupportLanguagesOrder() | uCosminexus Portal Frameworkがサポートしているすべての言語の文字列表現を取得します。

メソッドの説明

getLangType

形式

public static final String getLangType(HttpServletRequest req)

機能

ユーザが表示可能な言語の中で最も優先度の高い言語の識別子をISO言語コードに従った形式で取得します。ユーザがカスタマイズ画面で特定の言語を選択している場合は，その言語の識別子を取得します。ユーザが特定の言語を選択していない場合は，ブラウザで設定されている言語の識別子の中で最も優先度が高いものを取得します。どちらも設定されていない場合は，uCosminexus Portal Frameworkのデフォルトの言語を取得します。言語の識別子は，ISO言語コード（RFC1766）に準拠しています。取得できる言語ID値を次の表に示します。

ユーザがカスタマイズ情報に設定している言語設定 | ユーザがWebブラウザに設定している言語設定
日本語（ja） | 英語（en） | その他の言語
日本語 | ja | ja | ja
英語 | en | en | en
設定なし※1 | ja | en | en※2

注※1　ユーザがポータル画面の利用者用レイアウトカスタマイズ画面で言語を設定していない場合，およびウェルカム画面などのログイン前の画面でこのメソッドを発行した場合です。

注※2　プロパティで変更できます。

パラメタ

req - サーブレットリクエスト（null以外）

戻り値

ユーザが表示可能な言語の中で最も優先度が高い言語のISO言語コード（null以外）

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

getLangTypes

形式

public static final Enumeration getLangTypes(HttpServletRequest req)

機能

ユーザが表示可能な言語を次のルールで決定し，該当する言語の配列を取得します。

ユーザがカスタマイズ画面で特定の言語を選択している場合は，その言語の識別子一つだけが格納された配列を取得します。

ユーザが特定の言語を選択していない場合は，ブラウザで設定されている言語の識別子が優先度順に格納された配列を取得します。

どちらも設定が行われていない場合は，uCosminexus Portal Frameworkのデフォルトの言語の識別子が格納された配列を取得します。

パラメタ

req - サーブレットリクエスト（null以外）

戻り値

ユーザが表示可能な言語（String型，ISO言語コード）が優先度順に格納された配列（Enumeration型）

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

getLanguage

形式

public static final String getLanguage(HttpServletRequest req)

機能

ユーザが表示可能な言語の中で最も優先度の高い言語の識別子を文字列表現で取得します。ユーザがカスタマイズ画面で特定の言語を選択している場合は，その言語の識別子を取得します。ユーザが特定の言語を選択していない場合は，ブラウザで設定されている言語の識別子の中で最も優先度が高いものを取得します。どちらも設定されていない場合は，uCosminexus Portal Frameworkのデフォルトの言語を取得します。

パラメタ

req - サーブレットリクエスト（null以外）

戻り値

ユーザが表示可能な言語の中で最も優先度が高い言語の文字列表現

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

getTimeZone

形式

public static final String getTimeZone(HttpServletRequest req)

機能

ユーザがカスタマイズ情報に設定したタイムゾーンIDを取得します。IDは，J2SE1.4の定めたカスタムタイムゾーンIDに準拠しています。ユーザが何も設定していない場合は，ポータルサーバのデフォルト値が返却されます。

パラメタ

req - サーブレットリクエスト（null以外）

戻り値

タイムゾーンID

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

setLangType

形式

public static final void setLangType(HttpServletRequest req,
                                    String langtype)

機能

ユーザが使用する言語のISO言語コードを設定します。設定された言語コードがサポート外の場合，例外（IllegalArgumentException）が発生します。

パラメタ

req - サーブレットリクエスト（null以外）

langtype - ISO言語コード（null以外）

戻り値

なし

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

setTimeZone

形式

public static final void setTimeZone(HttpServletRequest req,
                                    String timezone)

機能

ユーザのタイムゾーン（カスタムタイムゾーンID）を設定します。無効なIDを指定した場合，例外（IllegalArgumentException）が発生します。

パラメタ

req - サーブレットリクエスト（null以外）

timezone - カスタムタイムゾーンID（null以外）

戻り値

なし

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

getLocale

形式

public static final Locale getLocale(HttpServletRequest req)

機能

ユーザが表示可能な言語の中で最も優先度の高い言語に対応するロケールを取得します。ユーザがカスタマイズ画面で特定の言語を選択している場合は，その言語に対応するロケールを取得します。ユーザが特定の言語を選択していない場合は，ブラウザで設定されている言語の中で最も優先度が高いものに対応するロケールを取得します。

パラメタ

req - サーブレットリクエスト（null以外）

戻り値

ユーザが表示可能な言語の中で最も優先度の高い言語に対応するロケール

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

getLocales

形式

public static final Enumeration getLocales(HttpServletRequest req)

機能

ユーザが表示可能なロケールを次のルールで決定し，該当するロケールの配列を取得します。

ユーザがカスタマイズ画面で特定の言語を選択している場合は，その言語に対応するロケール一つだけが格納された配列を取得します。

ユーザが特定の言語を選択していない場合は，ブラウザで設定されている言語に対応するロケールが優先度順に格納された配列を取得します。

どちらも設定が行われていない場合は，uCosminexus Portal Frameworkのデフォルトの言語に対応するロケールが格納された配列を取得します。

パラメタ

req - サーブレットリクエスト（null以外）

戻り値

ユーザが表示可能なロケール（java.util.Locale型）が優先度順に格納された配列（Enumeration型）

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

getSupportLocales

形式

public static final Enumeration getSupportLocales()

機能

uCosminexus Portal Frameworkがサポートしているすべての言語に対応するロケールを優先度順に取得します。優先度は，uCosminexus Portal Frameworkのjp.co.hitachi.soft.portal.i18n.supportsプロパティに定義された順になります。

パラメタ

なし

戻り値

uCosminexus Portal Frameworkがサポートしているすべての言語に対応するロケール（java.util.Locale型）が優先度順に格納された配列

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

getSupportLanguagesOrder

形式

public static final Enumeration getSupportLanguagesOrder()

機能

uCosminexus Portal Frameworkがサポートしているすべての言語の文字列表現を優先度順に取得します。優先度は，uCosminexus Portal Frameworkのjp.co.hitachi.soft.portal.i18n.supportsプロパティに定義された順になります。

パラメタ

なし

戻り値

uCosminexus Portal Frameworkがサポートしているすべての言語の文字列表現（String型）が優先度順に格納された配列

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

14.17　ストリングリソース取得API

ストリングリソース取得APIの一覧を次の表に示します。

表14-20　ストリングリソース取得APIの一覧

クラス名 | 説明
jp.co.hitachi.soft.portal.api.util.StringResource | ストリングリソースを取得します。

ストリングリソース取得APIの詳細を説明します。

＜この節の構成＞

jp.co.hitachi.soft.portal.api.util.StringResource

jp.co.hitachi.soft.portal.api.util.StringResource

機能

ストリングリソースを取得するクラスです。

使用方法

getStringResourceメソッドでインスタンスを取得して使用してください。

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
Enumeration | getKeys() | ストリングリソースのキーの一覧を取得します。
String | getString(String key) | ストリングリソースから指定したキーに対する値を取得します。
static final StringResource | getStringResource(HttpServletRequest req,String appkey) | ユーザの使用言語に合わせたストリングリソース（StringResourceクラス）を取得します。
public static final StringResource | getStringResource(java.util.Locale locale, String appkey) | 指定した言語に合わせたストリングリソース（StringResourceクラス）を取得します。

メソッドの説明

getKeys

形式

public Enumeration getKeys()

機能

ストリングリソースファイルからメッセージキーの一覧を取得します。メッセージキーが存在しない場合，要素数0の配列を返却します。このメソッドを呼び出す前に，getStringResource()メソッドでインスタンスを取得してください。

パラメタ

なし

戻り値

ストリングリソース内のキー一覧

例外

なし

getString

形式

public String getString(String key)

機能

ストリングリソースファイルからメッセージを取得します。このメソッドを呼び出す前に，getStringResource()メソッドでインスタンスを取得してください。ストリングリソースファイルに該当するメッセージキーが存在しない場合，nullを戻します。

パラメタ

key - メッセージキー（null以外）

戻り値

ストリングリソースファイルから取得したメッセージ

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

getStringResource(HttpServletRequest req, String appkey)

形式

public static final StringResource getStringResource(HttpServletRequest req,
                        String appkey)

機能

指定したアプリケーションキー，およびユーザの設定言語に対応するStringResourceクラスのインスタンスを取得します。該当するストリングリソースファイルが存在しない場合，およびデフォルト言語のストリングリソースファイルを検索しても取得できなかった場合，例外（MissingResourceException）が発生します。

パラメタ

req - サーブレットリクエスト（null以外）

appkey - アプリケーションキー（null以外）

戻り値

ストリングリソースクラス

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

MissingResourceException - ストリングリソースファイルが見つからない場合

getStringResource(java.util.Locale locale, String appkey)

形式

public static final StringResource
     getStringResource(java.util.Locale locale, String appkey)

機能

指定したアプリケーションキー，およびロケールに対応するStringResourceクラスのインスタンスを取得します。該当するストリングリソースファイルが存在しない場合，およびデフォルト言語のストリングリソースファイルを検索しても取得できなかった場合，例外（MissingResourceException）が発生します。

パラメタ

locale - ロケール（null以外）

appkey - アプリケーションキー（null以外）

戻り値

ストリングリソースクラス

例外

IllegalArgumentException - 入力パラメタがnullまたは不正な場合

MissingResourceException - ストリングリソースファイルが見つからない場合

14.18　ユーザ登録API

ユーザ登録APIは，ポータル利用者自身が，ユーザ情報を登録するときに使用するAPIです。

ユーザ登録APIの一覧を次の表に示します。

表14-21　ユーザ登録APIの一覧

クラス名 | 説明
jp.co.hitachi.soft.portal.api.user.PortalUserAccountBean | ポータル利用者自身が，ユーザ情報を登録します。

ユーザ登録APIの詳細を説明します。

＜この節の構成＞

jp.co.hitachi.soft.portal.api.user.PortalUserAccountBean

jp.co.hitachi.soft.portal.api.user.PortalUserAccountBean

機能

ポータル利用者自身が，ユーザ情報を登録します。

Beanの項目

宣言

<jsp:useBean id="puab"
class="jp.co.hitachi.soft.portal.api.user.PortalUserAccountBean"
scope="request"/>

対象スコープ

request

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
PortalUserAccount | getUserAccount(String userId) | ユーザ情報を取得します。
String[] | searchUser(String key_colmn, String key_value, String target_colmn) | ユーザ情報を検索します。
void | addUserAccount(PortalUserAccount user, String password) | ユーザを新規に登録します。
void | changeUserAccount(PortalUserAccount user) | ユーザ情報を変更します。
void | removeUserAccount(String userId) | ユーザを削除します。
void | changePassword(String userId, String password) | 指定したユーザのパスワードを変更します。

メソッドの説明

getUserAccount

形式

public PortalUserAccount getUserAccount(String userId)

機能

ユーザID（userId）に指定したユーザのアカウント情報を取得します。

パラメタ

userId - リポジトリに登録されているユーザID

戻り値

リポジトリにアクセスできるユーザアカウント情報

例外

IllegalArgumentException - 入力パラメタがnullの場合

PortalException - 次の場合に発生します。

リポジトリからユーザ情報の取得に失敗した場合

対象のユーザ情報がリポジトリに存在しない場合

searchUser

形式

public String[] searchUser(String key_colmn, String key_value, String target_colmn)

機能

検索対象の項目名（key_colmn），検索値（key_value），および取得対象の項目名（target_colmn）を指定して，ユーザ情報を検索します。なお，検索結果が0件の場合は空の配列が戻り値となります。

パラメタ

key_colmn - 検索対象の項目名※

key_value - 検索値（ワイルドカードは指定できない）

target_colmn - 取得対象の項目名※

注※

ユーザ情報のマッピング項目を指定してください。なお，検索対象の項目名と取得対象の項目名のどちらかには，ユニークキー（ユーザ情報のマッピング項目の接続先（構成情報）のキーカラム（属性））にマッピングされた項目を指定する必要があります。ユニークキーにマッピングされた項目以外を指定した場合には，取得カラムの指定は無視され，ユニークキーの値が戻り値となります。

戻り値

取得したカラムの値を格納した配列

例外

IllegalArgumentException - 入力パラメタ（key_colmn，target_colmn）がnullの場合

PortalException - データリソース参照中に障害が発生した場合

addUserAccount

形式

public void addUserAccount(PortalUserAccount user, String password)

機能

ユーザアカウント情報（user）およびパスワード（password）に指定したユーザ情報を，マッピング定義で指定したリポジトリに登録します。

パラメタ

user - 追加対象のユーザアカウント情報

password - 追加対象のユーザのパスワード

戻り値

なし

例外

IllegalArgumentException - 入力パラメタがnullの場合

PortalException - 次の場合に発生します。

データリソース参照中に障害が発生した場合

すでにユーザ情報が存在する場合

changeUserAccount

形式

public void changeUserAccount(PortalUserAccount user)

機能

リポジトリに登録されているユーザアカウント情報を，ユーザアカウント情報（user）に指定した情報に変更します。

パラメタ

user - 変更対象のユーザアカウント情報

戻り値

なし

例外

IllegalArgumentException - 入力パラメタがnullの場合

PortalException - 次の場合に発生します。

リポジトリへの情報の登録，またはリポジトリからの情報の取得に失敗した場合

対象のユーザ情報がリポジトリに存在しない場合

対象ユーザの所属組織に存在しない組織を指定した場合

removeUserAccount

形式

public void removeUserAccount(String userId)

機能

ユーザID（userId）に指定したユーザのアカウント情報を，リポジトリから削除します。

削除処理は，CosminexusのリポジトリとuCosminexus Portal Frameworkのリポジトリの両方に対して実施されます。uCosminexus Portal Frameworkのリポジトリの削除処理では，指定されたユーザIDに対応するユーザアカウント情報が登録されていない場合もエラーにはならないで，処理を続行されます。

パラメタ

userId - 削除対象のユーザID

戻り値

なし

例外

IllegalArgumentException - 入力パラメタがnullの場合

PortalException - 次の場合に発生します。

リポジトリからの情報の削除に失敗した場合

対象のユーザ情報が，すべてのリポジトリ（CosminexusのリポジトリおよびuCosminexus Portal Frameworkのリポジトリ）に存在しない場合

changePassword

形式

public void changePassword(String userId, String password)

機能

ユーザID（userId）に指定したユーザのパスワードを，パスワード（password）に指定した文字列に変更します。

パラメタ

userId - パスワードを変更するユーザのユーザID

password - 変更後のパスワード

戻り値

なし

例外

IllegalArgumentException - 入力パラメタがnullまたは対象のユーザ情報がリポジトリに存在しない場合

PortalException - リポジトリの情報の更新に失敗した場合

14.19　ユーザアカウント情報取得API

ユーザアカウント情報取得APIは，ユーザのアカウント情報を取得，設定するAPIです。

ユーザアカウント情報取得APIの一覧を次の表に示します。

表14-22　ユーザアカウント情報取得APIの一覧

クラス名 | 説明
jp.co.hitachi.soft.portal.om.security.PortalUserAccount | ポータルのユーザアカウント情報を取得，設定します。

ユーザアカウント情報取得APIの詳細を説明します。

＜この節の構成＞

jp.co.hitachi.soft.portal.om.security.PortalUserAccount

jp.co.hitachi.soft.portal.om.security.PortalUserAccount

機能

ポータルのユーザアカウント情報を取得，設定するクラスです。

メソッドの一覧

戻り値のデータ型 | メソッド | 説明
String | getUserName() | ユーザIDを取得します。
String | getDispName() | ユーザ名を取得します。
String[] | getTitle() | 役職名を取得します。
String[] | getOU() | 所属組織IDを取得します。
String[] | getParameter(String key) | ユーザに対する特定のマッピング項目を取得します。
void | setDispName(String name) | ユーザ名を設定します。
void | setTitle(String[] titles) | 役職名を設定します。
void | setOU(String[] ou) | 所属組織IDを設定します。
void | setParameter(String key, String[] value) | ユーザに対する特定のマッピング項目を設定します。

メソッドの説明

getUserName

形式

String getUserName()

機能

ユーザアカウント情報からユーザIDを取得します。

このオブジェクトが持っているキャッシュからユーザIDを取得します。

パラメタ

なし

戻り値

ユーザID

例外

なし

getDispName

形式

String getDispName()

機能

ユーザアカウント情報からユーザ名を取得します。

このオブジェクトが持っているキャッシュからユーザ名を取得します。キャッシュにユーザ名がない場合は，ユーザIDをキーにしてリポジトリから取得します。なお，ユーザ名が設定されていない場合は，ユーザIDが戻り値となります。

パラメタ

なし

戻り値

ユーザ名

例外

なし

getTitle

形式

String[] getTitle()

機能

ユーザアカウント情報からユーザの役職名を取得します。

このオブジェクトが持っているキャッシュから役職名を取得します。キャッシュに役職名がない場合は，ユーザIDをキーにしてリポジトリから取得します。役職名が設定されていない場合，およびマッピング情報の設定で役職が設定されていない場合は，空のリストが戻り値となります。

パラメタ

なし

戻り値

役職名のリスト

例外

なし

getOU

形式

String[] getOU()

機能

ユーザアカウント情報から所属組織ID（ユーザが所属している組織のID）を取得します。

このオブジェクトが持っているキャッシュから所属組織IDを取得します。キャッシュに所属組織IDがない場合は，ユーザIDをキーにしてリポジトリから取得します。所属組織IDは，ユーザが所属している最下位の組織のIDだけを取得し，上位組織のIDは取得しません。ユーザが組織に所属していない場合，およびマッピング情報の設定で組織情報が設定されていない場合は，空のリストが戻り値となります。

パラメタ

なし

戻り値

所属組織ID

例外

なし

getParameter

形式

String[] getParameter(String key)

機能

ユーザアカウント情報から特定のマッピング項目を取得します。

値が一つだけの場合，長さ1のString配列の最初（0番目）に格納されます。

このオブジェクトが持っているキャッシュからマッピング項目を取得します。キャッシュにマッピング項目がない場合は，ユーザIDをキーにしてリポジトリから取得します。リポジトリにユーザ情報または対象データがない場合は，空のリストが戻り値となります。

なお，このオブジェクトの戻り値は，PortalUserAccountオブジェクトのメンバそのものでなく，オブジェクトのコピーとなります。

パラメタ

key - ユーザのマッピング情報のキー項目名

戻り値

キー項目名にマッピングされている値を格納したリスト

例外

IllegalArgumentException - 入力パラメタが次の値の場合に発生します。

null

LOGIN_NAME

NAME

ParsonalizeKey

TITLE

DEPARTMENT

setDispName

形式

void setDispName(String name)

機能

ユーザ名を設定します。

パラメタ

name - ユーザ名

戻り値

なし

例外

なし

setTitle

形式

void setTitle(String[] titles)

機能

役職名を設定します。

パラメタ

titles - 役職名のリスト

戻り値

なし

例外

なし

setOU

形式

void setOU(String[] ou)

機能

所属組織ID（ユーザが所属している組織のID）を設定します。

パラメタ

ou - 所属組織IDのリスト

戻り値

なし

例外

なし

setParameter

形式

void setParameter(String key, String[] value)

機能

ユーザアカウント情報に特定のマッピング項目を設定します。

値が一つだけの場合，長さ1のString配列の最初（0番目）に格納します。

このオブジェクトが持っているキャッシュだけにマッピング項目を設定し，リポジトリには設定しません。

パラメタ

key - 値を格納するキー項目名

value - キー項目名にマッピングする値のリスト

戻り値

なし

例外

IllegalArgumentException - 入力パラメタが次の値の場合に発生します。

null

LOGIN_NAME

NAME

ParsonalizeKey

TITLE

DEPARTMENT

リポジトリ情報ファイルに未定義のキー項目名

14.20　カスタムウィンドウステートAPI

カスタムウィンドウステートAPIは，標準APIポートレットでカスタムウィンドウステートを指定する場合に使用するAPIです。

カスタムウィンドウステートAPIの一覧を次の表に示します。

表14-23　カスタムウィンドウステートAPIの一覧

クラス名 | 説明
jp.co.hitachi.soft.portal.api.UCPFWindowState | javax.portlet.WindowStateクラスにカスタムウィンドウステートを拡張したクラス。

カスタムウィンドウステートAPIの詳細を説明します。

＜この節の構成＞

jp.co.hitachi.soft.portal.api.UCPFWindowState

jp.co.hitachi.soft.portal.api.UCPFWindowState

機能

カスタムウィンドウステートを定義するクラスです。

フィールドの説明

フィールド | 説明
javax.portlet.WindowState NEW_WINDOW | NEWWINDOWステート用のWinwowStateの定義
javax.portlet.WindowState IFRAME | IFRAMEステート用のWindowStateの定義

14.21　拡張Strutsタグライブラリ

拡張StrutsタグライブラリはStrutsタグライブラリにポートレットとして動作させるための属性を追加しています。ここでは，追加される属性を説明します。拡張Strutsタグライブラリの一覧を次の表に示します。

表14-24　拡張Strutsタグライブラリの一覧

タグ名
説明
JSPスクリプトレット式で評価される属性

html:form
ウィンドウステートおよびポートレットモードの指定を追加します。
state，mode

html:link
アクションモードおよびレンダーモードの指定を追加します。
リソースURLの指定を追加します。
ウィンドウステートおよびポートレットモードの指定を追加します。
actionURL，renderURL，resouceURL，state，mode

html:rewrite
アクションモードおよびレンダーモードの指定を追加します。
リソースURLの指定を追加します。
ウィンドウステートおよびポートレットモードの指定を追加します。
actionURL，renderURL，resouceURL，state，mode

＜この節の構成＞

html:form

html:link

html:rewrite

html:form

機能

FORMタグを生成します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/bridges/struts/tags-portlet-html" prefix="html" %>
<html:form action="/html-link-submit" state="maximized" >
フォームデータ
</html:form>

対応する言語

HTML

属性

属性
説明
必須/任意
JSPスクリプトレット式評価

state
標準APIポートレットのウィンドウステートを指定する場合に次の値を設定します。
NORMALステート：normal
MAXIMIZEDステート：maximized
MINIMIZEDステート：minimized
NEWWINDOWステート：newwindow
IFRAMEステート：ifarme
省略した場合は現在のステートが引き継がれます。
任意
○

mode
標準APIポートレットのポートレットモードを指定する場合に次の値を設定します。
VIEWモード：view
HELPモード：help
EDITモード：edit
省略した場合は現在のポートレットモードが引き継がれます。
任意
○

（凡例）

○：JSPスクリプトレット式で評価されます。

html:link

機能

Aタグを生成します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/bridges/struts/tags-portlet-html" prefix="html" %>
<html:link action="/html-link-submit" state="maximized" >
アンカー文字列
</html: link>

対応する言語

HTML

属性

属性
説明
必須/任意
JSPスクリプトレット式評価

actionURL
アクションURLを生成する場合にtrueを設定します。
指定しない場合は属性を省略するかfalseを設定します。
renderURL属性，resourceURL属性と同時に指定した場合は後に設定した属性が有効となります。
任意
○

renderURL
レンダーURLを生成する場合にtrueを設定します。
指定しない場合は属性を省略するかfalseを設定します。
actionURL属性，resourceURL属性と同時に指定した場合は後に設定した属性が有効となります。
任意
○

resouceURL
リソース（画像データなど）用のURLを生成する場合にtrueに設定します。
指定しない場合は属性を省略するかfalseを設定します。
actionURL属性，renderURL属性と同時に指定した場合は後に設定した属性が有効となります。
任意
○

state
標準APIポートレットのウィンドウステートを指定する場合に次の値を設定します。
NORMALステート：normal
MAXIMIZEDステート：maximized
MINIMIZEDステート：minimized
NEWWINDOWステート：newwindowI
FRAMEステート：ifarme
省略した場合は現在のステートが引き継がれます。
任意
○

mode
標準APIポートレットのポートレットモードを指定する場合に次の値を設定します。VIEWモード：view
HELPモード：help
EDITモード：edit
省略した場合は現在のポートレットモードが引き継がれます。
任意
○

（凡例）

○：JSPスクリプトレット式で評価されます。

html:rewrite

機能

URLを生成します。

構文

<%@ taglib uri="http://soft.hitachi.co.jp/portal/bridges/struts/tags-portlet-html" prefix="html" %>
<html:rewrite href="/html-link-submit" state="maximized"/>

対応する言語

HTML

属性

属性
説明
必須/任意
JSPスクリプトレット式評価

actionURL
アクションURLを生成する場合にtrueを設定します。
指定しない場合は属性を省略するかfalseを設定します。
renderURL属性，resourceURL属性と同時に指定した場合は後に設定した属性が有効となります。
任意
○

renderURL
レンダーURLを生成する場合にtrueを設定します。
指定しない場合は属性を省略するかfalseを設定します。
actionURL属性，resourceURL属性と同時に指定した場合は後に設定した属性が有効となります。
任意
○

resouceURL
リソース（画像データなど）用のURLを生成する場合にtrueに設定します。
指定しない場合は属性を省略するかfalseを設定します。
actionURL属性，renderURL属性と同時に指定した場合は後に設定した属性が有効となります。
任意
○

state
標準APIポートレットのウィンドウステートを指定する場合に次の値を設定します。
NORMALステート：normal
MAXIMIZEDステート：maximized
MINIMIZEDステート：minimized
NEWWINDOWステート：newwindow
IFRAMEステート：ifarme
省略した場合は現在のステートが引き継がれます。
任意
○

mode
標準APIポートレットのポートレットモードを指定する場合に次の値を設定します。
VIEWモード：view
HELPモード：help
EDITモード：edit
省略した場合は現在のポートレットモードが引き継がれます。
任意
○

（凡例）

○：JSPスクリプトレット式で評価されます。

付録

＜この付録の構成＞

付録A　ポートレットのサンプル

付録B　セルフユーザ登録のサンプルポートレット

付録C　各バージョンの変更内容

付録D　このマニュアルの参考情報

付録E　用語解説

付録A　ポートレットのサンプル

uCosminexus Portal Frameworkでは，JSPやサーブレットなどのJavaの技術やHTMLなどのWebの技術を用いて独自のポートレット（日立APIポートレット）を作成できます。ここでは，uCosminexus Portal Frameworkで作成できるポートレットの開発例について説明します。

なお，このマニュアルに記載されているサンプルは，ポートレットの作成例を示すために作成されたものです。実際の業務での利用に際してはセキュリティや性能を考慮した処理の作り込みを行ってください。

＜この節の構成＞

付録A.1　Hello Worldポートレット

付録A.2　ハイパーリンクの作成

付録A.3　アトリビュート操作

付録A.4　ログインログアウトの処理

付録A.5　ユーザごとにパーソナライズするポートレット

付録A.6　キャッシュを使用したポートレット

付録A.7　ログを出力するポートレット

付録A.8　XSLTを用いたポートレット

付録A.9　統合ユーザ管理フレームワークとの連携

付録A.10　シングルサインオンのためのポートレット

付録A.11　フレームを使用したポートレット

付録A.12　セキュアなポートレットの開発

付録A.13　バックエンドシステム連携

付録A.14　ファイルをアップロードするポートレット

付録A.15　プッシュ型ポートレット

付録A.16　プラグインモジュールと連携するポートレット

付録A.1　Hello Worldポートレット

日立APIポートレットのサンプルとして，［Hello World］ポートレットの例を次に示します。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<H1>Hello World</H1>

ポータル画面で表示される［Hello World］ポートレットを次の図に示します。

図A-1　［Hello World］ポートレット

付録A.2　ハイパーリンクの作成

ポータル画面内で画面遷移する日立APIポートレットを作成するには，ポートレットユティリティタグライブラリまたはポートレットユティリティクラスライブラリを使用します。ポートレットユティリティタグライブラリの詳細は，「14.2　ポートレットユティリティタグライブラリ」を，ポートレットユティリティクラスライブラリの詳細は，「14.4　ポートレットユティリティクラスライブラリ」を参照してください。

ポートレットユティリティタグライブラリの使用例として，検索ポートレットのサンプルを次に示します。このサンプルでは，トップページに検索キー入力画面を表示して，検索結果を出力します。

{PROJECT_HOME}/portlets/search/index.jsp

<%@ page contentType="text/html;  charset=Shift_JIS" %>
<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>

検索キーワードを入力してください。
<uu:form action ="search.jsp" accept_charset="Shift_JIS">
  <label><input type="text" name="hptl_user_search_key"><label><br>
  <input type="submit" value="検索">
</uu:form>

{PROJECT_HOME}/portlets/search/search.jsp

<%@ page contentType="text/html;  charset=Shift_JIS" %>
<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>

<% String key=new String(request.getParameter("hptl_user_search_key").getBytes("8859_1"), "Windows-31J");
検索処理;
%>
<p>
キーワード：<%= key %><br>
<!--検索結果-->
...
</p>
<uu:a href="index.jsp">検索画面に戻る</uu:a>

付録A.3　アトリビュート操作

uCosminexus Portal Frameworkおよびポートレットは同一のサーブレット空間で動作します。そのため，HttpSessionおよびServletContextに設定するアトリビュート名は，すべてのポートレットで共有します。

ポートレット間で異なるアトリビュート名を指定するには，ポートレットユティリティクラスライブラリのPortletUtils#getNamespaceを使用してアトリビュート名を修飾する必要があります。PortletUtilsクラスの詳細は「14.4　ポートレットユティリティクラスライブラリ」を参照してください。また，アトリビュート名のプレフィックスとして"jp.co.hitachi.soft.portal"，"turbine"，"jetspeed"は使用できません。

アトリビュート設定と取得方法を次の表に示します。

表A-1　アトリビュート設定と取得方法

アトリビュート格納先 | スコープ | ポートレット開発者の対応
PageContext | page | JSPページ単位なので，ポートレットとしての対応は必要ありません。
ServletRequest | request | ポートレットで設定されたアトリビュートはポートレットを戻したあとに削除されます。ポートレット内でユニークなネームスペースが保証されるのでポートレットとしての対応は必要ありません。
HttpSession | session | PortletUtils#getNamespaceでユニークなネームスペースを取得してアトリビュート名を修飾します。
ServletContext | application | PortletUtils#getNamespaceでユニークなネームスペースを取得してアトリビュート名を修飾します。

JSPのjsp:useBeanアクションでスコープ属性がsessionおよびapplicationのBeanは，それぞれHttpSessionおよびServletContextにアトリビュートとして格納されます。そのため，該当するjsp:useBeanアクションは，ネームスペースを設定するようにスクリプトレットに置き換える必要があります。

アトリビュート操作の例を次に示します。

アトリビュート設定

String msg = "Hello";
String namespace = PortletUtils.getNamespace(request, response);
session.setAttribute(namespace+"アトリビュート名", msg);

アトリビュート取得

String namespace = PortletUtils.getNamespace(request, response);
String msg = (String)session.getAttribute(namespace+"アトリビュート名");

付録A.4　ログインログアウトの処理

ログインおよびログアウト処理のサンプルを示します。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletUtils" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %>
<%!
 class SessionListener implements HttpSessionBindingListener {
   public void valueBound(HttpSessionBindingEvent e) {
     // ログイン時の処理を記述。
   }
   public void valueUnbound(HttpSessionBindingEvent e) {
     // ログアウト時の処理を記述。
   }
 }
%>
<%
 String ns = PortletUtils.getNamespace(request, response);
 SessionListener sl = (SessionListener)session.getAttribute(ns+"sl");

 if (sl == null) { // 初回アクセス時にセッションリスナを登録
   session.setAttribute(ns+"sl", new SessionListener());
 }
%>
<jsp:useBean id="pInfo" scope="page"
class="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean"/>
<%
 pInfo.initBean(request);
 PortletInfoBean.Mode mode = pInfo.getMode();
 if (mode == PortletInfoBean.Mode.DEFAULT) {
   //サマリ画面
 } else if (mode == PortletInfoBean.Mode.MAXIMIZE) {
   // 最大化画面
 } else {
   // エラー画面
 }
%>

付録A.5　ユーザごとにパーソナライズするポートレット

ユーザごとにパーソナライズするポートレットを開発するには，ユーザ情報取得Beanを使用します。ユーザ情報取得Beanの詳細は，「14.6　ユーザ情報取得Bean」を参照してください。ユーザごとにパーソナライズするには，リポジトリの設定が必要です。必要な設定については，マニュアル「uCosminexus Portal Framework　システム管理者ガイド」の「ユーザ管理情報の検討」の説明を参照してください。

パーソナライズ情報は，リポジトリに保管されます。そのため，パーソナライズ情報はシリアライズできるオブジェクトに限られます。

パーソナライズするポートレットでは，編集画面を使用します。編集画面の遷移を次の図に示します。

図A-2　編集画面の遷移

ポータル全体で編集画面のインタフェースを統一するため，ポートレットの編集画面では，次の表に示すボタンおよび動作を実装します。

表A-2　ポートレットの編集画面でのボタンおよび動作

ボタン | 必須 | 動作
適用 | ○ | パーソナライズ情報を更新して，再度編集画面を表示します。
戻る | ○ | パーソナライズ情報を更新しないでパーソナライズを終了します。終了後は，ポートレットのサマリ画面を表示します。
標準に戻す | × | システム管理者が設定した内容またはポートレットの初期設定に戻して，再度編集画面を表示します。

（凡例）

○：必須

×：任意

パーソナライズするポートレットのサンプルを次に示します。

このサンプルには，メイン（main.jsp），サマリ（summary.jsp），コントローラ（controller.jsp），およびエディタ（edit.jsp）のファイルがあります。メインおよびサマリは，それぞれメイン画面用およびサマリ画面用のファイルです。コントローラは，ログインチェック，ロジックの呼び出し，および画面モードに応じてViewを呼び出します。エディタは，パーソナライズの結果を保存したり，編集画面を作成したりします。

＜この項の構成＞

(1)　コントローラ（controller.jsp）

(2)　エディタ（edit.jsp）

(1)　コントローラ（controller.jsp）

{PROJECT_HOME}¥portlets¥customize¥controller.jsp

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %>
<%@ page import="jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean" %>
<%
 String uri = "error.jsp";
 try {
   PortletInfoBean pInfo = new PortletInfoBean();
   pInfo.initBean(request);

   PortalUserInfoBean userInfo = new PortalUserInfoBean();
   userInfo.setRequest(request);

   // ログイン済みかチェック
   if (userInfo.checkLoggedIn()) {
     PortletInfoBean.Mode mode = pInfo.getMode();

     if (mode == PortletInfoBean.Mode.DEFAULT) {
       // ここにサマリ画面用業務ロジック呼び出しを追加する

       uri = "summary.jsp";
     } else if (mode == PortletInfoBean.Mode.MAXIMIZE) {
       // ここに最大化画面用の業務ロジック呼び出し追加する

       uri = "main.jsp";
     } else if (mode == PortletInfoBean.Mode.EDIT) {
       uri = "edit.jsp";
     }
   }
 } catch (Exception ioe) {
   // エラーメッセージ出力
   uri = "error.jsp";
 }
%>
<!-- includeを用いたビューの呼び出し -->
<jsp:include page="<%= uri %>" flush="true"/>

(2)　エディタ（edit.jsp）

{PROJECT_HOME}¥portlets¥customize¥edit.jsp

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean" %>
<%@ taglib uri="http://soft.hitachi.co.jp/portal/standard" prefix="portal" %>
<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<%
 String def1 = "default1";  String def2 = "defautl2";
 String prop1, prop2;  // プロパティ
 PortalUserInfoBean userInfo = new PortalUserInfoBean();
 userInfo.setRequest(request);

 // 編集情報保存処理
 String editType = request.getParameter("edittype");
 // サイトのエンコーディングがShift_JISの場合，次の処理を行う。
 editType = new String(editType.getBytes("iso-8859-1"),"Windows-31J");
 if ("apply".equals(editType)) {
   // 適用ボタンの処理(POSTデータを参照し変更を適用)
   prop1 = request.getParameter("prop1");
   prop2 = request.getParameter("prop2");
   userInfo.setCustomizeInfo("prop1", prop1);  userInfo.setCustomizeInfo("prop2", prop2);
 } else if ("restore".equals(editType)) {
   // デフォルトボタン(初期値に変更)
   prop1 = def1;                               prop2 = def2;
   userInfo.setCustomizeInfo("prop1", prop1);  userInfo.setCustomizeInfo("prop2", prop2);
 } else {
   prop1 = (String)userInfo.getCustomizeInfo("prop1");
   prop2 = (String)userInfo.getCustomizeInfo("prop2");
   if (prop1 == null) { prop1 = def1; }
   if (prop2 == null) { prop2 = def2; }
 }
%>
<script type="text/JavaScript">
<!--
 function returnHome() {
   document.location = "<portal:uriLookup type="Home" />";
 }
 function restore() {
   document.editForm.edittype.value = "restore";
   document.editForm.mysubmit.click();
 }
-->
</script>
<!-- コントローラ経由でPOSTする -->
<uu:form name="editForm" action="controller.jsp" method="POST">
プロパティ１ <input type="text" name="prop1" value="<%= prop1 %>"> <br>
プロパティ２ <input type="text" name="prop2" value="<%= prop2 %>"> <br>
<p>
<input type="hidden" name="edittype" value="apply">
<input type="submit" value="適用" name="mysubmit">
<input type="button" value="戻る" onclick="returnHome()">
<input type="button" value="標準に戻す" onclick="restore()">
</p>
</uu:form>

付録A.6　キャッシュを使用したポートレット

ポータルのスループットやレスポンスタイムの向上には，キャッシュの使用が有効です。

ポートレットでキャッシュを使用するには，タグライブラリを使用します。ユーザのセッション単位で，一定期間ごとにキャッシングできます。タグライブラリの詳細は，「14.2　ポートレットユティリティタグライブラリ」を参照してください。

次にキャッシュを使用したポートレットを示します。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="http://soft.hitachi.co.jp/portal/utils" prefix="ut" %>

<%
 String nameSpace = PortletUtils.getNamespace(request, response);
 String cacheKey = nameSpace + "key1";
%>
<ut:cache name=<%= cacheKey %> time="10" scope="session">
<%
  // キャッシングするコンテンツ
%>
</ut:cache>

付録A.7　ログを出力するポートレット

ログ出力Beanを使用して，ログを出力するポートレットを開発できます。ポートレットログの出力レベルによって，出力されるログの種類が異なります。出力レベルはデフォルトでは0が設定されています。ログ出力Beanの詳細は，「14.7　ログ出力Bean」を参照してください。

ポートレットログの出力レベルと出力されるログの内容を次の表に示します。

表A-3　ポートレットログの出力レベルと出力されるログの内容

出力レベル | 出力されるログ | 内容
0 | error，printStackTrace | 通常運用でのトレースレベルです。
10 | warn | 監視対象を必要とするトレースレベルです。プログラムの実行性能に影響を与えない範囲で出力します。
20 | note | 障害調査時に設定するトレースレベルです。プログラムの動作シーケンスを把握できる内容を出力します。
30 | debug | 障害調査時に設定するトレースレベルです。プログラムの動作が完全に把握できる内容を出力します。

ログ出力Beanのメソッドは，次の方針に従って使用します。方針に従わない場合，必要なログが得られない，または大量のログが出力されるなどの問題が起きるので注意してください。

errorおよびprintStackTrace

ポートレットの起動・終了のメッセージ，および業務に支障があるエラーメッセージを出力します。トランジェントオブジェクトの起動や終了のメッセージはこのレベルでは出力しません。

warn

主要なリクエストをトレースし，システムの大まかな動きが把握できるレベルのトレースを出力します。発生頻度の低い障害の再発監視や本番前の現地テストへの適用を想定しています。トレースの出力量をシステムの性能に影響を与えない範囲に抑える必要があります。

note

再現性のある障害に対し，障害の部位を明確に分類するために使用します。ほかのプロセスとの通信など，ほかのプログラムとの関連を把握するのに十分な情報，およびプログラムの大体の動作を把握できるトレース情報を出力します。

debug

障害の個所を特定するために使用します。主要なメンバ関数の開始や終了が取得およびトレースできる内容を出力する必要があります。

ログを出力するポートレットの例を次に示します。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %>
<%@ page import="jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean" %>
<%@ page import="jp.co.hitachi.soft.portal.api.log.PortletLog" %>
<%
 String uri = "error.jsp";
 PortletLog logger = new PortletLog();

 try {
   logger.setApplication("logging");

   PortletInfoBean pInfo = new PortletInfoBean();
   pInfo.initBean(request);

   PortalUserInfoBean userInfo = new PortalUserInfoBean();
   userInfo.setRequest(request);

   // ログイン済みかチェック
   if (userInfo.checkLoggedIn()) {
     PortletInfoBean.Mode mode = pInfo.getMode();

     if (mode == PortletInfoBean.Mode.DEFAULT) {
       logger.note("CALL logic1");
       // ここにサマリ画面用業務ロジック呼び出しを追加する
       logger.note("RET logic1");

       uri = "summary.jsp";
     } else if (mode == PortletInfoBean.Mode.MAXIMIZE) {
       logger.note("CALL logic2");

       // ここに最大化画面用の業務ロジック呼び出し追加する
       logger.note("RET logic2");
       uri = "main.jsp";
     }
   }
 } catch (Exception e) {
   // エラーメッセージ出力
   logger.error("Error occured", e);
   uri = "error.jsp";
 }
%>
<!-- includeを用いたビューの呼び出し -->
<jsp:include page="<%= uri %>" flush="true"/>

付録A.8　XSLTを用いたポートレット

XSLTスタイルシートを介して，XMLデータをポータルに取り込めます。

XMLデータの取り込みを次の図に示します。

図A-3　XMLデータの取り込み

アクセスするクライアントに応じて，XMLデータを変換します。また，UserAgent情報取得Beanを使用すると，アクセスしてきたクライアントに応じて，XSLTスタイルシートを変更できます。UserAgent情報取得Beanの詳細は，「14.8　UserAgent情報取得Bean」を参照してください。

XSLTスタイルシートは，次のディレクトリに格納します。

{PROJECT_HOME}¥portlets¥ポートレット名¥PORTLET-INF¥xslt

日立APIポートレットでは，<ut:convert>タグライブラリ内に，XMLデータを記述します。また，<ut:convert>のxslt属性には，XSLTスタイルシート名を指定します。タグライブラリの詳細は，「14.2　ポートレットユティリティタグライブラリ」を参照してください。

XSLTを用いたポートレットのサンプルを次に示します。このサンプルでは，ユーザに割り当てられた仕事一覧を表示します。データベースなどから，仕事一覧をXMLデータとして取得します。XSLTスタイルシートを使用して，クライアントがPCの場合はテーブルで，携帯電話（ｉモード，およびEZweb）の場合はリストで表示します。また，XMLデータの取得および<ut:convert>タグライブラリでは，<ut:cache>タグライブラリを使用して，60分ごとにデータを更新します。

＜この項の構成＞

(1)　日立APIポートレットの例

(2)　XMLデータ

(3)　PC用XSLTスタイルシート

(4)　iモード用XSLTスタイルシート

(1)　日立APIポートレットの例

日立APIポートレットでXMLデータを取り込む例を次に示します。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletUtils" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %>
<%@ page import="jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean" %>
<jsp:useBean id="useragentInfo" scope="session"
            class="jp.co.hitachi.soft.portal.portlet.beans.UserAgentInfoBean" />
<%@ taglib uri="http://soft.hitachi.co.jp/portal/utils" prefix="ut" %>
<%
 String ns = PortletUtils.getNamespace(request, response);
 String xslt;
 try {
   PortalUserInfoBean userInfo = new PortalUserInfoBean();
   userInfo.setRequest(request);

   useragentInfo.initBean(request);
   if (useragentInfo.getUserAgentGroup().equals("PCBrowser")) {
     xslt = "table.xsl";  // PCはtable形式で出力
   } else {
     xslt = "list.xsl";  // PC以外はlist形式で出力
   }

   // ログイン済みかチェック
   if (userInfo.checkLoggedIn()) {
     PortletInfoBean pInfo = new PortletInfoBean();
     pInfo.initBean(request);
     PortletInfoBean.Mode mode = pInfo.getMode();
     if (mode == PortletInfoBean.Mode.DEFAULT ||
         mode == PortletInfoBean.Mode.MAXIMIZE) {
       String cacheKey = ns+"key";
%>
<ut:cache name="<%= cacheKey %>" time="60" scope="session">
 <ut:convert xslt="<%= xslt %>">
   <!-- XMLデータ(ログインユーザの仕事一覧)読み込み処理 -->
 </ut:convert>
</ut:cache>
<%
     } else { throw new Exception("未サポートの画面モード"); }
   } else { throw new Exception("ログインが必要です"); }
 } catch (Exception e) {
     // エラー出力
 }
%>　

(2)　XMLデータ

XMLデータの例として，ユーザに割り当てられた仕事一覧を示します。

<task-list>
 <item>
   <title>提案書作成</title>
   <deadline>2002/04/01</deadline>
   <priority>高</priority>
   <detail>http://mytask/task.cgi?id=11111</detail>
 </item>

 <item>
   <title>営業方針検討資料作成</title>
   <deadline>2002/04/11</deadline>
   <priority>標準</priority>
   <detail>http://mytask/task.cgi?id=12111</detail>
 </item>
</task-list>

(3)　PC用XSLTスタイルシート

PC用に，テーブルに変換するXSLTスタイルシートの例を次に示します。

{PROJECT_HOME}¥portlets¥weather¥xslt¥table.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html" encoding="Shift_JIS"/>

 <xsl:template match="//task-list">
   <table border="1">
   <tr><th>タイトル</th><th>期限</th><th>優先度</th></tr>
   <xsl:for-each select="item">
     <tr>
     <td><a href="{detail}"><xsl:value-of select="title"/></a></td>
     <td><xsl:value-of select="deadline"/></td>
     <td><xsl:value-of select="priority"/></td>
     </tr>
   </xsl:for-each>
   </table>
 </xsl:template>
</xsl:stylesheet>

(4)　iモード用XSLTスタイルシート

iモード用に，リストに変換するXSLTスタイルシートの例を次に示します。

{PROJECT_HOME}¥portlets¥weather¥xslt¥list.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html" encoding="Shift_JIS"/>

 <xsl:template match="//task-list">
   <ol>
   <xsl:for-each select="item">
     <li>
       <xsl:variable name="number"><xsl:number/></xsl:variable>
       <a href="{detail}" accesskey="{$number}">
         <xsl:value-of select="title"/></a>
       (<xsl:value-of select="deadline"/>)
     </li>
   </xsl:for-each>
   </ol>
 </xsl:template>
</xsl:stylesheet>

付録A.9　統合ユーザ管理フレームワークとの連携

日立APIポートレット内で統合ユーザ管理フレームワークのJSPタグライブラリを使用できます。統合ユーザ管理フレームワークのJSPタグライブラリについては，マニュアル「Cosminexus　アプリケーションサーバ V8　リファレンス　API編」，またはマニュアル「Cosminexus V9　アプリケーションサーバ　リファレンス　API編」の「統合ユーザ管理フレームワークで使用するタグライブラリ」の説明を参照してください。

ユーザ属性取得のサンプルコードを次に示します。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="http://cosminexus.com/admin/auth/uatags" prefix="ua" %>

<ua:attributeEntries id="ae">
 <ua:attributeEntry attrName="cn" alias="fullname" />
</ua:attributeEntries>

<!-- 画面表示 -->
<ua:login id="lc" entry="RealmA" attrEntName="ae" excepId="ex" />
こんにちは<ua:getAttribute name="lc" attrName="fullname" />(<ua:getPrincipalName name="lc" />)さん。
<ua:logout name="lc" />

<!-- 例外の処理 -->
<ua:exception name="ex" type="java.lang.Exception">
Exception例外が発生しました:<br />
<%= ex.toString() %><hr />
</ua:exception>

付録A.10　シングルサインオンのためのポートレット

この例では，統合ユーザ管理フレームワークの提供の機能を利用して，メールサーバにシングルサインオンするポートレットを示します。

＜この項の構成＞

(1)　カスタムログインモジュールの作成

(2)　日立APIポートレット

(3)　ポートレットを動作させるための設定

(1)　カスタムログインモジュールの作成

まず，メールサーバとのシングルサインオンを実現するために，メールサーバと認証するカスタムログインモジュールを作成します。カスタムログインモジュールでは，sharedStateオブジェクトから，ユーザIDとパスワードを取得して認証します。次の二つのファイルを作成します。

ファイル1

package mail;

import java.security.Principal;
import java.io.Serializable;

public class MailPrincipal implements Principal, Serializable
{
 private String name;

 public MailPrincipal(String name) {
   if (name == null) throw new NullPointerException();
   this.name = name;
 }
 public String getName() { return name; }
 public String toString() { return getName(); }
 public boolean equals(Object o) {
   if (o == null) return false;
   if (this == o) return true;
   if (!(o instanceof MailPrincipal)) return false;
   MailPrincipal rhs = (MailPrincipal)o;
   if (getName().equals(rhs.getName())) return true;
   return false;
 }
 public int hashCode() { return getName().hashCode(); }
}

ファイル2

package mail.login;

import com.cosminexus.admin.auth.*;

import javax.security.auth.*;
import javax.security.auth.login.*;
import javax.security.auth.callback.*;
import javax.security.auth.spi.*;
import java.text.*;
import java.util.*;
import javax.mail.*;
import java.util.Properties;

import mail.MailPrincipal;

public class MailLoginModule implements LoginModule {
   private Subject subject;
   private CallbackHandler callbackHandler;
   private Map sharedState;
   private Map options;

   private static final String USER_HOST_OPT = "mail.login.host";
   private static final String USER_PROV_OPT = "mail.login.provider";

   private static final String USERNAME = "mail.login.username";
   private static final String PASSWORD = "mail.login.password";

   private static final String DEFAULT_PROV = "imap";

   private static final String MSG_USERNOTFOUND = "user not found!";
   private static final String MSG_NOHOSTOPT = "not host option!";

   private boolean commitSucceeded = false;

   private Store store;
   private String username;

   public void initialize(
       Subject subject,
       CallbackHandler callbackHandler,
       Map sharedState,
       Map options)
   {
       this.subject = subject;
       this.callbackHandler = callbackHandler;
       this.sharedState = sharedState;
       this.options = options;
   }

   public boolean login()
       throws LoginException
   {
       // get user-name & password
       this.username = (String)this.sharedState.get(USERNAME);
       if (username == null) throw new LoginException(MSG_USERNOTFOUND);
       String password = (String)this.sharedState.get(PASSWORD);

       // option check
       String host = (String)this.options.get(USER_HOST_OPT);
       if (host == null || host.length()==0) throw new LoginException(MSG_NOHOSTOPT);

       String provider = (String)this.options.get(USER_PROV_OPT);
       if (provider == null ) provider = DEFAULT_PROV;

       // login
       Properties props = new Properties();
       Session session = Session.getInstance(props, null);
       try {
           store = session.getStore(provider);
           store.connect(host, username, password);
       } catch(Exception ex) {
           throw new LoginException(ex.toString());
       }
       return true;
   }

   public boolean commit() throws LoginException {
       this.subject.getPrincipals().add( new MailPrincipal(this.username) );
       this.subject.getPublicCredentials().add( this.store );
       return this.commitSucceeded = true;
   }

   public boolean abort() throws LoginException {
       try {
           if (store != null) store.close();
       } catch(MessagingException ex) {
           // Disregard
       }
       if (this.commitSucceeded) {
           logout();
       }
       return true;
   }

   public boolean logout() throws LoginException {
       try {
           if (store != null) store.close();
       } catch(MessagingException ex) {
           // Disregard
       }
       this.commitSucceeded = false;
       return true;
   }
}

(2)　日立APIポートレット

次に，メール情報を表示する日立APIポートレットを作成します。このポートレットでは，ログインに成功したあと，subjectからメール情報を取得しています。メール情報を表示するポートレットのサンプルコードを次に示します。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="http://cosminexus.com/admin/auth/uatags" prefix="ua" %>
<%@ page import="com.cosminexus.admin.auth.*" %>
<%@ page import="com.cosminexus.admin.auth.sso.callback.*" %>
<%@ page import="javax.security.auth.*" %>
<%@ page import="javax.security.auth.login.*" %>
<%@ page import="java.security.*" %>
<%@ page import="javax.mail.*" %>
<%@ page import="java.util.Properties" %>

<%
 LoginContext lc = null;
 try {
   WebSSOHandler h =
     new WebSSOHandler(request, response, null);
   lc = new LoginContext("Mail", h);
   lc.login();
 }
 catch (LoginException e) {
   out.println("Mailへのログインに失敗しました。");
   return;
 }
 catch (Exception e) {
   out.println("Mailへのログインで障害が発生しました。");
   return;
 }

 try {
     Subject subject = lc.getSubject();
     Principal principal = (Principal)subject.getPrincipals().
       iterator().next();
     String mailid = principal.getName();
     Store store =
       (Store)subject.getPublicCredentials().iterator().next();
     out.println("メールID="+mailid+"<br />");
     Folder folder = null;
     try {
         folder = store.getFolder("INBOX");
         folder.open(Folder.READ_ONLY);

         Message msg[] = folder.getMessages();
         out.println("メール総数="+msg.length+"<br />");
         out.println("<br />");
         if (msg.length == 0) {
             out.println("メールはありません<br />");
         }
         else {
             out.println("メール一覧<br />");
             out.println("<table border>");
             {
                 // 先頭行
                 out.println("<tr>");
                 out.println(
                    "<th><font size=¥"4¥">項番</th>"
                   +"<th><font size=¥"4¥">送信者</th>"
                   +"<th><font size=¥"4¥">メールタイトル</th>");
                 out.println("</tr>");

                 // メールのタイトル表示
                 int loop = msg.length>10 ? 10 : msg.length;
                 for (int i = 0; i < loop ; ++i) {
                     out.println("<tr>");
                     out.print("<td align=¥"right¥">"+(i+1)+"</td>");
                     Address[] addrs = msg[i].getFrom();
                     String requestName = (addrs != null && addrs.length > 0) ?
                       addrs[0].toString() : "不明";
                     out.print("<td>"+requestName+"</td>");
                     out.print("<td>"+msg[i].getSubject()+"</td>");
                     out.println("</tr>");
                 } // for i
             }
             out.println("</table>");
         }
     }
     catch (Exception e) {
          out.println("Mailの表示中に障害が発生しました。");
          return;
     }
     finally {
         try {
             if (folder != null) folder.close(false);
         }
         catch (MessagingException e) { e.printStackTrace(); }
     }
 }
 finally {
     try {
         lc.logout();
     }
     catch (Exception e) {
       out.println("Mailのログオフに障害が発生しました。");
       return;
     }
 }

%>
<hr />

(3)　ポートレットを動作させるための設定

(2)の日立APIポートレットを動作させるための設定について説明します。

(1)で作成したカスタムログインモジュールをコンパイルして，｛Cosminexusインストールディレクトリ｝¥manager¥modulesに格納する
格納先のディレクトリはユーザ管理コンフィグレーションファイル（ua.conf）のcom.cosminexus.admin.auth.custom.modulesパラメタで変更できます。

JAASコンフィグレーションファイル（jaas.conf）を変更する
作成したカスタムログインモジュールとポータルのログインモジュールを関連づけるためJAASコンフィグレーションファイル変更します。変更例を次に示します。

Portal {
 com.cosminexus.admin.auth.sso.login.WebSSOLoginModule required
   com.cosminexus.admin.auth.realm="Portal"
   com.cosminexus.admin.auth.ldap.r="0"
   com.cosminexus.admin.auth.ldap.w="1"
   ;
};
Mail {
 com.cosminexus.admin.auth.sso.login.WebSSOLoginModule required
   com.cosminexus.admin.auth.sso="MailLM"
   com.cosminexus.admin.auth.realm="Mail"
   mail.login.host="localhost"  /* MailLoginModuleのオプション */
   ;
};

カスタムログインモジュールを統合ユーザ管理に認識させるため，ユーザ管理コンフィグレーションファイル（ua.conf）に次の内容を追記する
追加内容を次に示します。

com.cosminexus.admin.auth.sso.lm.MailLM=mail.login.MailLoginModule
com.cosminexus.admin.auth.sso.param.userid.MailLM=mail.login.username
com.cosminexus.admin.auth.sso.param.secdat.MailLM=mail.login.password

ポータルのユーザとメールのユーザのマッピングをCSVファイルに作成し，ssoimportコマンドで登録する
登録例を次に示します。この例では，ポータルのユーザのuser1は，メールのユーザのmuser1に対応していることを示しています。ポートレットの場合，最初にポータルにログインするため，ポータルのパスワードはマッピング情報に登録する必要がありません。

REALMNAME,USERID,SECRETDATA,PUBLICDATA,LINK_Mail
Portal,user1,,,muser1
Mail,muser1,pass1,,

付録A.11　フレームを使用したポートレット

uCosminexus Portal Frameworkでは，HTMLのテーブル要素を使用して複数のポートレットをポータル画面に統合しています。そのため，Multi Web Portlet以外のポートレット内でFRAMESET要素を直接使用できません。ポートレットでフレームを表示するには，IFRAME要素を使用します。

ポートレットでは，単一のフレームまたは複数のフレームを表示できます。単一のフレームを表示するにはIFRAME要素を使用します。複数のフレームを表示するには，IFRAME内でFRAMESET要素を使用します。

＜この項の構成＞

(1)　単一のフレーム（iframe）

(2)　複数のフレーム（iframe+frameset）

(1)　単一のフレーム（iframe）

単一のフレームを表示するサンプルを次に示します。HTMLでiframeを使用する場合と同様に，iframeを使用できます。

{PROJECT_HOME}¥portlets¥iframe¥index.jsp

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletURI" %>
<%@ page contentType="text/html; charset=Shift_JIS" %>

<uu:iframe src="contents.jsp" width="100%">
IFRAMEをサポートしたWebブラウザを利用願います。
</uu:iframe><br>

{PROJECT_HOME}¥portlets¥iframe¥contents.jsp

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletURI" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                     "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
　<title>Inline Contents</title>
</head>
<body>
<%
 // タグライブラリなどを利用してコンテンツを作成します
%>
</body>
</html>

(2)　複数のフレーム（iframe+frameset）

複数のフレームを表示するサンプルを次に示します。複数のフレームを使用したポートレットは，最大化時だけに使用することを推奨します。

{PROJECT_HOME}¥portlets¥frameset¥index.jsp

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %>
<%
  PortletInfoBean pInfo = new PortletInfoBean();
  pInfo.initBean(request);
  PortletInfoBean.Mode mode = pInfo.getMode();
  if (mode == PortletInfoBean.Mode.DEFAULT) { // サマリ画面作成
    ...
  } else if (mode == PortletInfoBean.Mode.MAXIMIZE) { // 最大化画面作成(frameset)
%>
<uu:iframe src="frameset.jsp" width="100%">
IFRAMEをサポートしたWebブラウザを利用願います。
</uu:iframe><br>
<%
  } else { // エラー画面
    ...
  }
%>

{PROJECT_HOME}¥portlets¥frameset¥frameset.jsp

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<%@ page contentType="text/html; charset=Shift_JIS" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
           "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head><title></title></head>
<frameset cols="20%,80%">
<uu:frame src="navigation.jsp"/>
<uu:frame src="main.jsp"/>
</frameset>
</html>

付録A.12　セキュアなポートレットの開発

通常の日立APIポートレットの登録方法では，ポータルのユーザがURLを直接指定してポートレットおよびインラインオブジェクトにアクセスするおそれがあります。その場合，ポータルにアクセスしたユーザにJSPファイル，およびJSPファイルに含まれるインラインオブジェクトが表示されるおそれがあります。

ポートレットおよびインラインオブジェクトを，セキュリティを考慮してポータルで使用する方法について説明します。

＜この項の構成＞

(1)　アクセス判定するサーブレットの作成

(2)　セキュアなポートレットの設定

(1)　アクセス判定するサーブレットの作成

セキュアなポートレットを作成するには，アクセス判定するサーブレットを作成します。サーブレット内のコードのうち，アクセス判定の基準として，ユーザ情報取得Beanも使用できます。ユーザ情報取得Beanについては，「14.6　ユーザ情報取得Bean」を参照してください。

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean;
import java.net.*;
public class securecontents extends HttpServlet {
   public void doGet(HttpServletRequest req, HttpServletResponse res){
     try{
       ServletOutputStream out = res.getOutputStream();
       String url = req.getParameter("url");
         // サイトのエンコーディングがShift_JISの場合，次の処理を行う。
       url = new String(url.getBytes("iso-8859-1"),"Windows-31J");
       PortalUserInfoBean puibean = new PortalUserInfoBean();
       puibean.setRequest(req);
       String userid = puibean.getUserId();
       if (  アクセス判定 == true ){
           if ( url.endsWith("jsp") ){
               req.getRequestDispatcher(url).forward(req,res);
           }else{
               java.net.URL nurl = getServletContext().getResource(url);
               java.net.URLConnection urlc = nurl.openConnection();
               res.setContentLength(urlc.getContentLength());
               res.setContentType(urlc.getContentType());
               byte  barray[] = new byte[urlc.getContentLength()];
               InputStream is = urlc.getInputStream();
               is.read(barray);
               out.write(barray);
         }
       }else{
               // アクセス拒否の応答を返却する
               res.setStatus(404);
               out.print("access error");
       }
     }catch(Exception e){}
   }
}

(2)　セキュアなポートレットの設定

セキュアなポートレットを作成するには，次の方法があります。

すべてのコンテンツをセキュアにする方法

一部のコンテンツをセキュアにする方法

すべてのコンテンツをセキュアにする場合，セキュリティ強度は上がりますが，Webサーバの負荷も上がります。

環境に応じて，どちらの方法を選択するかを決定します。

(a)　すべてのコンテンツをセキュアにする方法

WebアプリケーションのDD（web.xml）を設定する
web.xmlに次の設定を追加します。

<web-app>
   ...
<security-constraint>
   <web-resource-collection>
       <web-resource-name>Protected Area</web-resource-name>
       <url-pattern>(URL)</url-pattern>
       <http-method>GET</http-method>
       <http-method>POST</http-method>
       <auth-constraint>
           <role-name>dummy</role-name>
       </auth-constraint>
   </web-resource-collection>
</security-constraint>
</web-app>

<url-pattern>(URL)</url-pattern>

(URL)には，ポートレットディレクトリ下のすべてのディレクトリを指定します。

例：/portlets/mailportlet/*

<auth-constraint>

<role-name>には実在しないロールを指定します。

web.xmlの格納場所を次に示します。

｛PROJECT_HOME｝¥WEB-INF

URLの記述形式を変更する
アクセス判定するサーブレット経由でコンテンツを呼び出す設定に変更します。
ポートレットユティリティタグライブラリを用いて画面内遷移しているポートレットは，変更する必要はありません。
セキュアにするコンテンツを参照しているすべてのファイルで，参照先URLを次の形式に変更します。変更後は，ポートレットユティリティタグライブラリは使用できません。
/ SecureContents?url=(URL)
変更例を次に示します。

変更前

<img src="/portlets/mailportlet/images/icon.gif">

変更後

<img src="/SecureContents?url=/portlets/mailportlet/images/icon.gif">

(b)　一部のコンテンツをセキュアにする方法

ディレクトリ構成を次のとおりに作成する
一部のコンテンツをセキュアにするためのディレクトリ構成を次の図に示します。

図A-4　一部のコンテンツをセキュアにするためのディレクトリ構成

WebアプリケーションのDD（web.xml）を設定する
web.xmlに次の設定を追加します。

<web-app>
...
<security-constraint>
   <web-resource-collection>
       <web-resource-name>Protected Area</web-resource-name>
       <url-pattern>(URL)</url-pattern>
       <http-method>GET</http-method>
       <http-method>POST</http-method>
       <auth-constraint>
           <role-name>dummy</role-name>
       </auth-constraint>
   </web-resource-collection>
</security-constraint>
</web-app>

<url-pattern>(URL)</url-pattern>

(URL)には，セキュアにするコンテンツのディレクトリを指定します。

例：/portlets/mailportlet/secure/*

<auth-constraint>

<role-name>には実在しないロールを指定します。

web.xmlの格納場所を次に示します。

｛PROJECT_HOME｝¥WEB-INF

URLの記述形式を変更する
アクセス判定するサーブレット経由でコンテンツを呼び出す設定に変更します。
ポートレットユティリティタグライブラリを用いて画面内遷移しているポートレットは，変更する必要はありません。
セキュアにするコンテンツを参照しているすべてのファイルで，参照先URLを次の形式に変更します。変更後は，ポートレットユティリティタグライブラリは使用できません。
/ SecureContents?url=(URL)
変更例を次に示します。

変更前

<img src="/portlets/mailportlet/images/icon.gif">

変更後

<img src="/SecureContents?url=/portlets/mailportlet/images/icon.gif">

付録A.13　バックエンドシステム連携

バックエンドシステムと連携するポートレットの開発について説明します。ポートレットとバックエンドシステムを連携させる場合，エンドユーザのリクエストのたびにバックエンドにログインして問い合わせる方法（ステートレス）と，バックエンドとのコネクションを保持したまま問い合わせる方法（ステートフル）があります。

＜この項の構成＞

(1)　ステートレス接続

(2)　ステートフル接続

(1)　ステートレス接続

ステートレスな接続の場合，あらかじめ取得しておいたLoginContextからログイン情報を取得し，バックエンドへの問い合わせ，およびログアウトをします。ステートレスな連携の場合，状態を保持しないのでポータルのログアウトやポータルのユーザセッションタイムアウトは意識する必要はありません。

次にサンプルコードを示します。

<%@ page import="javax.security.auth.login.LoginContext" %>
<%@ page import="javax.security.auth.Subject" %>
<%@ page import="javax.security.auth.Principal" %>
<%@ page import="com.cosminexus.admin.auth.callback.WebPasswordHandler" %>
<%@ page import="com.cosminexus.admin.auth.UserAttributes" %>

<%
 /*
 * ユーザID，属性取得処理
 */
 ユーザID，属性取得処理;  

 //  バックエンドシステム問い合わせ
 バックエンドシステムログイン；
 問い合わせ処理；
 バックエンドシステムログアウト；
%>

<!--バックエンドシステムの結果を出力 -->
ポートレットコンテンツ出力

(2)　ステートフル接続

ステートフルな接続の場合，バックエンドとのコネクションを保持しておく必要があります。ポータルのユーザセッションに対応するHttpSessionを利用すると，コネクションを保持できます。ログアウトは，HttpSessionBindingListenerを利用します。HttpSessionBindingListenerを利用すると，ユーザがポータルをログアウトしたタイミングでバックエンドシステムのログアウト処理をします。

MyLoginContextクラスはログイン情報を保持するクラスで，HttpSessionBindingListenerインタフェースを実装しています。また，valueUnboundメソッドでバックエンドシステムのログアウト処理を記述します。valueUnboundメソッドは，MyLoginContextがHttpSessionから削除されるとき，つまり，ログアウトのタイミングで呼び出されます。

次にサンプルコードを示します。

import javax.servlet.http.*;
import javax.security.auth.login.LoginContext;

class MyLoginContext
   implements HttpSessionBindingListener, java.io.Serializable {
 public MyLoginContex(...) {
   ...
 }

 public void valueBound(HttpSessionBindingEvent event) { ... }

 /**
 * ログアウト処理をする。このメソッドはセッションが無効(ユーザログアウト時，
 * セッションタイムアウト時)に呼び出される。
 */
 public void valueUnbound(HttpSessionBindingEvent event) {
   HttpSession event.getSession();
   バックエンドシステムログアウト処理；
 }
}

<%@ page import="javax.security.auth.*" %>
 ...

<%
 if (ログイン必要) {
   LoginContext取得処理;  
   ユーザID，属性取得処理;  
   バックエンドシステムログイン；

   バックエンドシステムとの連携に必要な情報をMyLoginContextに設定；
   HttpSessionにMyLoginContextを格納；
 }
%>

<%
 HttpSessionからログイン情報取得；
 問い合わせ処理；
%>
<!--バックエンドシステムの結果を出力 -->
ポートレットコンテンツ出力

付録A.14　ファイルをアップロードするポートレット

文書管理システムを構築する場合，ファイルをサーバにアップロードする必要があります。ポートレットでは，通常のWebでファイルをアップロードするのと同様に，ファイルをアップロードできます。

ファイルをアップロードするポートレットを次に示します。

{PROJECT_HOME}¥portlets¥fileupload¥index.jsp

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<%@ page contentType="text/html; charset=Shift_JIS" %>
<uu:form action="upload.jsp" enctype="multipart/form-data" method="POST">
アップロードするファイル：<br>
<input type="file" name="Uploaded file">
<input type="submit" value="アップロード">
</uu:form>

{PROJECT_HOME}¥portlets¥fileupload¥upload.jsp

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%
 try {
   String ct = request.getHeader("Content-Type");
   String mimeType = ct.substring(0, ct.indexOf(";")).trim();
   if (mimeType.equals("multipart/form-data")) {
     String boundary = ct.substring(ct.indexOf("boundary=")+9, ct.length());
     // ファイルを取り出して必要な処理をする。
   } else {
     new Exception("Unsupported MIME type");
   }
   // 受け付け画面生成
 } catch (Exception e) {
   // エラー画面生成　　
 }
%>

付録A.15　プッシュ型ポートレット

ポートレットでプッシュ配信するには，プッシュ配信したいコンテンツをiframe内に配置して，配置したコンテンツを，Webブラウザに定期的に更新させるようにします。

ポートレットでプッシュ配信するサンプルを次に示します。このサンプルでは，METAタグのhttp-equiv属性を使用しています。

{PROJECT_HOME}¥portlets¥emergency¥index.jsp

<%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletURI" %>
<%@ page contentType="text/html; charset=Shift_JIS" %>

<uu:iframe src="contents.jsp" width="100%">
IFRAMEをサポートしたWebブラウザを利用願います。
</uu:iframe><br>

{PROJECT_HOME}¥portlets¥emergency¥contents.jsp

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletURI" %>
<html>
<head>
　<title>緊急連絡事項</title>
 <meta http-equiv="refresh" content="600"><!-- 10分置きに更新 -->
</head>
<body>
<%
 // ファイル，DBなどから連絡事項を取得して出力
%>
</body>
</html>

付録A.16　プラグインモジュールと連携するポートレット

Java AppletやMacromedia Flashなど，Webブラウザにロードされるプラグインモジュールと連携するポートレットを作成する方法について説明します。

プラグインモジュールと連携するには，ポートレットのURLが必要です。また，セッションを維持して連携するには，セッションIDが必要です。OBJECTタグのパラメタを使用して，ポートレットのURLやセッションIDをプラグインモジュールに渡すと，プラグインモジュールと連携できます。

ここでは，Macromedia Flashと連携するサンプルを示します。Java Appletの場合は，PARAMタグを使用して，必要な情報を渡せます。それ以外のプラグインモジュールも同じ方法で連携できます。パラメタを引き渡す方法については，各プラグインモジュールのマニュアルを参照してください。

Macromedia Flashと連携するサンプルファイルの構成を次に示します。

サンプルファイルの構成

{PROJECT_HOME}¥portlets¥flash¥index.xml
                            ¥flash.jsp
                            ¥sample.swf　　　FLASHファイル

flash.jspを次に示します。

<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletURI" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletUtils" %>
<%
 String nameSpace = PortletUtils.getNamespace(request, response);
 String flashUrl = (String)session.getAttribute(namespace+"url");
 if (Mode. == DEFAULT || Mode= MAXIMIZED) {
 if (flashUrl == null) {
    String me = PortletURI.transInlineURI(request, response, "");
    String baseUrl = me.substring(0, me.lastIndexOf('/'));
    session.setAttribute(nameSpace+"base", baseUrl);

    Cookie cookies[] = request.getCookies();
    for (int i = 0; i < cookies.length; i++) {
      if (cookies[i].getName().equalsIgnoreCase("jsessionid")) {
         sessionID = cookies[i].getValue();
         break;
      }
    }
    flashUrl = PortletURI.transInlineURI(request, response,
             new StringBuffer(64).append("sample.swf").append("?PortletURL=").append(baseUrl)
                                 .append("&SessionID=").append(sessionID).toString());
    session.setAttribute(nameSpace+"url", flashUrl);
 }
 }
%>
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0"
ID="sample" WIDTH="100" HEIGHT="100">
  <param name="movie" value="<%= flushUrl %>">
</OBJECT>

付録B　セルフユーザ登録のサンプルポートレット

uCosminexus Portal Frameworkでは，ポータル利用者自身が，ユーザ情報を登録して利用するためのサンプルポートレット（セルフユーザ登録ポートレット）を提供しています。

セルフユーザ登録ポートレットでは，次に示す操作が実行できます。

ユーザの新規登録

ユーザ情報の変更

パスワードの変更

セルフユーザ登録ポートレットはそのままでも使用できますが，実際の業務で使用する場合には，必要なユーザ情報の追加や変更，セキュリティや性能を考慮したカスタマイズを行ってください。サンプルポートレットのカスタマイズ方法および登録方法の詳細は，サンプルポートレットの「Readme.txt」を参照してください。

サンプルポートレットおよびサンプルポートレットの「Readme.txt」は，次に示すディレクトリに格納されています。

格納ディレクトリ

{uCosminexus Portal Framework インストールディレクトリ}¥samples¥portlets¥AccountManager

なお，セルフユーザ登録ポートレットでは，セルフユーザ登録ポートレット用APIを使用します。セルフユーザ登録ポートレット用APIの詳細は，「14.18　ユーザ登録API」および「14.19　ユーザアカウント情報取得API」を参照してください。

付録C　各バージョンの変更内容

変更内容(3020-3-H73-40)　uCosminexus Portal Framework　08-70，およびuCosminexus Portal Framework - Light　08-70

追加・変更内容

PortletURIクラスにtransInlineURIExメソッドを追加しました。

変更内容(3020-3-H73-30)　uCosminexus Portal Framework　08-03，およびuCosminexus Portal Framework - Light　08-03

追加・変更内容

PortletURIクラスにtransContextURIメソッドを追加しました。

変更内容(3020-3-H73-20)　uCosminexus Portal Framework　08-02，およびuCosminexus Portal Framework - Light　08-02

追加・変更内容

Webポートレットの作成でiframeタグをサポートするWebブラウザにFirefoxを追加しました。

分散ポートレットの制限事項の記述を修正しました。

クライアントサイドデータ通信対応ポートレットの定義規則（パターン2およびパターン3）の説明を変更しました。

付録D　このマニュアルの参考情報

このマニュアルを読むに当たっての参考情報を示します。

＜この節の構成＞

付録D.1　関連マニュアル

付録D.2　このマニュアルでの表記

付録D.3　英略語

付録D.1　関連マニュアル

関連マニュアルを次に示します。必要に応じてお読みください。

＜uCosminexus Portal Frameworkのマニュアル＞

uCosminexus Portal Frameworkについての，他マニュアルを次に示します。

uCosminexus Portal Framework　システム管理者ガイド（3020-3-H71）

uCosminexus Portal Framework全体の機能概要について説明しています。また，ポータル全体の管理者（システム管理者）が実施する作業（ポータルの構築方法，ポータルのカスタマイズ方法，ポートレットの登録方法，およびポータルの起動方法）について説明しています。

uCosminexus Portal Framework　運用管理者ガイド（3020-3-H72）

ポータルを運用する管理者（運用管理者および部門管理者）が実施する作業（ポータルの運用管理および標準画面レイアウトの作成）について説明しています。

uCosminexus Portal Framework　ユーザーズガイド（3020-3-H74）

エンドユーザがポータルを使用するときの操作方法（ポータルへのログイン方法，ポータル画面のカスタマイズ方法，およびナビゲーションメニューの操作方法）について説明しています。

＜他製品のマニュアル＞

このマニュアルで参照している他製品のマニュアルを次に示します。

Collaboration　導入ガイド（3020-3-H01）

Collaboration製品を導入するための，システム構築，環境設定，および運用方法について説明しています。

Collaboration - Online Community Management　システム管理者ガイド（3020-3-H03）

コミュニティ管理を利用するための環境設定および運用方法について説明しています。

Collaboration - Online Community Management　ユーザーズガイド（3020-3-H04）

コミュニティ管理の機能および操作方法について説明しています。

Cosminexus　アプリケーションサーバ V8　システム構築・運用ガイド　（3020-3-U04）

Cosminexus Version 8のシステムを構築・運用する方法について説明しています。

Cosminexus　アプリケーションサーバ V8　機能解説　拡張編　（3020-3-U08）

Cosminexus Version 8のアプリケーションサーバの機能の詳細について，アプリケーションの実装方法や実行環境で必要な設定などを含めて解説しています。

Cosminexus　アプリケーションサーバ V8　機能解説　運用／監視／連携編　（3020-3-U09）

Cosminexus Version 8のアプリケーションサーバの機能の詳細について，アプリケーションの実装方法や実行環境で必要な設定などを含めて解説しています。

Cosminexus　アプリケーションサーバ V8　リファレンス　API編　（3020-3-U26）

Cosminexus Version 8のアプリケーションの開発で使用するAPIおよびタグについて説明しています。

Cosminexus V9　アプリケーションサーバ　システム構築・運用ガイド　（3020-3-Y02）

Cosminexus Version 9のシステムを構築・運用する方法について説明しています。

Cosminexus V9　アプリケーションサーバ　機能解説　拡張編　（3020-3-Y08）

Cosminexus Version 9のアプリケーションサーバの機能の詳細について，アプリケーションの実装方法や実行環境で必要な設定などを含めて解説しています。

Cosminexus V9　アプリケーションサーバ　機能解説　運用／監視／連携編　（3020-3-Y10）

Cosminexus Version 9のアプリケーションサーバの機能の詳細について，アプリケーションの実装方法や実行環境で必要な設定などを含めて解説しています。

Cosminexus V9　アプリケーションサーバ　リファレンス　API編　（3020-3-Y21）

Cosminexus Version 9のアプリケーションの開発で使用するAPIおよびタグについて説明しています。

付録D.2　このマニュアルでの表記

このマニュアルでは，製品名称を次に示す略称で表記しています。

正式名称 | 略称
Enterprise JavaBeans(TM) | EJB
Java(TM) | Java
Java(TM) 2 Platform, Enterprise Edition | J2EE
Java(TM) 2 Platform, Standard Edition | J2SE
Java(TM) Authentication and Authorization Service | JAAS
Java(TM) Servlet | Servletまたはサーブレット
JavaServer Pages(TM) | JSP

付録D.3　英略語

このマニュアルで使用する主な英略語を次に示します。

英略語 | 説明
API | Application Programming Interface
CHTML | Compact Hypertext Markup Language
DB | Database
DD | Deployment Descriptor
DTD | Document Type Definition
EAR | Enterprise Archive
EUC | Extended UNIX Code
HDML | Handheld Device Markup Language
HTML | Hypertext Markup Language
HTTP | Hypertext Transfer Protocol
ISO | International Organization for Standardization
JAR | Java Archive
JIS | Japan Industrial Standard
JSP | JavaServer Pages
LDAP | Lightweight Directory Access Protocol
MIME | Multipurpose Internet Mail Extension
MVC | Model View Controller
OS | Operating System
PAR | Portlet Application Archive
PC | Personal Computer
RDF | Resource Description Framework
RSS | RDF Site Summary
SGML | Standard Generalized Mark-up Language
SP | Service Pack
SSL | Secure Socket Layer
SSO | Single Sign-On
UCS | Universal multi-octet coded Character Set
URI | Uniform Resource Identifier
URL | Uniform Resource Locator
UTF | UCS Transformation Format
WAR | Web Archive
XML | Extensible Markup Language
XSLT | Extensible Stylesheet Language Transformations

付録E　用語解説

（英字）

DTD（Document Type Definition）

「文書型定義」のことです。SGMLやXMLで文書を記述する際，その文書中でどのようなタグや属性が使われているかを定義したものです。

Fileポートレット

HTML，CHTML，HDMLのどれかで記述されたコンテンツを，ポータル画面に表示するためのポートレットです。

LDAP（Lightweight Directory Access Protocol）

ディレクトリサーバにアクセスするための通信プロトコルです。

RSS（RDF Site Summary）

RSSはRDF形式で記述したWebサイトのコンテンツを要約したファイルです。XMLで記述されています。なお，RDFはWebページでコンテンツの構成を記述するためのメタデータの規格です。

SSO（Single Sign-On）

ユーザが一度認証を受けるだけで，許可されているすべての機能を利用できるようになるシステムです。

UserAgent

アクセス端末ごとの識別情報です。

Webコンテナ

uCosminexus Application ServerのWebコンテナ機能を指します。WebコンテナはJSPおよびサーブレットを実行します。

Webコンテンツポートレット

外部のWebサーバからコンテンツを取得し，ポータル画面に表示するためのポートレットです。取得したデータは，あらかじめ設定した抽出方法やソート方法などに従って加工して表示されます。取得できるコンテンツは，HTML，RSS，またはXMLで記述されたページです。

Webポートレット

HTMLで記述されたWebページをポータルに取り込み，ポータル画面に表示するためのポートレットです。ポータルプロジェクト内のローカルコンテンツ，および外部のWebサーバのコンテンツをポータルに統合できます。

（ア行）

アプリケーションキー

ストリングリソースを区別するためのキーのことです。

インラインオブジェクト

HTMLファイルなどのコンテンツ中に含まれる画像などのことです。

ウェルカム画面

ポータルに最初にアクセスしたときに表示される画面（ログイン前の画面）です。ポータルユーザ全員に知らせたい情報などを表示します。

運用管理者

ポータルの運用を管理する権限を持つユーザです。システム管理者によって任命されます。運用管理ポートレットを使用して，ポータルの運用管理に必要なすべての情報（ポータル管理グループ，ポートレット，および画面レイアウト）を設定できます。

また，ほかのユーザを「部門管理者」に任命して，運用管理権限の一部を委譲できます。

運用管理ポートレット

運用管理者がポータルを運用管理するためのポートレットです。日立APIポートレットにより作成されます。

エリア

拡張レイアウト形式の，ポートレットを配置する一つの行または列のことです。エリアには，ユーザがポートレットの配置を変更できる変更可能エリアと，配置を変更できない変更不可エリアがあります。変更不可エリアのポートレットの配置を変更できるのは，運用管理者と部門管理者だけです。

（カ行）

拡張レイアウト形式

行列形式を組み合わせてポートレットを表示できるレイアウト形式です。拡張レイアウト形式では，例えば，行の中に列を入れ子にするなど，より複雑にポートレットを配置できます。また，ユーザがポートレットの配置を変更できるかどうかを，ポートレットを配置する一つの行または列（エリア）ごとに設定できます。

カスタマイズ

ログインしたあとに表示される標準のポータル画面のコンテンツやレイアウトを，ユーザごとに変更することです。

カスタムポートレット

JSPやサーブレットの技術を用いて独自に作成したコンテンツを，ポータル画面に表示するためのポートレットです。動的なページを作成したり，企業独自の業務システムをポータルに統合したり，既存のアプリケーションと連携したりできます。標準APIポートレットと日立APIポートレットがあります。

管理者用レイアウトカスタマイズ画面

運用管理ポートレットから表示される画面です。この画面で，運用管理者または部門管理者が，同じポータル管理グループに属するユーザのポータル画面に表示される共通のレイアウト（標準画面レイアウト）をカスタマイズします。

クライアントサイドデータ通信

「ドラッグ&ドロップ」および「データフォーム転送」の総称です。

コピーイベントハンドラ

シリアライズされたJavaオブジェクトのデータを，ポータルクリップボードにコピーするJavaScriptの定義のことです。

コミュニティ

Collaboration - Online Community Managementの管理情報で，コミュニティメンバとワークプレースをまとめた集合体のことです。

コミュニティメンバ（省略時はメンバ）

Collaboration - Online Community Management管理情報で，コミュニティに参加中または脱退依頼中の人のことです。

コンテンツ表示領域

ポートレットが出力するコンテンツ領域のことです。

コンテンツフィルタリング

Webポートレットが表示するコンテンツを一定の条件で部分的に削除または抽出することです。

（サ行）

最大化ボタン

ポートレットの最大化ボタン（最大化時には復元ボタン）のことです。

システム管理者

ポータル全体を管理する権限を持つユーザです。ポータルの構築，ポートレットの登録，およびPortal Managerでポータル全体に関する情報を設定します。また，ほかのユーザを運用管理者に任命できます。

シリアライズ

メモリ上のデータをファイルなどに保存できる形式に変換することです（対義語はデシリアライズ）。

ストリングリソース

ポータル画面に表示する文字列を言語別にまとめたリソースのことです。

セルフユーザ登録ポートレット

ポータル利用者自身が，ユーザ情報を登録して利用するためのポートレットです。

（タ行）

タイトルバー

uCosminexus Portal Frameworkが合成するタイトルバーのことです。

ディレクティブ

コンテンツフィルタリング機能でフィルタリングする位置を指定する指示子です。HTMLファイルのコメント，および正規表現で検索した文字列をディレクティブとして使用します。

ディレクトリサーバ

情報を階層構造で一元管理するサーバです。uCosminexus Portal Frameworkでは，LDAPを使用したディレクトリサーバで，ユーザ情報を管理します。

デシリアライズ

ファイルなどに保存できるデータ形式から，メモリ上のオブジェクトに変換することです（対義語はシリアライズ）。

統合画面

ポータルサーバが提供するView（ナビゲーション領域とタイトルバー）とポートレットとして開発されたコンテンツの組み合わせによって表示される画面です。標準画面（DEFAULTモード），最大化画面（MAXIMIZEモード），編集画面（EDITモード），および新規ウィンドウ画面（NEWWINDOWモード）の4種類があります。

統合ユーザ管理フレームワーク

Cosminexusで，JAASを用いてユーザを管理するフレームワークです。uCosminexus Portal Frameworkは，統合ユーザ管理フレームワークを使用してディレクトリサーバと連携してユーザを管理します。

ドキュメントベースURL変換

ポートレットユティリティタグライブラリおよびポートレットユティリティクラスライブラリを使用した相対パス形式のURLから，uCosminexus Portal Frameworkを経由しないでコンテンツを外部Webサーバから直接取得するためのURLに変換することです。URLRewritingはしません。また，uCosminexus Portal FrameworkのAPIを使用できません。

ドロップ抑止機能

ドラッグ&ドロップをする際に，マウスカーソルがドロップ対象領域に入っていない場合はマウスカーソルを禁止マークにし，マウスカーソルがドロップ対象領域に入っている場合はドロップ可能マークにする機能です。ただし，ドロップ対象領域に入っていてもドラッグ元とドロップ先のdatatypeが一致していない場合は，マウスカーソルは禁止マークになります。

（ハ行）

パーソナライズ

パーソナライズとは，ポータル画面の表示形式および表示するコンテンツを，ユーザごとまたはグループごとに変更することです。パーソナライズには，運用管理者または部門管理者によるポータルの標準画面の設定と，各ユーザによるポータルの標準画面のカスタマイズがあります。

日立APIポートレット

カスタムポートレットの一つで，uCosminexus Portal FrameworkのAPIを用いて作成したポートレットです。

標準APIポートレット

カスタムポートレットの一つで，Java Portlet Specification 1.0に従って作成されたポートレットです。

部門管理者

ポータルの運用を管理する権限を持つユーザです。運用管理者によって，ポータル管理グループごとに設定されます。運用管理ポートレットを使用して，ポータル管理グループ内のリソース（ポートレットおよび画面レイアウト）についての情報を設定できます。ただし，リソースの管理権限は設定できません。

分散ポートレット

ほかのポータル上に配置されたポートレットを自ポータルに取り込み，ポータル画面に表示するためのポートレットです。

ペーストイベントハンドラ

ポータルクリップボードからデータを取得し，デシリアライズするJavaScriptの定義のことです。

変更可能エリア

拡張レイアウト形式のエリアの一つです。変更可能エリアでは，ユーザがポートレットを追加，移動および削除できます。

変更不可エリア

拡張レイアウト形式のエリアの一つです。変更不可エリアは，管理者がユーザに必ず参照させたいポートレットを配置するための領域です。このため，変更不可エリアでは，ユーザがポートレットを追加，移動および削除することはできません。

ポータル

幾つかのポートレットで構成されたWebサイトです。さまざまな情報を統合したインターネットやイントラネットの入り口になります。

ポータルURL変換

ポートレットユティリティタグライブラリおよびポートレットユティリティクラスライブラリを使用した相対パス形式のURLから，uCosminexus Portal Frameworkを経由してコンテンツを取得するためのURLに変換することです。uCosminexus Portal Frameworkを経由するのでuCosminexus Portal FrameworkのAPIを使用できます。また，ポートレットのアクセス制御も適用されます。ただし，統合アダプタを経由しないためポータルの統合画面内で遷移できません。

ポータル管理グループ

リソース（ポートレットおよび画面レイアウト）のアクセス権を管理するためのグループです。リソースの管理者および利用者を定義します。リソースの管理者は，リソースの内容を編集したり，アクセス権を変更したりできます。リソースの利用者は，ポータル画面にリソースが表示されて，リソースを参照したり使用したりできます。

ポータルクリップボードウィンドウ

ポータルクリップボードを実現するためのウィンドウです。

ポータルサーバ

uCosminexus Portal Frameworkを実行して動作しているservletのことです。

ポータルプロジェクト

ポータルを識別するためのディレクトリ名です。一つのポータルをポータルプロジェクトとして運用します。

ポートレット

ポータル上で動作するアプリケーションコンポーネントです。

ポートレットURL変換

ポートレットユティリティタグライブラリおよびポートレットユティリティクラスライブラリを使用した相対パス形式のURLから，日立APIポートレットをポータルの統合画面内で遷移させるためのURLに変換することです。ポータル画面でViewを統合するための統合アダプタを経由します。必要に応じてHttpServletResponse#encodeURLを呼び出して，URLRewritingをします。

ポートレット開発者

ポータルに表示するコンテンツを開発するユーザです。

ポートレットコンテンツ

ポートレットとして定義されているコンテンツのことです。

ポートレットタイトル

ポートレットのタイトルのことです。

ホーム画面

ウェルカム画面からログインしたときに表示されるユーザのホーム画面です。

uCosminexus Portal Frameworkでは，運用管理者または部門管理者によって，標準のホーム画面を設定することもできます。標準のホーム画面を設定すると，ユーザが所属している組織や役職ごとに異なるホーム画面を表示できます。

（マ行）

メッセージキー

ストリングリソース内のメッセージを識別するためのキーのことです。

（ヤ行）

ユーザ

ポータルを使用する人のことです。

要素フィルタリング

Webページをポータル画面に取り込む際に，開始タグ，終了タグ，などの要素を削除することです。

（ラ行）

リポジトリ

ユーザ情報，組織単位情報などが格納されているデータストアです。ディレクトリサーバ，DBなどの総称です。

利用者用レイアウトカスタマイズ画面

各ユーザのポータル画面の［レイアウト変更］アンカーまたはボタンから表示されます。この画面では，各ユーザが自分のポータル画面を利用しやすいようにカスタマイズします。

レイアウト

利用者に表示する画面のことです。レイアウトは，複数のポートレットを集約して構成されます。レイアウトは，パーソナライズ機能で示した行列形式だけではなく，タブ形式など複数のレイアウトを持つ形式も含みます。

レイアウトカスタマイズ機能

ポータル画面のレイアウトをカスタマイズする機能です。ポータル画面に表示するポートレットやポートレットの配置などを設定できます。

レイアウトカスタマイズ機能の画面（レイアウトカスタマイズ画面）には，管理者用レイアウトカスタマイズ画面と利用者用レイアウトカスタマイズ画面の2種類があります。

レイアウト形式

レイアウトにどのようにポートレットを配置するか定義したものです。レイアウト形式には，タブ形式，行列形式，ユーザ登録形式，グリッド形式，フロー形式，拡張レイアウト形式などがあります。

レイアウト情報

ディレクトリサーバのユーザエントリ内にあるuCosminexus Portal Framework専用オブジェクトクラスhptluser下のhptlPersonalizeInfo属性内の「レイアウトグループ」（layoutid）の内容です。

（ワ行）

ワークプレース

Collaboration - Online Community Managementの管理情報で，同じコミュニティに参加しているコミュニティメンバ間で共有するコンテンツを管理するものです。

索引

[記号]
[数字]
[Ａ][Ｂ][Ｃ][Ｄ][Ｅ][Ｆ][Ｇ][Ｈ][Ｉ][Ｊ][Ｌ][Ｍ][Ｎ][Ｏ][Ｐ][Ｒ][Ｓ][Ｔ][Ｕ][Ｗ][Ｘ]
[ア行][カ行][サ行][タ行][ナ行][ハ行][マ行][ヤ行][ラ行][ワ行]

(記号)

{PROJECT_HOME}¥WEB-INFに格納されているweb.xmlへのタグの追記

(数字)

2層モデル

(英字)

(Ａ)

action(HttpServletRequest)

action(HttpServletRequest,HttpServletResponse)

actionタグライブラリ

addUserAccount

areaタグライブラリ

aタグライブラリ

(Ｂ)

bodyタグライブラリ〔クライアントサイドデータ通信API〕

(Ｃ)

cacheタグライブラリ

ceタグライブラリ

changePassword

changeUserAccount

checkGroup

checkLoggedIn

checkOu

choiceタグライブラリ

commitData

convertタグライブラリ

Cookieによるセッション維持〔Multi Web Portlet作成時の注意事項〕

Cookieによるセッション維持〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

CsdcUtilクラス

customizeInfoEnd

customizeInfoStart

(Ｄ)

DB連携

debug

DefaultActionModuleクラス

destタグライブラリ〔クライアントサイドデータ通信API〕

displayタグライブラリ

dragiconタグライブラリ〔クライアントサイドデータ通信API〕

DTD〔用語解説〕

(Ｅ)

entryタグライブラリ

error(Object)

error(Object,Throwable)

(Ｆ)

Fileポートレット

Fileポートレット〔用語解説〕

Fileポートレット開発時の注意

Fileポートレットとは

Fileポートレットの作成

Fileポートレットの作成手順

formタグライブラリ

FRAMESET〔Multi Web Portlet作成時の注意事項〕

FRAMESET〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

frameタグライブラリ

(Ｇ)

getCustomizeInfo

getDescription

getDispName

getDragIcon〔HTML用 align パラメタあり〕

getDragIcon〔HTML用 align パラメタなし〕

getDragIcon〔JavaScript用 align パラメタあり〕

getDragIcon〔JavaScript用 align パラメタなし〕

getGroupName

getKeys

getLangType

getLangTypes

getLanguage

getLocale

getLocales

getMessage

getMode

getName

getNamespace

getOU

getOuName

getParameter〔PortalUserAccount〕

getParameter〔PortalUserInfoBean〕

getParameter〔PortletInfoBean〕

getParameter〔PortletParameters〕

getPortletInfo

getPortletLog

getPortletName

getRestoreURI

getRestoreURI〔staticメソッド〕

getSrcPortletName

getString

getStringResource(HttpServletRequest req,String appkey)

getStringResource(java.util.Locale locale, String appkey)

getSuccessionResult

getSupportLanguagesOrder

getSupportLocales

getTimeZone

getTitle

getTitle

getUserAccount

getUserAgentGroup

getUserAgentInfoBean

getUserCustomizeInfo

getUserId

getUserInfo

getUserName

(Ｈ)

Hello Worldポートレット

hportlet.xml

hptl_deserializeH2JS

hptl_getPortalClipboardData

hptl_oncopy

hptl_onpaste

hptl_setPortalClipboardData

html:form

html:link

html:rewrite

HTML記述上の注意

HTML記述上の注意〔日立APIポートレット〕

HTML記述上の注意〔標準APIポートレット〕

HTMLバージョン〔Webポートレット全般の前提知識〕

HTTPエミュレーション〔Multi Web Portlet作成時の注意事項〕

HTTPエミュレーション〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

HTTPヘッダ操作

(Ｉ)

IFRAMEステート

iframeタグライブラリ

imgタグライブラリ

initBean(ServletRequest)〔PortletInfoBean〕

initBean(ServletRequest)〔UserAgentInfoBean〕

initBean(ServletRequest,String)〔PortletInfoBean〕

inputタグライブラリ

isAccessible

isModeDeniedタグライブラリ

(Ｊ)

JAAS のコンフィグレーションファイル（jaas.conf）

jp.co.hitachi.soft.portal.api.portlets.PortletParameters

JSPからのサーブレットの呼び出し

(Ｌ)

LDAP〔用語解説〕

linkregisturlタグライブラリ〔ナビゲーションメニューAPI〕

LocaleDataクラス

logindataタグライブラリ

lookupURI

lookupURI〔staticメソッド〕

(Ｍ)

ModeDeniedListタグライブラリ

Multi File Portlet

Multi Web Portlet

Multi Web Portlet作成時の注意事項

MVCモデル

(Ｎ)

NEWWINDOWステート

note

(Ｏ)

objectタグライブラリ

oncopyタグライブラリ〔クライアントサイドデータ通信API〕

onpasteタグライブラリ〔クライアントサイドデータ通信API〕

(Ｐ)

parファイル

PortalHttpRequestクラス

PortalUserAccountBeanクラス

PortalUserAccountクラス

PortalUserInfoBeanクラス

portlet.xml

portlet.xml

PortletApp.propertiesファイル

PortletException()コンストラクタ

PortletException(String)コンストラクタ

PortletExceptionクラス

PortletInfoBean.Modeクラス

PortletInfoBeanクラス

PortletLogクラス

PortletURIクラス

PortletURIコンストラクタ

portletURIタグライブラリ

PortletUtilsクラス

PortletUtilsコンストラクタ

printStackTrace

(Ｒ)

receive(HttpServletRequest)

receive(HttpServletRequest,HttpServletResponse)

removeCustomizeInfo

removeUserAccount

removeUserCustomizeInfo

RSS〔用語解説〕

(Ｓ)

scriptタグライブラリ

searchUser

secureURIタグライブラリ

send

serializeJ2Hタグライブラリ〔クライアントサイドデータ通信API〕

setApplication

setCustomizeInfo

setCustomizeTitle

setDispName

setLangType

setOU

setParameter

setRequest〔PortletParameters〕

setRequest〔PortletUserInfoBean〕

setTimeZone

setTitle

setUserCustomizeInfo

srcタグライブラリ〔クライアントサイドデータ通信API〕

SSO〔用語解説〕

StringResourceクラス

struts-config.xmlファイルの編集

Strutsアプリケーションの開発

Strutsフレームワークの使用（標準APIポートレット）

(Ｔ)

toString

transContextURI

transContextURI〔staticメソッド〕

transInlineURI

transInlineURI〔staticメソッド〕

transInlineURIEx

transInlineURIEx〔staticメソッド〕

transPortalURI

transPortalURI〔staticメソッド〕

transPortletURI

transPortletURI〔staticメソッド〕

(Ｕ)

uCosminexus Portal Frameworkが提供しているBeanを利用するためのAPI

uCosminexus Portal Frameworkで使用できるポートレット

uCosminexus Portal Frameworkの機能に対応するポートレット

uCosminexus Portal Frameworkのポートレット

uCosminexus Portal Framework未起動時の動作

UCPFWindowStateクラス

URLRewritingによるセッション維持〔Multi Web Portlet作成時の注意事項〕

URLRewritingによるセッション維持〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

URL変換〔Multi Web Portlet作成時の注意事項〕

URL変換〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

URL変換〔日立APIポートレット〕

URL変換〔標準APIポートレット〕

URL変換タグライブラリ使用時の注意〔日立APIポートレット〕

UserAgent〔用語解説〕

UserAgentInfoBeanクラス

UserAgent情報取得Bean

userData領域

userData領域

useタグライブラリ〔クライアントサイドデータ通信API〕

(Ｗ)

warn(Object)

warn(Object,Throwable)

web.xml

web.xmlの編集

web.xmlファイル作成時の注意事項

Web App Portlet

Web App PortletおよびWeb Page Portlet作成時の注意事項

Web App PortletおよびWeb Page Portletでのコンテンツ不正表示

Web App Portletでのインラインオブジェクトの取得先

Web App Portletに取り込むWebコンテンツ

Web App Portletを使用する場合のURL形式

Web Page Portlet

WebアプリケーションのDD（web.xml）の作成

Webコンテナ〔用語解説〕

Webコンテンツポートレット

Webコンテンツポートレット〔用語解説〕

Webポートレット

Webポートレット〔用語解説〕

Webポートレット作成時の注意事項

Webポートレット全般の前提知識

Webポートレットとは

Webポートレットの作成

Webポートレットの作成手順

Webポートレットの種類

Webポートレットを取り込むための条件

(Ｘ)

XSLTを用いたポートレット

(ア行)

(あ)

アクションモジュール〔日立APIポートレット〕

アクションモジュール〔日立APIポートレット〕

アクションモジュール〔ポートレットイベント対応ポートレットの開発〕

アクションモジュールで利用できるAPI

アクションモジュールの呼び出し条件〔日立APIポートレット〕

アクセス判定するサーブレットの作成

アトリビュート操作

アトリビュート操作

アプリケーションキー〔用語解説〕

(い)

イベント処理を実行するためのAPI

インタフェースの設定〔ポートレットイベント対応ポートレットの開発例〕

インラインオブジェクト〔用語解説〕

インラインオブジェクトとの連携〔Multi Web Portlet作成時の注意事項〕

インラインオブジェクトとの連携〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

(う)

ウィンドウ状態について

ウィンドウステート〔標準APIポートレット〕

ウェルカム画面〔用語解説〕

運用管理者〔用語解説〕

運用管理ポートレット〔用語解説〕

運用上の注意〔分散ポートレットを使用するときの注意事項〕

(え)

エリア〔用語解説〕

エンコーディング

エンコーディング〔Fileポートレット開発時の注意〕

エンコーディング〔Multi Web Portlet作成時の注意事項〕

エンコーディング〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

(カ行)

(か)

外部サーバとのセッション維持〔Multi Web Portlet作成時の注意事項〕

外部サーバとのセッション維持〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

拡張Strutsタグライブラリ

拡張Strutsタグライブラリの使用

拡張レイアウト形式〔用語解説〕

カスタマイズ〔用語解説〕

カスタマイズ情報任意保存機能使用時のポートレットの開発例

カスタマイズ情報任意保存機能の使用方法

カスタマイズ情報の任意保存対応ポートレット

カスタマイズ情報の任意保存対応ポートレットの開発

カスタマイズできる項目〔日立APIポートレット〕

カスタムウィンドウステート

カスタムウィンドウステートAPI

カスタムウィンドウステート実行時のポートレットモード及びウィンドウステート

カスタムウィンドウステート使用時の注意事項

カスタムウィンドウステートの使用

カスタムウィンドウステートの設定

カスタムポートレット

カスタムポートレット〔用語解説〕

カスタムポートレットとは

カスタムポートレットの作成

画面遷移〔Multi Web Portlet作成時の注意事項〕

画面の位置づけ

画面モードの対応

管理者用レイアウトカスタマイズ画面

管理者用レイアウトカスタマイズ画面〔用語解説〕

(き)

キャッシュクリア〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

キャッシュ制御〔Multi Web Portlet作成時の注意事項〕

キャッシュ制御〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

キャッシュの有効期間〔標準APIポートレット〕

キャッシュ容量〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

キャッシュを使用したポートレット

(く)

クエリストリング

クライアントサイドデータ通信〔用語解説〕

クライアントサイドデータ通信JavaScript

クライアントサイドデータ通信JavaScriptの概要

クライアントサイドデータ通信機能がサポートするHTML

クライアントサイドデータ通信クラスライブラリ

クライアントサイドデータ通信対応ポートレット

クライアントサイドデータ通信対応ポートレットの開発

クライアントサイドデータ通信対応ポートレットの前提条件

クライアントサイドデータ通信対応ポートレットへの提供ファイル

クライアントサイドデータ通信対応ポートレットを開発するための定義

クライアントサイドデータ通信対応ポートレットを開発する前に

クライアントサイドデータ通信タグライブラリ

クライアントサイドデータ通信タグライブラリの概要

クライアントサイドデータ通信タグライブラリのタグ階層

クライアントサイドデータ通信とは

クライアントサイドデータ通信の処理概要

(け)

言語およびタイムゾーン切り替え対応ポートレット

言語およびタイムゾーン切り替え対応ポートレットの開発

言語切り替え対応ポートレットの開発

言語切り替え対応ポートレットの開発方法

言語切り替え対応ポートレットの開発例

(こ)

コピーイベントハンドラ〔用語解説〕

コミュニティ〔用語解説〕

コミュニティメンバ〔用語解説〕

コメントでのディレクティブ指定

コンテキストパスの取得方法

コンテンツキャッシュ制御〔標準APIポートレット〕

コンテンツの有効期限〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

コンテンツ表示領域〔用語解説〕

コンテンツフィルタリング〔Multi Web Portlet作成時の注意事項〕

コンテンツフィルタリング〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

コンテンツフィルタリング〔用語解説〕

コンテンツフィルタリングの設定〔Multi Web Portlet作成時の注意事項〕

コンテンツフィルタリングの設定〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

(サ行)

(さ)

サーブレットAPIの制限事項

サーブレットからのJSPの呼び出し

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

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

サーブレットを用いたポートレットの開発

最大化画面アンカー

最大化表示〔Multi Web Portlet作成時の注意事項〕

最大化表示〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

最大化ボタン〔用語解説〕

サブレイアウト

(し)

システム管理者〔用語解説〕

システム管理者またはポートレット開発者がカスタマイズできる項目

上限サイズ

使用できないCHTML要素，タグ

使用できないHDML要素，タグ

使用できないHTML要素，タグ

シリアライズ〔用語解説〕

新規ウィンドウ画面へのリンクを表示するコンテンツ

新規ウィンドウ画面を表示するコンテンツ

新規ウィンドウ対応ポートレット

新規ウィンドウ対応ポートレットの開発

新規ウィンドウ対応ポートレットの開発上の注意

新規ウィンドウ対応ポートレットの開発例

新規ウィンドウ対応ポートレットを開発する前に

新規ウィンドウの画面構成

シングルサインオン対応ポートレット

シングルサインオン対応ポートレットの開発

シングルサインオン対応ポートレットの作成

シングルサインオン対応ポートレットの流れ

シングルサインオンとは

シングルサインオンの概要

シングルサインオンのためのポートレット

(す)

スクリプトを使用するには〔Multi Web Portlet作成時の注意事項〕

スクリプトを使用するには〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

スクリプトを使用するには〔日立APIポートレット〕

スタイル〔Multi Web Portlet作成時の注意事項〕

スタイル〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

ステートフル接続

ステートレス接続

ストリングリソース〔用語解説〕

ストリングリソース取得API

(せ)

正規表現でのコンテンツフィルタリングの使用例

正規表現でのディレクティブ指定〔Multi Web Portlet作成時の注意事項〕

正規表現でのディレクティブ指定〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

制限事項〔分散ポートレットを使用するときの注意事項〕

セキュアなポートレットの開発

セキュリティゾーン

セッションID引き継ぎ

セッション管理

セッション初期，終了処理

設定ファイルの記述例

セルフユーザ登録のサンプルポートレット

セルフユーザ登録ポートレット〔用語解説〕

(そ)

その他の前提条件

疎連携

(タ行)

(た)

ターゲットとするデバイス

タイトルバー〔用語解説〕

タイムゾーン切り替え対応ポートレットの開発

タイムゾーン切り替え対応ポートレットの開発方法

タイムゾーン切り替え対応ポートレットの開発例

ダイレクト呼び出し結果取得API

ダイレクト呼び出し時のPOSTデータ

ダイレクト呼び出し対応ポートレットの開発

ダイレクト呼び出しとは

タグライブラリ使用時の注意〔日立APIポートレット〕

タグライブラリ全般の注意〔日立APIポートレット〕

タグライブラリで使用できない属性

(て)

ディレクティブ〔Multi Web Portlet作成時の注意事項〕

ディレクティブ〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

ディレクティブ〔用語解説〕

ディレクトリサーバ〔用語解説〕

データ格納方式の設定

データフォーム転送〔クライアントサイドデータ通信の処理概要〕

データ保管領域

データ保管領域の設定

デシリアライズ〔用語解説〕

デバイスに対応するための設定〔Fileポートレット〕

デバイスに対応するための設定〔日立APIポートレット〕

デバイスに対応するための設定〔標準APIポートレット〕

デバイスに対応するための設定（Multi Web Portlet）

デフォルトアクションモジュール〔日立APIポートレット〕

デフォルトアクションモジュール〔ポートレットイベント対応ポートレットの開発〕

デプロイ定義ファイル

デプロイ定義ファイル（hportlet.xml）の作成

デプロイ定義ファイルで使用するタグの一覧

デプロイ定義ファイルの開発〔ナビゲーションメニュー対応ポートレットの開発例〕

デプロイ定義ファイルの設定〔ダイレクト呼び出し対応ポートレットの開発〕

デプロイ定義ファイルの設定〔ナビゲーションメニュー〕

転送データサイズの設定

(と)

統合画面〔用語解説〕

統合ユーザ管理フレームワーク〔用語解説〕

統合ユーザ管理フレームワークとの連携

統合ユーザ管理フレームワークのコンフィグレーションファイル（ua.conf）

ドキュメントベース

ドキュメントベースURL変換

ドキュメントベースURL変換〔用語解説〕

ドラッグ&ドロップ〔クライアントサイドデータ通信の処理概要〕

ドラッグ&ドロップ機能の概要〔クライアントサイドデータ通信〕

ドラッグ&ドロップの定義方法（パターン1）

ドラッグ&ドロップの定義方法（パターン1）の定義規則

ドラッグ&ドロップの定義方法（パターン1）の定義例

ドロップ抑止機能〔用語解説〕

(ナ行)

(な)

ナビゲーションメニュー対応ポートレット

ナビゲーションメニュー対応ポートレットに設定する内容

ナビゲーションメニュー対応ポートレットの開発

ナビゲーションメニュー対応ポートレットの開発例

ナビゲーションメニュー対応ポートレットの画面遷移

ナビゲーションメニュー対応ポートレットのサンプル画面の開発

ナビゲーションメニュー対応ポートレットのサンプルの提供方法および動作確認方法

ナビゲーションメニュー対応ポートレットを開発する前に

ナビゲーションメニューのタグライブラリ

ナビゲーションメニューのタグライブラリの一覧

(に)

認証〔Multi Web Portlet作成時の注意事項〕

認証〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

認証に対するシングルサインオン〔Multi Web Portlet作成時の注意事項〕

認証に対するシングルサインオン〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

(ね)

ネームスペース

ネームスペース〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

ネームスペースの命名規則

(ハ行)

(は)

パーソナライズ〔用語解説〕

パーソナライズ情報使用時の注意〔日立APIポートレット〕

ハイパーリンクの作成

パス名

バックエンドシステム

バックエンドシステムとの連携

バックエンドシステムの対応（DB連携）

バックエンドシステムの対応（セッションID引き継ぎ）

バックエンドシステムのポートレット対応

バックエンドシステム連携

(ひ)

引き継ぎ結果の取得

引き継ぎ範囲

日立APIが出力するログ

日立APIの使用

日立APIポートレット

日立APIポートレット

日立APIポートレット〔用語解説〕

日立APIポートレットのアーカイブの作成

日立APIポートレットの画面モード

日立APIポートレットの画面モードの種類

日立APIポートレットの作成手順

日立APIポートレットの動作

日立APIポートレットのライフサイクル

標準APIポートレット

標準APIポートレット

標準APIポートレット〔用語解説〕

標準APIポートレットのアーカイブの作成

標準APIポートレットの画面モード

標準APIポートレットの作成手順

標準APIポートレットの動作

標準APIポートレットのポートレットID

標準APIポートレットのライフサイクル

(ふ)

ファイルをアップロードするポートレット

フォーム認証〔Multi Web Portlet作成時の注意事項〕

フォーム認証〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

フォーム認証〔シングルサインオンポートレット〕

複数のWebブラウザ画面の表示〔日立APIポートレット〕

複数ログイン対応

プッシュ型ポートレット

部門管理者〔用語解説〕

プラグインモジュールと連携するポートレット

フレームを使用したポートレット

フレームを使用するには〔日立APIポートレット〕

プロキシサーバ使用時の注意事項〔Multi Web Portlet作成時の注意事項〕

プロキシサーバ使用時の注意事項〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

プロキシ認証〔Multi Web Portlet作成時の注意事項〕

プロキシ認証〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

プロキシ連携〔Multi Web Portlet作成時の注意事項〕

プロキシ連携〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

分散ポートレット

分散ポートレット〔用語解説〕

分散ポートレット作成のガイドライン

分散ポートレットで使用できないBean

分散ポートレットで使用できないHTML

分散ポートレットで使用できるHTML

分散ポートレットで使用できるクラスライブラリおよびBean

分散ポートレットとは

分散ポートレットの作成

分散ポートレットの作成手順

分散ポートレットを使用するときの注意事項

(へ)

ベーシック認証〔Multi Web Portlet作成時の注意事項〕

ベーシック認証〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

ベーシック認証〔シングルサインオンポートレット〕

ペーストイベントハンドラ〔用語解説〕

変更可能エリア〔用語解説〕

変更不可エリア〔用語解説〕

(ほ)

ポータル〔用語解説〕

ポータルURL変換

ポータルURL変換〔用語解説〕

ポータル画面からのポートレットモードおよびウィンドウステートの変更

ポータル画面の表示方法

ポータル管理グループ〔用語解説〕

ポータル業務画面の処理の設計

ポータルクリップボードウィンドウ

ポータルクリップボードウィンドウ

ポータルクリップボードウィンドウ〔用語解説〕

ポータルサーバ〔用語解説〕

ポータル内のコンテンツ処理〔Multi Web Portlet作成時の注意事項〕

ポータルプロジェクト〔用語解説〕

ポートレット〔用語解説〕

ポートレット（index.jsp）

ポートレットURL変換

ポートレットURL変換〔用語解説〕

ポートレットアクションイベント機能

ポートレットアクションイベント機能

ポートレットアクションイベント機能の概要

ポートレットアクションイベント機能の詳細

ポートレットアクションイベント機能の利用方法

ポートレットアクションイベントで利用できるAPI

ポートレットアクションモジュールの開発

ポートレットアクションモジュールの作成

ポートレットアプリケーションDD

ポートレットアプリケーションDD

ポートレットアプリケーションDD作成時の注意事項

ポートレットアプリケーションDDの作成

ポートレットアプリケーションDDの作成例

ポートレットイベントAPI

ポートレットイベント機能

ポートレットイベント機能とは

ポートレットイベント機能の処理の流れ

ポートレットイベント制御

ポートレットイベント対応ポートレットの開発

ポートレットイベント対応ポートレットの開発手順

ポートレットイベント対応ポートレットの開発例

ポートレットウィンドウの情報更新〔標準APIポートレット〕

ポートレット開発者〔用語解説〕

ポートレット間通信イベント機能

ポートレット間通信イベント機能

ポートレット間通信イベント機能の概要

ポートレット間通信イベント機能の詳細

ポートレット間通信イベント機能の利用方法

ポートレット間通信イベントで利用できるAPI

ポートレット間通信対応ポートレット

ポートレットコンテンツ〔用語解説〕

ポートレットコンテンツの作成

ポートレット情報取得Bean

ポートレット初期処理，終了処理

ポートレットタイトル〔用語解説〕

ポートレットタイトルの変更〔標準APIポートレット〕

ポートレットとして動作するための制限事項

ポートレットの開発の流れ

ポートレットの開発モデル

ポートレットのサンプル

ポートレットのデプロイ

ポートレットの動作

ポートレットの表示モード

ポートレットの無応答監視

ポートレットの呼び出し

ポートレットの呼び出し順序

ポートレットパラメタ取得インタフェース

ポートレットへのPOSTデータの引き渡し

ポートレットメッセージ機能

ポートレットモード〔標準APIポートレット〕

ポートレットユティリティクラスライブラリ

ポートレットユティリティクラスライブラリ使用時の画面遷移〔日立APIポートレット〕

ポートレットユティリティタグライブラリ

ポートレットユティリティタグライブラリ使用時に適用されるURL変換

ポートレットユティリティタグライブラリ使用時の画面遷移〔日立APIポートレット〕

ポートレットログの出力レベルと出力されるログの内容

ポートレットを開発するためのライブラリ

ポートレットを作成するための設定

ホーム画面〔用語解説〕

補助ウィンドウを使用したデータフォーム転送の定義方法（パターン2）

補助ウィンドウを使用したデータフォーム転送の定義方法（パターン2）の定義規則

補助ウィンドウを使用したデータフォーム転送の定義方法（パターン2）の定義例

補助ウィンドウを使用する方法〔クライアントサイドデータ通信の処理概要〕

補助ウィンドウを使用する方法の概念（データフォーム転送）〔クライアントサイドデータ通信〕

ボタンを使用したデータフォーム転送の定義方法（パターン3）

ボタンを使用したデータフォーム転送の定義方法（パターン3）の定義規則

ボタンを使用したデータフォーム転送の定義方法（パターン3）の定義例

ボタンを使用する方法〔クライアントサイドデータ通信の処理概要〕

ボタンを使用する方法の概念（データフォーム転送）〔クライアントサイドデータ通信〕

(マ行)

(ま)

マッピング定義ファイル

マッピング定義ファイル

マッピング定義ファイル

(み)

密連携

(む)

無応答監視のinterruptの通知回数

無応答監視の処理シーケンス

(め)

メッセージキー〔用語解説〕

(ヤ行)

(ゆ)

ユーザ〔用語解説〕

ユーザアカウント情報取得API

ユーザごとにパーソナライズするポートレット

ユーザ情報取得Bean

ユーザ操作とポートレットの処理内容

ユーザ登録API

ユーザロケール情報取得API

(よ)

要素フィルタリング〔Multi Web Portlet作成時の注意事項〕

要素フィルタリング〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

要素フィルタリング〔用語解説〕

(ラ行)

(ら)

ライブラリ

ライブラリファイル

(り)

リクエストコントローラ機能

リクエスト処理

リクエスト属性の予約後

リクエストディスパッチ

リクエストのフォワード

リクエストパラメタの予約語

リダイレクト

リダイレクト〔Multi Web Portlet作成時の注意事項〕

リダイレクト〔Web App PortletおよびWeb Page Portlet作成時の注意事項〕

リダイレクト判定〔標準APIポートレット〕

リポジトリ〔用語解説〕

利用者用レイアウトカスタマイズ画面

利用者用レイアウトカスタマイズ画面

利用者用レイアウトカスタマイズ画面

利用者用レイアウトカスタマイズ画面

利用者用レイアウトカスタマイズ画面

利用者用レイアウトカスタマイズ画面〔用語解説〕

リンク・インラインオブジェクトの指定方法〔Fileポートレット開発時の注意〕

(れ)

レイアウト〔用語解説〕

レイアウトカスタマイズ機能〔用語解説〕

レイアウト形式〔用語解説〕

レイアウト情報〔用語解説〕

レンダーパラメタ〔標準APIポートレット〕

(ろ)

ログインモジュール

ログインログアウトの処理

ログ出力Bean

ログを出力するポートレット

(ワ行)

(わ)

ワークプレース〔用語解説〕

■ 商標類

auは，KDDI株式会社の登録商標です。
EZwebは，KDDI株式会社の登録商標です。
FirefoxはMozilla Foundationの登録商標です。
Internet Explorerは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
iモードは，株式会社エヌ・ティ・ティ・ドコモの商標です。
MacromediaおよびMacromedia Flashは，Macromedia, Inc.の米国およびその他の国における商標または登録商標です。
Netscapeは，AOL Inc.の登録商標です。
OracleとJavaは，Oracle Corporation 及びその子会社，関連会社の米国及びその他の国における登録商標です。
UNIXは，The Open Groupの米国ならびに他の国における登録商標です。
Windowsは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Serverは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Vistaは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
その他記載の会社名，製品名は，それぞれの会社の商標もしくは登録商標です。
This product includes software developed by the Apache Software Foundation (http://www.apache.org/).
This product includes software developed by the Java Apache Project <http://java.apache.org/>.