...

Java EE運用ガイド - ソフトウェア

by user

on
Category: Documents
4704

views

Report

Comments

Transcript

Java EE運用ガイド - ソフトウェア
Interstage Application Server/
Interstage Web Server
Java EE運用ガイド
Windows/Solaris/Linux
B1WS-0949-02Z0(00)
2011年8月
まえがき
本書の目的
本書は、InterstageのJava EEアプリケーションの運用を行うために、環境構築やアプリケーションの運用について紹介し
ています。
本書は、以下の方を対象にしています。
・ Java EEコンポーネントを利用したアプリケーションを運用する方
エディションの機能差について
Enterprise EditionとStandard-J EditionにはJava EE固有の差異はありません。
IPCOM連携による負荷分散やクラスタサービス連携などEnterprise Editionのみ提供している機能はありますが、Interstage
共通の機能差異となります。
Web Serverでは以下のJava EE機能が未サポートとなります。
・ Enterprise JavaBeans(EJB)
・ Java Persistence API(JPA)
・ Java EE Connector Architecture(connector)
・ Java Transaction Service(JTS)
・ JDBC接続プール/JDBCリソース
・ Java Message Service(JMS)
・ Webサービス
前提知識
本書を読む場合、以下の知識が必要です。
・ 使用するOSに関する基本的な知識
・ Javaに関する基本的な知識
・ Webサービスに関する基本的な知識
・ XMLに関する基本的な知識
・ インターネットに関する基本的な知識
・ リレーショナルデータベースに関する基本的な知識
・ トランザクションモデル(クライアント・サーバモデル)に関する基本的な知識
本書の構成
本書は、以下の構成になっています。
第1章 Java EEの概要
Java EEの概要について説明しています。
第2章 Java EEアプリケーションの提供機能
Java EEアプリケーションの提供機能について説明しています。
第3章 Java EEアプリケーションの開発
Java EEアプリケーションの開発について説明しています。
-i-
第4章 Java EEアプリケーションの運用
Java EEアプリケーションの運用方法について説明しています。
第5章 Java EE機能のセキュリティ
Java EE機能のセキュリティについて説明しています。
第6章 定義項目一覧
Java EEアプリケーションの運用に関する定義項目について説明しています。各定義項目の省略値や指定可能な範囲
などについては本章を参照してください。
第7章 サンプル
Java EEのサンプルを使用する場合の手順と注意事項について説明しています。
付録A Java DB
Java DBについて説明しています。
付録B ファイル構成
ファイル構成について説明しています。
付録C Interstage HTTP Serverとの機能比較
Interstage HTTP ServerとJava EEの機能の違いについて説明しています。
付録D 非推奨機能
本製品での非推奨機能について説明しています。
付録E サポート規約一覧
Interstage Java EEが提供するコンテナのサポート規約について説明しています。
用語について
本書では、Windows(R)の場合はコンピュータのプロパティの設定を、Solaris/Linuxの場合はInterstage起動時の環境変
数を、「システム環境変数」と記述している場合があります。
製品の表記について
本書での以下の表記については、それぞれの基本ソフトウェアに対応した製品を示しています。
表記
説明
RHEL-AS4(x86)
Red Hat Enterprise Linux AS (v.4 for x86)を前提基本ソフトウェアとした
Interstage Application Server/Interstage Web Server
RHELAS4(EM64T)
Red Hat Enterprise Linux AS (v.4 for EM64T)を前提基本ソフトウェアとした
Interstage Application Server/Interstage Web Server
RHEL-AS4(IPF)
Red Hat Enterprise Linux AS (v.4 for Itanium)を前提基本ソフトウェアとした
Interstage Application Server
RHEL5(x86)
Red Hat Enterprise Linux 5 (for x86)を前提基本ソフトウェアとしたInterstage
Application Server/Interstage Web Server
RHEL5(Intel64)
Red Hat Enterprise Linux 5 (for Intel64)を前提基本ソフトウェアとしたInterstage
Application Server/Interstage Web Server
RHEL6(x86)
Red Hat Enterprise Linux 6 (for x86)を前提基本ソフトウェアとしたInterstage
Application Server/Interstage Web Server
RHEL6(Intel64)
Red Hat Enterprise Linux 6 (for Intel64)を前提基本ソフトウェアとしたInterstage
Application Server/Interstage Web Server
輸出許可
本ドキュメントを非居住者に提供する場合には、経済産業大臣の許可が必要となる場合がありますので、ご注意ください。
- ii -
著作権
Copyright 2011 FUJITSU LIMITED
2011年8月 第2版
2011年7月 初版
- iii -
目 次
第1章 Java EEの概要...............................................................................................................................................................1
1.1 Servlet/JSP...........................................................................................................................................................................................3
1.2 Enterprise JavaBeans (EJB).................................................................................................................................................................3
1.3 Java Persistence API (JPA)..................................................................................................................................................................4
1.4 Webサービス.......................................................................................................................................................................................4
1.5 トランザクションサービス......................................................................................................................................................................5
1.6 Java Message Service (JMS)...............................................................................................................................................................7
1.7 Java EE Connector Architecture (コネクタ).........................................................................................................................................7
第2章 Java EEアプリケーションの提供機能...............................................................................................................................9
2.1 全体構成.............................................................................................................................................................................................9
2.1.1 Interstage Java EE運用環境.........................................................................................................................................................9
2.1.2 Java EEが利用するJDK、JRE....................................................................................................................................................10
2.1.3 Java EE共通ディレクトリ..............................................................................................................................................................10
2.1.4 リポジトリの同期化処理..............................................................................................................................................................11
2.1.5 Java EE運用環境の初期化........................................................................................................................................................12
2.1.6 Java EE運用環境で利用するユーザーとパスワード.................................................................................................................15
2.1.7 サービス運用ユーザーのカスタマイズ......................................................................................................................................15
2.2 Interstage Java EE DASサービス......................................................................................................................................................16
2.2.1 Interstage Java EE DASサービスのファイル構成......................................................................................................................17
2.2.2 Interstage Java EE DASサービスのログファイル.......................................................................................................................17
2.2.3 Interstage Java EE DASサービスのインスタンス名と定義情報.................................................................................................17
2.2.4 IJServerクラスタとの差異............................................................................................................................................................18
2.3 Interstage Java EE Node Agentサービス...........................................................................................................................................18
2.3.1 Interstage Java EE Node Agentサービスのファイル構成...........................................................................................................19
2.3.2 Interstage Java EE Node Agentサービスのログファイル............................................................................................................19
2.4 IJServerクラスタ..................................................................................................................................................................................19
2.4.1 IJServerクラスタの運用環境.......................................................................................................................................................20
2.4.2 IJServerクラスタのファイル構成.................................................................................................................................................20
2.4.3 IJServerクラスタの複数プロセス構成.........................................................................................................................................22
2.4.4 Java VMプロセスの生死監視....................................................................................................................................................24
2.4.5 縮退運用....................................................................................................................................................................................25
2.4.6 Javaヒープ/Permanent世代領域不足時の制御.........................................................................................................................26
2.4.7 アプリケーション最大処理時間の監視とレスポンス監視..........................................................................................................26
2.4.8 予兆監視....................................................................................................................................................................................28
2.5 Servletの提供機能............................................................................................................................................................................28
2.5.1 Servlet 2.5...................................................................................................................................................................................28
2.5.2 JSP 2.1........................................................................................................................................................................................29
2.5.3 エラーページ..............................................................................................................................................................................30
2.5.4 JSP事前コンパイル.....................................................................................................................................................................31
2.5.5 Java Standard Edtion 6によるJSPの運用....................................................................................................................................33
2.6 HTTPサービス...................................................................................................................................................................................33
2.6.1 HTTPリスナー.............................................................................................................................................................................33
2.6.2 HTTPアクセスログ......................................................................................................................................................................33
2.6.3 HTTPトレースログ.......................................................................................................................................................................34
2.7 EJBの提供機能.................................................................................................................................................................................34
2.7.1 Session Beanの実行環境...........................................................................................................................................................34
2.7.2 Message-driven Beanの実行環境..............................................................................................................................................35
2.7.3 EJBディスパッチ機能によるロードバランス...............................................................................................................................37
2.7.3.1 振り分け対象の追加/削除..................................................................................................................................................39
2.7.3.2 振り分け対象のEnterprise JavaBeans.................................................................................................................................40
2.7.3.3 コマンドによる振り分け操作と状態表示.............................................................................................................................40
2.7.3.4 EJBディスパッチャのログ.....................................................................................................................................................41
2.8 EJBコンテナ時間監視機能...............................................................................................................................................................44
2.8.1 Stateful Session Beanインスタンスの無通信時間監視機能......................................................................................................45
- iv -
2.8.2 EJBコンテナのトランザクション完了時間監視機能...................................................................................................................46
2.8.3 EJBタイマーサービス.................................................................................................................................................................46
2.9 EJB/JTAメソッドログ...........................................................................................................................................................................51
2.9.1 定義詳細....................................................................................................................................................................................56
2.9.2 コマンド詳細...............................................................................................................................................................................57
2.10 JPAの提供機能...............................................................................................................................................................................57
2.10.1 JPAの実行環境........................................................................................................................................................................58
2.10.2 永続性プロバイダの設定方法.................................................................................................................................................58
2.10.3 サポートデータベースと設定方法...........................................................................................................................................60
2.10.4 Entityで定義するJavaのデータ型とDBMSのSQLデータ型との対応....................................................................................61
2.10.5 プライマリキー値の自動生成機能...........................................................................................................................................63
2.10.6 データベーステーブル自動生成機能.....................................................................................................................................64
2.10.7 行のロック機能..........................................................................................................................................................................69
2.10.8 SQLログ機能............................................................................................................................................................................70
2.11 ORB(Object Request Broker)/RMI-IIOP........................................................................................................................................71
2.12 アプリケーションクライアントコンテナ..............................................................................................................................................72
2.13 JNDI.................................................................................................................................................................................................73
2.13.1 ネーミングサービス...................................................................................................................................................................75
2.13.2 環境ネーミングコンテキスト(Environment Naming Context)...................................................................................................78
2.13.3 ネーミングサービスと環境ネーミングコンテキストの仕様差異................................................................................................87
2.13.4 他ネーミングサービス連携機能...............................................................................................................................................88
2.13.5 オブジェクトリファレンスのキャッシュ機能................................................................................................................................89
2.14 トランザクション制御........................................................................................................................................................................90
2.14.1 ローカルトランザクションとグローバルトランザクション............................................................................................................90
2.14.2 トランザクションの制御方法.....................................................................................................................................................94
2.14.3 2フェーズコミットプロトコル.......................................................................................................................................................95
2.14.4 トランザクションのリソース管理.................................................................................................................................................96
2.14.5 トランザクションログ...................................................................................................................................................................96
2.14.6 トランザクションの監視と凍結機能...........................................................................................................................................97
2.15 接続プール......................................................................................................................................................................................98
2.16 データベース連携/JDBC..............................................................................................................................................................100
2.17 データベース連携時に使用できる時間監視機能.......................................................................................................................101
2.18 JMSの提供機能............................................................................................................................................................................101
2.18.1 メッセージブローカ.................................................................................................................................................................103
2.18.2 メッセージブローカの機能.....................................................................................................................................................104
2.18.3 物理格納先の管理.................................................................................................................................................................104
2.18.4 接続サービス..........................................................................................................................................................................107
2.18.5 ポートマッパー........................................................................................................................................................................108
2.18.6 ルーティングサービス.............................................................................................................................................................108
2.18.7 持続サービス..........................................................................................................................................................................109
2.18.8 高信頼機能............................................................................................................................................................................110
2.18.9 事前配信................................................................................................................................................................................112
2.19 コネクタの提供機能.......................................................................................................................................................................115
2.19.1 コネクタ接続プールとコネクタリソースの定義.......................................................................................................................115
2.19.2 アウトバウンド・リソースアダプタのトランザクション制御........................................................................................................116
2.19.3 Message-driven Beanとの連携...............................................................................................................................................117
2.19.4 管理オブジェクトリソースの定義............................................................................................................................................117
2.19.5 JavaBeanのコンフィギュレーション.........................................................................................................................................117
2.19.6 スレッドプールを利用したWorkの実行.................................................................................................................................118
2.20 コネクタで使用できる時間監視機能.............................................................................................................................................118
2.21 グループ管理サービス..................................................................................................................................................................119
2.22 クラスローダ...................................................................................................................................................................................119
2.22.1 クラスローダの構成.................................................................................................................................................................120
2.22.2 クラスローダの分離.................................................................................................................................................................122
2.22.3 Webクラスローダの委譲モデルの変更..................................................................................................................................124
2.22.4 IJServerクラスタで使用するクラスの設定について...............................................................................................................125
2.22.5 XMLパーサの設定................................................................................................................................................................126
-v-
2.22.6 クラスローダ使用時の注意事項.............................................................................................................................................126
2.23 ライフサイクルモジュール..............................................................................................................................................................127
2.23.1 ライフサイクルモジュールの設計方法...................................................................................................................................128
2.23.2 ライフサイクルモジュールの運用方法...................................................................................................................................129
2.24 J2EE/Java EE連携機能.................................................................................................................................................................129
2.24.1 J2EE実行環境からJava EE実行環境のアプリケーションを呼び出す..................................................................................129
2.24.2 Java EE実行環境からJ2EE実行環境のアプリケーションを呼び出す..................................................................................130
2.25 CORBAサービスアプリケーション呼出し.....................................................................................................................................130
2.26 IIOP通信で使用できる時間監視機能..........................................................................................................................................132
2.26.1 IIOP接続の待機時間監視機能.............................................................................................................................................133
2.26.2 IIOP通信時のサーバメソッド復帰時間監視機能..................................................................................................................138
2.26.3 IIOP通信ソケットの送受信待機時間監視機能 ....................................................................................................................140
2.26.4 IIOP通信クライアントの無通信監視機能..............................................................................................................................142
第3章 Java EEアプリケーションの開発...................................................................................................................................144
3.1 アプリケーションの作成方法...........................................................................................................................................................144
3.1.1 Java EEアプリケーションの準備...............................................................................................................................................144
3.1.2 Webサービスアプリケーションの開発......................................................................................................................................144
3.1.3 Webサービスクライアントアプリケーションの開発...................................................................................................................148
3.1.4 Webサービスの通信で利用できるデータ型............................................................................................................................151
3.1.5 Webサービス・Webサービスクライアントで使用するWSDLの記述について.........................................................................160
3.1.6 クライアントアプリケーションの作成方法.................................................................................................................................161
3.1.7 JNDIの使用方法......................................................................................................................................................................162
3.1.8 データベース連携アプリケーションの作成方法.....................................................................................................................163
3.1.9 ライフサイクルモジュールの作成方法.....................................................................................................................................165
3.1.10 J2EE/Java EE連携アプリケーションの作成方法...................................................................................................................168
3.1.11 IPCOMと連携する場合の注意事項......................................................................................................................................169
3.1.12 ネットワークの共有資源へアクセスする場合の環境設定.....................................................................................................170
3.1.13 Java EEアプリケーションからCORBAサービスアプリケーションの呼出し方法....................................................................172
3.2 deployment descriptor......................................................................................................................................................................175
3.2.1 deployment descriptor(web.xml)に関する注意事項...............................................................................................................176
3.2.2 Java EE規約で規定されたdeployment descriptor...................................................................................................................179
3.2.2.1 Java EE application deployment descriptor (application.xml)..........................................................................................179
3.2.2.2 Web application deployment descriptor (web.xml)...........................................................................................................181
3.2.2.3 デフォルトのmimeタイプ....................................................................................................................................................200
3.2.3 Interstage deployment descriptor..............................................................................................................................................204
3.2.3.1 Interstage application deployment descriptor (sun-application.xml)................................................................................205
3.2.3.2 Interstage Web application deployment descriptor (sun-web.xml)...................................................................................205
3.2.3.3 Interstage EJB application deployment descriptor (sun-ejb-jar.xml)................................................................................208
3.2.3.4 Interstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)...................................................................212
3.2.3.5 Interstage application client deployment descriptor (sun-application-client.xml)............................................................213
3.2.3.6 Interstage ACC deployment descriptor (sun-acc.xml)......................................................................................................215
3.2.3.7 Interstage deployment descriptorのタグの説明.................................................................................................................215
3.3 アプリケーションのデバッグ.............................................................................................................................................................232
3.3.1 アプリケーションのデバッグ情報を利用したデバッグ.............................................................................................................232
3.3.2 デバッガを利用したデバッグ...................................................................................................................................................233
3.3.3 スレッドダンプを利用したデバッグ...........................................................................................................................................233
3.3.4 Javaメソッドトレースを利用したデバッグ..................................................................................................................................233
第4章 Java EEアプリケーションの運用...................................................................................................................................234
4.1 Interstage Java EE管理コンソールを利用した運用........................................................................................................................234
4.1.1 Interstage Java EE管理コンソールの運用方法について........................................................................................................235
4.2 コマンドを利用した運用..................................................................................................................................................................237
4.3 Interstage Java EE DASサービスの運用........................................................................................................................................237
4.3.1 運用操作..................................................................................................................................................................................237
4.3.2 設定変更..................................................................................................................................................................................237
4.3.3 環境変数の設定.......................................................................................................................................................................237
4.3.4 アプリケーションの配備............................................................................................................................................................237
- vi -
4.3.5 リソースの作成..........................................................................................................................................................................238
4.3.6 アプリケーションの運用............................................................................................................................................................238
4.3.6.1 Webアプリケーションの実行.............................................................................................................................................238
4.3.7 サービスの自動起動/自動停止...............................................................................................................................................238
4.4 Interstage Java EE Node Agentサービスの運用.............................................................................................................................239
4.4.1 運用操作..................................................................................................................................................................................239
4.4.2 設定変更..................................................................................................................................................................................240
4.4.3 環境変数の設定.......................................................................................................................................................................240
4.4.4 サービスの自動起動/自動停止...............................................................................................................................................241
4.5 IJServerクラスタの運用....................................................................................................................................................................241
4.5.1 IJServerクラスタの作成/削除....................................................................................................................................................241
4.5.2 設定の管理...............................................................................................................................................................................241
4.5.3 サーバーインスタンスの追加/削除..........................................................................................................................................243
4.5.4 IJServerクラスタの起動/停止/運用状態表示...........................................................................................................................244
4.5.5 サーバーインスタンスの起動/停止/運用状態表示.................................................................................................................245
4.5.6 縮退状態のIJServerクラスタの復旧.........................................................................................................................................246
4.5.7 IJServerクラスタの自動起動/自動停止....................................................................................................................................246
4.5.8 運用操作の同時実行...............................................................................................................................................................246
4.6 アプリケーションの配備...................................................................................................................................................................248
4.6.1 Java EEの配備概要..................................................................................................................................................................249
4.6.2 アプリケーションの配備手順....................................................................................................................................................249
4.6.3 アプリケーションの検証............................................................................................................................................................250
4.6.4 ディレクトリ展開済みアプリケーションの配備..........................................................................................................................251
4.6.5 アプリケーションの配備解除手順............................................................................................................................................252
4.6.6 配備済みアプリケーションの一覧............................................................................................................................................252
4.6.7 配備済みアプリケーションの環境設定....................................................................................................................................253
4.6.8 配備済みアプリケーションのDeployment Descriptor参照......................................................................................................253
4.6.9 アプリケーションの展開............................................................................................................................................................254
4.6.10 アプリケーションの展開解除..................................................................................................................................................254
4.6.11 展開中アプリケーションの一覧..............................................................................................................................................254
4.6.12 アプリケーションの活性変更..................................................................................................................................................255
4.6.13 アプリケーションの再配備......................................................................................................................................................256
4.6.14 アプリケーションのオートリロード...........................................................................................................................................257
4.7 Webコンテナの運用準備................................................................................................................................................................259
4.7.1 Webアプリケーションへアクセスする場合の運用....................................................................................................................259
4.7.1.1 通信経路の違いによる運用形態......................................................................................................................................259
4.7.1.2 多重度の違いによる運用形態..........................................................................................................................................260
4.7.1.2.1 単一プロセスによる運用............................................................................................................................................260
4.7.1.2.2 1台のマシンでの多重プロセスによる運用................................................................................................................261
4.7.1.2.3 複数台のマシンによる運用........................................................................................................................................262
4.7.1.3 SSLアクセラレータを使用する場合の運用形態..............................................................................................................263
4.7.1.4 Webアプリケーションへのアクセスの運用形態を変更する場合.....................................................................................263
4.8 Webサーバを経由する場合の運用準備........................................................................................................................................265
4.8.1 Webサーバの環境設定...........................................................................................................................................................265
4.8.1.1 Interstage HTTP Serverの環境設定.................................................................................................................................265
4.8.1.2 Microsoft(R) Internet Information Services 6.0の環境設定 ...........................................................................................266
4.8.1.3 Microsoft(R) Internet Information Services 7.0/7.5の環境設定 .....................................................................................269
4.8.2 WebサーバとIJServerクラスタの連携.......................................................................................................................................273
4.8.2.1 WebサーバとIJServerクラスタを同じマシンで運用する場合...........................................................................................273
4.8.2.2 WebサーバとIJServerクラスタを別のマシンで運用する場合...........................................................................................274
4.8.2.3 Webサーバコネクタのログ.................................................................................................................................................275
4.8.2.4 IJServer(J2EE)とIJServerクラスタの共存...........................................................................................................................275
4.8.2.5 システム環境設定「Webサーバとワークユニットを同一のマシンで運用する」の設定変更について.............................276
4.9 Webサーバコネクタにおけるリクエストの振り分け制御..................................................................................................................276
4.9.1 コマンドによる振り分け操作と状態表示..................................................................................................................................277
4.9.2 Webサーバコネクタの故障監視..............................................................................................................................................280
4.10 Java EEアプリケーションクライアントの運用.................................................................................................................................286
- vii -
4.10.1 Java EEアプリケーションクライアントの環境設定..................................................................................................................286
4.10.2 Java EEアプリケーションクライアントの運用操作..................................................................................................................288
4.11 Webサービスを利用する場合の手順...........................................................................................................................................290
4.11.1 Webサービスアプリケーションの配備....................................................................................................................................290
4.11.2 Webサービス運用環境のカスタマイズ..................................................................................................................................291
4.12 Webサービスクライアントを利用する場合の手順........................................................................................................................292
4.12.1 Webサービスクライアントの運用環境....................................................................................................................................292
4.12.2 Webサービスクライアントの実行............................................................................................................................................292
4.13 JNDIの環境設定...........................................................................................................................................................................293
4.13.1 環境変数の設定.....................................................................................................................................................................293
4.13.2 初期コンテキスト生成時の設定.............................................................................................................................................293
4.13.3 クライアントからサーバに接続する場合の設定.....................................................................................................................294
4.13.4 オブジェクトリファレンスのキャッシュの設定..........................................................................................................................295
4.14 リソース定義の準備.......................................................................................................................................................................296
4.14.1 JMSを利用する場合の手順...................................................................................................................................................296
4.14.2 JavaMailを利用する場合の手順...........................................................................................................................................296
4.14.3 JDBCを利用する場合の手順................................................................................................................................................296
4.14.4 コネクタを利用する場合の手順.............................................................................................................................................296
4.14.5 その他リソースを利用する場合の手順..................................................................................................................................296
4.14.5.1 カスタムリソースの定義方法............................................................................................................................................297
4.14.5.2 外部リソースの定義方法.................................................................................................................................................298
4.14.6 リソースの状態を変更する場合の手順..................................................................................................................................299
4.14.7 リソースを利用するターゲットを選択する場合の手順...........................................................................................................301
4.15 データベースの環境設定.............................................................................................................................................................301
4.15.1 JDBCドライバの環境設定......................................................................................................................................................302
4.15.2 Java DB JDBCドライバ(Type4)..............................................................................................................................................306
4.15.3 Oracle Thin JDBCドライバ(Type4).........................................................................................................................................308
4.15.4 Oracle OCI JDBCドライバ(Type2).........................................................................................................................................310
4.15.5 PowerGres Plus JDBCドライバ(Type4)..................................................................................................................................312
4.15.6 Symfoware JDBCドライバ(Type2).........................................................................................................................................314
4.15.7 Microsoft(R) SQL Server(TM) JDBCドライバ(Type4)..........................................................................................................318
4.15.8 Ping機能.................................................................................................................................................................................320
4.16 JMSの運用方法............................................................................................................................................................................320
4.16.1 設計方法................................................................................................................................................................................321
4.16.2 ブローカの起動/停止.............................................................................................................................................................322
4.16.3 JMSのメッセージを送受信する準備......................................................................................................................................326
4.16.4 JMSクライアントアプリケーションの運用................................................................................................................................327
4.16.5 メッセージブローカのログ.......................................................................................................................................................328
4.16.6 メッセージブローカのアクセスログ.........................................................................................................................................329
4.17 コネクタの運用方法.......................................................................................................................................................................334
4.17.1 コネクタモジュールの配備とリソース定義の作成..................................................................................................................334
4.17.2 コネクタモジュールの配備解除とリソース定義の削除..........................................................................................................337
4.18 JMSリソースとコネクタリソースの関係...........................................................................................................................................337
4.19 J2EE/Java EE連携の環境設定.....................................................................................................................................................339
4.19.1 J2EE実行環境からJava EE実行環境のアプリケーションを呼び出す場合..........................................................................339
4.19.2 Java EE実行環境からJ2EE実行環境のアプリケーションを呼び出す場合..........................................................................340
4.20 J2EE/Java EE連携の運用.............................................................................................................................................................341
4.20.1 J2EE実行環境からJava EE実行環境のアプリケーションを呼び出す場合..........................................................................341
4.20.2 Java EE実行環境からJ2EE実行環境のアプリケーションを呼び出す場合..........................................................................341
4.21 Java EEアプリケーションのログ.....................................................................................................................................................341
4.21.1 サーバーログ..........................................................................................................................................................................344
4.21.2 Java VMログ...........................................................................................................................................................................345
4.21.3 HTTPアクセスログ..................................................................................................................................................................346
4.21.4 IIOPアクセスログ....................................................................................................................................................................349
4.21.5 HTTPトレースログ...................................................................................................................................................................359
4.21.6 ログファイルのローテーション................................................................................................................................................361
4.22 IPCOMを利用したIIOP通信の負荷分散.....................................................................................................................................364
- viii -
4.22.1 ロードバランスを使用しない/EJBディスパッチ機能によるロードバランスを利用する場合..................................................364
4.22.2 グループ管理サービスによるロードバランスを利用する場合..............................................................................................368
4.23 IIOP通信におけるリクエストの振り分け制御................................................................................................................................372
4.23.1 システム設計..........................................................................................................................................................................372
4.23.1.1 EJBディスパッチ機能のチューニングポイント................................................................................................................374
4.23.1.2 IPCOM連携で利用可能なEnterprise JavaBeans種別...................................................................................................374
4.23.2 ロードバランス/フェイルオーバーアルゴリズム......................................................................................................................375
4.23.2.1 ロードバランス機能を使用しない場合............................................................................................................................375
4.23.2.2 EJBディスパッチ機能によるロードバランス....................................................................................................................375
4.23.2.3 グループ管理サービスによるロードバランス..................................................................................................................379
4.23.3 サーバーの設定.....................................................................................................................................................................380
4.23.3.1 ロードバランス機能を使用しない場合............................................................................................................................381
4.23.3.2 EJBディスパッチ機能によるロードバランス....................................................................................................................381
4.23.3.3 グループ管理サービスによるロードバランス..................................................................................................................381
4.23.4 クライアント(呼び出し元)の設定............................................................................................................................................382
4.23.4.1 ロードバランス機能を使用しない場合............................................................................................................................382
4.23.4.2 EJBディスパッチ機能によるロードバランス....................................................................................................................383
4.23.4.3 グループ管理サービスによるロードバランス..................................................................................................................384
4.23.5 オブジェクトリファレンスのフェイルオーバー設定.................................................................................................................385
4.24 Enterprise JavaBeansへアクセスする場合の運用.........................................................................................................................385
4.24.1 Session Beanへアクセスする場合..........................................................................................................................................386
4.24.2 Message-driven Beanへアクセスする場合.............................................................................................................................388
4.25 Symfowareの監査証跡.................................................................................................................................................................388
4.25.1 設計方法................................................................................................................................................................................388
4.25.2 運用方法................................................................................................................................................................................389
第5章 Java EE機能のセキュリティ.........................................................................................................................................390
5.1 Java EE運用環境のセキュリティ機能..............................................................................................................................................390
5.1.1 Java EE運用環境のロール.......................................................................................................................................................390
5.1.2 IJServerクラスタのプロセスの実効権限...................................................................................................................................391
5.1.3 ログイン認証.............................................................................................................................................................................391
5.1.4 権限と認証ユーザー................................................................................................................................................................391
5.1.5 管理ユーザーの登録...............................................................................................................................................................394
5.1.5.1 ログイン認証のためのレルム............................................................................................................................................394
5.1.5.2 レルムの種類の変更方法.................................................................................................................................................395
5.1.5.3 OSレルムの設定................................................................................................................................................................396
5.1.5.4 fileレルムの設定................................................................................................................................................................397
5.1.5.5 ldapレルムの設定..............................................................................................................................................................399
5.1.5.6 admin-realmおよび管理ユーザーの情報更新時の注意.................................................................................................402
5.1.6 管理ユーザーの指定...............................................................................................................................................................403
5.1.6.1 Interstage Java EE DAS / Interstage Java EE Node Agentサービス起動時のログイン認証............................................403
5.1.6.2 asadminコマンドのログイン認証........................................................................................................................................404
5.2 Java EEアプリケーションのセキュリティ機能...................................................................................................................................405
5.2.1 認証..........................................................................................................................................................................................405
5.2.2 認可..........................................................................................................................................................................................406
5.2.3 SSL............................................................................................................................................................................................407
5.2.3.1 SSLを使用できる通信.......................................................................................................................................................407
5.2.3.2 キーストアの設定...............................................................................................................................................................409
5.2.4 ユーザ/グループ/ロール..........................................................................................................................................................412
5.2.5 レルム........................................................................................................................................................................................413
5.2.6 クライアントとWebサーバ間の通信データの保証に関する要求............................................................................................413
5.2.7 EJBコンテナへの認証情報の伝播..........................................................................................................................................413
5.2.8 セキュリティーマネージャー.....................................................................................................................................................416
5.3 セキュリティ機能を利用した運用方法............................................................................................................................................416
5.3.1 ロールとロールベースのアクセス制限の設定.........................................................................................................................417
5.3.2 ユーザ/グループをロールにマッピング...................................................................................................................................417
5.3.3 レルムの作成............................................................................................................................................................................417
- ix -
5.3.4 デフォルトレルムの設定...........................................................................................................................................................418
5.3.5 ldapレルムの設定.....................................................................................................................................................................418
5.3.6 fileレルムの設定.......................................................................................................................................................................419
5.3.7 アプリケーション開発者/配備担当者/システム管理者を同一の担当者が担う場合..............................................................420
5.3.8 セキュリティーマネージャーの運用.........................................................................................................................................421
5.3.8.1 セキュリティーマネージャーの有効化と無効化................................................................................................................421
5.3.8.2 policyファイルの編集........................................................................................................................................................421
5.3.8.3 アプリケーションのアクセス権の設定................................................................................................................................422
5.4 Webサービスのセキュリティ設定....................................................................................................................................................423
5.5 Webサービスクライアントのセキュリティ設定..................................................................................................................................424
5.6 リソースアクセス時の認証情報.......................................................................................................................................................424
5.7 JMSのセキュリティ機能...................................................................................................................................................................427
5.7.1 ユーザとグループ.....................................................................................................................................................................427
5.7.2 アクセス制御プロパティファイル..............................................................................................................................................427
5.7.3 アプリケーションからJMSを利用する際の認証方法...............................................................................................................432
5.8 Symfowareの監査証跡...................................................................................................................................................................432
5.8.1 Symfowareの監査証跡の実行................................................................................................................................................433
5.8.2 出力情報の内容.......................................................................................................................................................................433
5.8.2.1 Symfowareの監査ログとの対応........................................................................................................................................433
5.8.2.2 各種操作の記録情報........................................................................................................................................................434
第6章 定義項目一覧..............................................................................................................................................................436
6.1 ドメインの定義項目..........................................................................................................................................................................436
6.2 Interstage Java EE Node Agentサービスの定義項目.....................................................................................................................437
6.2.1 ロガーの定義項目....................................................................................................................................................................440
6.3 サーバーインスタンスの定義項目..................................................................................................................................................441
6.4 クラスタの定義項目.........................................................................................................................................................................442
6.4.1 IIOPロードバランスの定義項目...............................................................................................................................................444
6.4.2 JNDIサービスの定義項目.......................................................................................................................................................445
6.5 アプリケーションに関する定義項目................................................................................................................................................446
6.5.1 Java EEアプリケーションの定義項目.......................................................................................................................................446
6.5.2 Webアプリケーションの定義項目............................................................................................................................................448
6.5.3 EJBモジュールの定義項目......................................................................................................................................................449
6.5.4 アプリケーションクライアントモジュールの定義項目...............................................................................................................450
6.5.5 コネクタモジュールの定義項目...............................................................................................................................................451
6.5.6 ライフサイクルモジュールの定義項目.....................................................................................................................................452
6.6 リソースに関する定義項目..............................................................................................................................................................454
6.6.1 JDBC接続プールの定義項目.................................................................................................................................................454
6.6.2 JDBCリソースの定義項目........................................................................................................................................................459
6.6.3 JMS接続ファクトリの定義項目.................................................................................................................................................460
6.6.4 JMS送信先リソースの定義項目...............................................................................................................................................463
6.6.5 JavaMailセッションの定義項目................................................................................................................................................464
6.6.6 コネクタ接続プールの定義項目..............................................................................................................................................467
6.6.7 コネクタリソースの定義項目.....................................................................................................................................................470
6.6.8 管理オブジェクトリソースの定義項目......................................................................................................................................471
6.6.9 リソースアダプタ定義情報の定義項目....................................................................................................................................472
6.6.10 カスタムリソースの定義項目...................................................................................................................................................473
6.6.11 外部リソースの定義項目........................................................................................................................................................474
6.7 メッセージブローカのオプションプロパティ....................................................................................................................................475
6.7.1 接続サービスに関するプロパティ............................................................................................................................................475
6.7.2 ルーティングサービスに関するプロパティ...............................................................................................................................477
6.7.3 物理格納先自動生成に関するプロパティ..............................................................................................................................479
6.7.4 持続サービスに関するプロパティ............................................................................................................................................482
6.7.5 セキュリティに関するプロパティ...............................................................................................................................................482
6.7.6 ログ機能に関するプロパティ....................................................................................................................................................482
6.7.7 物理格納先の生成または更新に関するプロパティ................................................................................................................484
6.8 動作環境に関する定義項目..........................................................................................................................................................487
-x-
6.8.1 定義時に利用できるプロパティ...............................................................................................................................................487
6.8.2 設定の定義項目.......................................................................................................................................................................490
6.8.3 HTTPサービスの定義項目......................................................................................................................................................491
6.8.4 IIOPサービスの定義項目........................................................................................................................................................502
6.8.5 管理サービスの定義項目........................................................................................................................................................507
6.8.6 コネクタサービスの定義項目...................................................................................................................................................510
6.8.7 Webコンテナの定義項目.........................................................................................................................................................510
6.8.8 EJBコンテナの定義項目..........................................................................................................................................................511
6.8.9 Message-driven Beanデフォルトプールの定義項目...............................................................................................................516
6.8.10 JMSサービスの定義項目.......................................................................................................................................................517
6.8.11 ロガーの定義項目..................................................................................................................................................................518
6.8.12 セキュリティの定義項目.........................................................................................................................................................519
6.8.13 トランザクションサービスの定義項目.....................................................................................................................................522
6.8.14 監視サービスの定義項目......................................................................................................................................................526
6.8.15 Java VMの定義項目..............................................................................................................................................................528
6.8.16 スレッドプールの定義項目.....................................................................................................................................................532
6.8.17 グループ管理サービスの定義項目.......................................................................................................................................533
6.8.18 システムプロパティの定義項目..............................................................................................................................................534
6.8.19 プロセス制御の定義項目.......................................................................................................................................................535
6.9 システムプロパティの定義項目.......................................................................................................................................................537
第7章 サンプル......................................................................................................................................................................538
7.1 Java EEのサンプル..........................................................................................................................................................................538
付録A Java DB.....................................................................................................................................................................539
A.1 環境設定.........................................................................................................................................................................................539
A.2 Java DBの運用操作.......................................................................................................................................................................540
A.3 Java DBのシステムディレクトリ.......................................................................................................................................................540
A.4 SQL言語.........................................................................................................................................................................................541
A.5 データベースに接続する時のURL属性.......................................................................................................................................543
A.6 データソースプロパティ..................................................................................................................................................................544
A.7 セキュリティ機能.............................................................................................................................................................................544
A.8 Derbyプロパティ(Derby properties)................................................................................................................................................546
A.9 ツール.............................................................................................................................................................................................546
A.10 トラブルシューティング.................................................................................................................................................................546
付録B ファイル構成................................................................................................................................................................548
B.1 Interstage Java EE DASサービスのファイル構成..........................................................................................................................548
B.2 Interstage Java EE Node Agentサービスのファイル構成...............................................................................................................549
B.3 IJServerクラスタのファイル構成......................................................................................................................................................549
付録C Interstage HTTP Serverとの機能比較........................................................................................................................552
C.1 Interstage HTTP ServerとJava EEの機能の違い...........................................................................................................................552
C.2 アクセスログの出力項目の違い.....................................................................................................................................................554
付録D 非推奨機能.................................................................................................................................................................557
D.1 Entity Bean......................................................................................................................................................................................557
D.1.1 CMP Entity Beanのデータベースマッピング定義の設定方法..............................................................................................557
D.1.2 Javaのデータ型とDBMSのSQLデータ型のマッピングについて...........................................................................................559
D.1.3 EJB 1.1のCMP Entity Beanのfinderメソッドの検索条件定義の指定....................................................................................560
D.1.4 SQLログ機能...........................................................................................................................................................................563
D.1.5 Entity Beanのチューニング.....................................................................................................................................................564
D.1.6 CMP1.1のDBカラムにマッピングするCMF選択機能............................................................................................................565
D.1.7 CMP Entity Beanでサポートするデータベース......................................................................................................................567
D.1.7.1 CMPデータのstream転送.................................................................................................................................................568
D.1.7.2 CMPの複数レコードの一括更新、一括挿入...................................................................................................................568
D.1.8 検索時のロック機能(SELECT FOR UPDATE)......................................................................................................................568
付録E サポート規約一覧........................................................................................................................................................570
- xi -
索引......................................................................................................................................................................................571
- xii -
第1章 Java EEの概要
Interstage Java EEはJava SE環境をベースとして、企業規模の多階層サービスの実装に必要とされるさまざまな機能を提
供します。また、アプリケーションの移植性を最大限に向上させるために、オープンソースソフトウェアであるGlassFish v2.1
をベースとしています。
Java EE 5の詳細情報については、以下の規約を参照してください。
・ JSR 244: Java(TM) Platform, Enterprise Edition 5 (Java EE 5) Specification
Java EE 5のAPI仕様については、Java EE 5のAPI仕様「http://java.sun.com/javaee/5/docs/api/」(※2009/5月時点のURL
です。変更される可能性があります。)を参照してください。
Java EEの構成
以下にJava EEの構成について説明します。
Java EEコンポーネント
Interstage Java EEは、Java EEアプリケーションクライアント、Servlet/JSP、Enterprise JavaBeanという3つのアプリケーション
コンポーネントの実行環境を提供します。これらを、Java EEコンポーネントと呼びます。Java EEコンポーネントは、配備と
いう操作を行うことで実行環境にセットアップされます。
Java EEアプリケーションクライアント
Java EEアプリケーションクライアントは、アプリケーションクライアントコンテナ上で実行するJavaアプリケーションです。
クライアントからサーバ環境のアプリケーションにアクセスします。
-1-
Servlet/JSP
Servlet/JSPは、WebブラウザからHTTPプロトコル、または、よりセキュアなHTTPSプロトコルでWebサーバに送信され
たリクエストで動作します。また、Webサービスとして公開することもできます。Servlet、JSPまたはJSFを使用して作成
されたページ、Webフィルタ、Webイベントリスナーを総称してWebコンポーネントと呼びます。
Enterprise JavaBeans(EJB)
Enterprise JavaBeans(EJB)は、サーバで動作するアプリケーションです。Servletからアクセスする、または、IIOPプロト
コルによりORB(Object Request Broker)を介してクライアントから直接アクセスすることもできます。クライアントからの要
求を受けたEnterprise JavaBeansにデータベースアクセス処理などの実際のビジネスロジックを実装します。Webサー
ビスとして公開することや、非同期メッセージを受信するMessage-driven Beanも使用できます。
リモート呼び出しが可能なRemoteインタフェースと、同一Java VM内でのみ呼び出し可能なLocalインタフェースが使
用できます。Remoteインタフェースを使用した場合においても同一Java VM内で呼び出した場合にはORBが自動的
にIIOP通信を介さずにアプリケーションを呼び出し、不要なネットワーク通信が抑止されるため、性能が最適化されま
す。
また、クライアントアプリケーションとして以下のアプリケーションコンポーネントの実行も可能です。
Java SEスタンドアロンアプリケーション
Java SEスタンドアロンアプリケーションは、スタンドアロンクライアント(javaコマンドで起動されたJava SE実行環境)上
で実行するJavaアプリケーションです。クライアントからサーバ環境のアプリケーションにアクセスします。ただし、Java
EEアプリケーションクライアントと異なりJava EE規約の依存性の注入(Dependency Injection)やdeployment descriptor
ファイル(application-client.xml)の利用ができません。このため、汎用的なアプリケーションではないため、Java EEア
プリケーションクライアントの利用が推奨されます。
注意
アプレットからJava EEが提供するAPI(JNDI APIやEnterprise JavaBeansの呼び出し)は実行できません。
コンテナ
コンテナは、Java EEコンポーネントのセキュリティやトランザクションを管理するサービスを提供する実行環境です。Servlet
やJSPなどのWebコンポーネントは、Webコンテナで実行されます。Enterprise Java Beansは、EJBコンテナ内で実行され
ます。Java EEアプリケーションクライアントは、アプリケーションクライアントコンテナで実行されます。
Interstage Java EEは、WebコンテナとEJBコンテナの上位に位置づけられる論理的な概念をIJServerクラスタと呼びます。
Java EE 5規約で説明されているアプリケーションサーバが、Interstage Java EEのIJServerクラスタに相当します。
サービス
Java EEコンポーネントは、コンテナが提供する各種サービスを使用できます。Java EEコンポーネントは、deployment
descriptorというJava EEコンポーネントごとの定義ファイルに定義を行うか、または、Dependency Injectionを使用することで、
コンテナが提供するネーミングサービス、セキュリティサービス、トランザクションサービスなどの各種サービスを使用でき
ます。
API
Java EE実行環境は、コンテナが提供する各種サービスの動作を制御するAPIや外部の各種システムにアクセスできる
APIを提供します。Java EEコンポーネントは、リソースと呼ばれるオブジェクトを介して外部システムにアクセスします。ツー
ルを使用してリソースを定義することで、アプリケーションコンポーネントからAPIを使用してリソースにアクセスできます。
APIには、データベースにアクセスするJDBC、EISにアクセスするconnector、非同期メッセージの送受信を行うJMS、メー
ルサーバにメールの送受信を行うJava Mailなどが用意されています。
ツール
Interstage Java EEは、アプリケーションコンポーネントの配備、サービス設定、リソース定義などの設定を行うために各種
ツールを提供しています。
Interstage Java EE管理コンソール
Interstage Java EE管理コンソールは、WebベースのGUIツールです。以下のようにWebブラウザにURLを入力してログイ
ンすることで、サーバの各種設定を行うことができます。以下はInterstage管理コンソールのセキュリティ運用形態がデフォ
ルトのSSL暗号化通信を使用する場合(HTTPS通信の場合)で、サーバのホスト名が「hostname」の場合の例です。
-2-
・ https://hostname:12001/javaee_admin/
各種コマンド
asadminコマンドなど提供する各種コマンドを使用することで、Java EE実行環境の各種設定を行うことができます。
1.1 Servlet/JSP
Webコンテナは、サーバ上でWebアプリケーションの実行を制御するコンポーネントです。
Webアプリケーションは、HTMLファイル、イメージファイル、サーブレット、JSPファイルなどのWebリソースから構成されて
いるアプリケーションです。
WebサーバではHTMLファイルやイメージファイル(静的コンテンツ)の制御が可能ですが、Webコンテナは、それに加え、
サーブレットやJSPファイル(動的コンテンツ)の制御を行っています。
1.2 Enterprise JavaBeans (EJB)
Enterprise JavaBeans(以降、EJBと略します)は、EJB規約に準拠した、サーバアプリケーションを実行するためのコンポー
ネントアーキテクチャです。EJBコンテナは、トランザクション、セキュリティ、並列処理、リモートアクセス、配信、対話状態
管理、データの永続化の機能を提供しているコンテナであるため、開発者はビジネスロジックに集中できます。
クライアントアプリケーションの形態としては、サーブレット、Java EEアプリケーションクライアントなどが利用できます。
EJBアプリケーションは、EJB規約をサポートする開発ツールを使用して開発します。
以下にInterstageとEJBコンテナの関係図を示します。
-3-
EJBアプリケーションは、Session BeanとMessage-driven Beanというコンポーネントから構成され、ビジネスロジックを実現
します。EJBのJava Persistence APIを使用して、業務データを持つEntityをデータベースに永続化します。Java Persistence
APIについては、「1.3 Java Persistence API (JPA)」を参照してください。
1.3 Java Persistence API (JPA)
Java Persistence API(以降、JPAと略します)は、EJB 3.0規約から派生したJavaオブジェクトの永続化と、リレーショナルデー
タベースとのO/Rマッピングを行うJavaのAPIです。
Java EEアプリケーションで業務データをリレーショナルデータベースに永続化する場合、Java Persistence APIの採用を
推奨します。業務データのオブジェクトを、Java Persistence Entity、またはEntityと呼びます。Entityは、Enterprise JavaBean
またはEntity Beanの種類の1つではありません。このオブジェクトは、普通のJavaオブジェクト(POJO)であり、特定のインタ
フェースを実装する必要がありません。このため、永続化に必要なコード量が削減されます。
JPAは、サーブレット、JSP、EJBアプリケーションやJava EEアプリケーションクライアントから使用できます。また、JPAはコ
ンテナがない環境でも動作させることができるため、Java SEスタンドアロンアプリケーションでテストすることにより開発生
産性が向上します。ただし、Java SEスタンドアロンアプリケーションでの利用は動作保証外であるため、業務運用時には
必ずコンテナの実行環境(IJServerクラスタ)で使用してください。
1.4 Webサービス
Webサービスとは、任意の方法で実現されたサーバプログラム(Webサービスアプリケーション)を、インターネット標準の
技術を利用してネットワーク経由でアクセスできるように構築したものです。通信プロトコルにはSOAPを用い、利用(アク
セス)するためのインタフェース情報の記述にはWSDLを用います。
Webサービスを利用する(呼出す)場合は、利用先(呼出し先)が提供するWSDLに記述されたインタフェース情報に基づ
き、SOAPでリクエストを行うクライアントプログラム(Webサービスクライアント)を任意の方法で作成します。
本機能では、Web Services for Java EE規約Version 1.2に従ったWebアプリケーションまたはEJBアプリケーションとして
実装でき、WS-I Basic Profile 1.1に対応しています。
-4-
以下に本製品でサポートするJava EEのWebサービス関連規約について説明します。
Web Services for Java EE 1.2
Java EE環境でWebサービスを開発・運用するためのAPI/deployment descriptor/モジュール構成などを規定しています。
本規約に従うことで、可搬性の高いWebサービスアプリケーションやWebサービスクライアントアプリケーションを開
発・運用可能になります。
Web Services for Java EEではAPIに JAX-WS を使用します。
JAX-WS
Webサービスアプリケーション、およびWebサービスクライアントを実装するためのJavaの標準APIです。規約バージョ
ンとしては2.1をサポートしますが、安定性やそのほかの観点からJava EE 5の規定である2.0範囲での利用を推奨しま
す。JAX-RPCと比較してJAX-WSでサポートされる主な機能を示します。
- Java 5.0の新機能(アノテーションなど)を利用したEoD
- より広い範囲でのXMLスキーマをサポート
- MTOM(SOAP Message Transmission Optimization Mechanism)のサポート
1.5 トランザクションサービス
トランザクションサービスは、業務データを管理するシステムにおいて、データの検索/更新の結果を保証するためのサー
ビスを提供します。
以下にトランザクションサービスの構成を記載します。
-5-
トランザクションサービスの構成要素について以下に説明します。
JTA
JTAは、Java EEコンポーネントとトランザクションマネージャ間のインタフェースです。Java EEコンポーネントは、JTA
を使用してトランザクションの開始と完了をトランザクションマネージャに要求できます。
データベースやJMSなどのリソースを管理する各リソースマネージャは、各リソースのトランザクションを管理する固有
のAPI(例えば、java.sql.Connectionクラスのcommitメソッドなど)を提供しますが、JTAを利用することでJava EEが提供
する各リソースを共通のインタフェースでトランザクション制御できます。また、グローバルトランザクションで複数のリ
ソースを1つのトランザクションとして統合して管理できます。
トランザクションマネージャ
トランザクションマネージャは、Java EEコンポーネントからトランザクションの開始と完了の要求を受けて、リソースマ
ネージャに対して必要な操作を行います。
XAインタフェース
XAインタフェースは、トランザクションマネージャとリソースマネージャ間のインタフェースを定義します。
グローバルトランザクションをサポートする各リソースマネージャ(リレーショナルデータベースやJMS)は、XAインタ
フェースを提供しています。XAインタフェースを提供するリソースをXAリソース、XAインタフェースを提供しないリソー
スを非XAリソースと呼びます。
XAインタフェースをサポートしていないリソースマネージャもあります。XAインタフェースのサポート状況については、
使用するリソースマネージャ(JDBCドライバなど)のマニュアルを参照してください。
リソースマネージャ
リソースマネージャは、共有するリソースを管理します。本製品でトランザクション管理可能なリソースマネージャは、
以下の3つです。
- データベース/JDBCドライバ
- JMSプロバイダ
- Java EE Connector Architectureコンポーネント
-6-
1.6 Java Message Service (JMS)
本製品が提供するInterstage Java EEのJMSは、Java EE規約で規定された非同期によるメッセージ通信を行うJava APIで
す。非同期によるメッセージ通信のメリットは、メッセージの受信アプリケーション(Consumer)の稼動状態に依存すること
なく、送信アプリケーション(Producer)がメッセージを送受信できることです。
Interstage JMSでは、JMS規約のメッセージプロバイダに該当する機能をサポートしています。
メッセージプロバイダは、JMSクライアントと接続し、メッセージの送受信の要求を受け付けて、処理します。
ポイント
上記の説明の用語は、本マニュアルの説明において以下のように呼びます。
上記の説明の用語
本マニュアルでの呼び方
Interstage Java EEのJMS
Interstage JMS
メッセージの送信アプリケーション
Producer
メッセージの受信アプリケーション
Consumer
ProducerとConsumerの総称
JMSクライアント
JMS規約のメッセージプロバイダ
メッセージブローカ
1.7 Java EE Connector Architecture (コネクタ)
Java EE Connector Architecture(コネクタと略します)は、アプリケーションがEIS(Enterprise Information System)と対話す
ることを可能にするアーキテクチャの仕様です。Java EE Connector Architecture規約に従って作成されたアプリケーショ
ンをリソースアダプタと呼びます。EISソフトウェアには、様々な種類のシステムが含まれます。ERP(Enterprise Resource
Planning)、メインフレームトランザクション処理、非リレーショナルデータベースなどです。特に対象を限定していないため、
通常のデータベースを対象としたリソースアダプタを用意することも可能です。
リソースアダプタの提供者は、Java EE Connector Architecture規約に準じた仕様でリソースアダプタを提供することで、
Interstageのトランザクション管理やセキュリティ管理などの機能を利用できます。リソースアダプタはrarファイル(コネクタ
モジュール)で提供し、warモジュールやejb-jarモジュールと同様に、単体またはearモジュールへ含めてInterstageへ配
備して利用します。
-7-
リソースアダプタの種別には、Java EEアプリケーションからの要求をEISへ通知する同期型のリソースアダプタ(アウトバウ
ンド・リソースアダプタ)と、EISから非同期で通知されるメッセージをJava EEアプリケーションで処理するリソースアダプタ
(インバウンド・リソースアダプタ)があります。
-8-
第2章 Java EEアプリケーションの提供機能
本章では、Java EEアプリケーションの提供機能について説明します。
本製品で提供するJava EE対応の実行環境では、複数プロセス構成やプロセス監視、異常時のリカバリ機能を持ったア
プリケーション運用環境として、IJServerクラスタと操作コマンド一式を提供します。
これらを利用すると、ユーザは高信頼なアプリケーション運用環境を容易に構築できます。
2.1 全体構成
ここでは、Interstage Java EEを運用するために必要な環境について説明します。
2.1.1 Interstage Java EE運用環境
Java EE実行環境では、複数プロセス構成やプロセス監視、異常時のリカバリ機能をもったアプリケーション運用環境とし
て、IJServerクラスタと操作コマンド一式、Interstage Java EE管理コンソールを提供します。
これらを利用すると、ユーザは高信頼なアプリケーション運用環境を容易に構築できます。
以下の図に示すように、Java EEのIJServerクラスタは、asadminコマンドまたはInterstage Java EE管理コンソールからの運
用操作が可能です。コマンドまたはInterstage Java EE管理コンソールからIJServerクラスタの運用操作が行われると、
Interstage Java EE DASサービスを経由してInterstage Java EE Node Agentサービスへ操作依頼が伝播し、ユーザアプリ
ケーションが運用されるJava VMであるサーバーインスタンスが起動・停止されます。
Interstage Java EE Node Agentサービスは、サーバーインスタンスも監視しています。サーバーインスタンスで異常が発生
した際は、メッセージ出力やリカバリなどの適切な対処を行います。
なお、Java EEのIJServerクラスタの運用操作は、Interstage Java EE DASサービス/Interstage Java EE Node Agentサービ
ス経由で行われます。
そのため、Java EEのIJServerクラスタの運用操作を行うには、Interstage Java EE DASサービス/Interstage Java EE Node
Agentサービスが起動していることが必須条件となります。
これらのサービス間の通信には、JMX/HTTP/RMIが利用されます。JMX/HTTPのチューニングについては、以下を参照
してください。
・ 「6.2 Interstage Java EE Node Agentサービスの定義項目」
・ 「6.8.3 HTTPサービスの定義項目」
・ 「6.8.5 管理サービスの定義項目」
図中の各要素について、以下に説明します。
-9-
Interstage Java EE管理コンソール
GUIでの運用管理を受け付けます。
asadminコマンド
CLIでの運用操作を受け付けます。
Interstage Java EE DASサービス
Interstage Java EEの運用管理を行うサービスです。
Interstage Java EE管理コンソール、asadminコマンドからの運用操作依頼を受け付けます。
Interstage Java EE Node Agentサービス
サーバーインスタンスの管理を行うサービスです。
サーバーインスタンスを起動・停止、監視します。
IJServerクラスタ
サーバーインスタンスの運用単位です。
サーバーインスタンスの起動・停止、定義変更、アプリケーションの配備などは、IJServerクラスタごとに行います。また、
サーバーインスタンス単体で起動・停止できます。
サーバーインスタンス
IJServerクラスタ上でアプリケーションを運用するJava VMです。
ドメイン
Interstage Java EE DASサービス/Interstage Java EE Node Agentサービス/サーバーインスタンス/IJServerクラスタを提
供する範囲です。
2.1.2 Java EEが利用するJDK、JRE
インストール時に選択したJDKが、Java EE運用環境のすべてのサービス、コンポーネントで有効となります。インストール
後にJava EEが利用するJDK(クライアントの場合はJRE)を変更したい場合は、Java EE運用環境を初期化してください。
Java EE運用環境の初期化については、「2.1.5 Java EE運用環境の初期化」を参照してください。
2.1.3 Java EE共通ディレクトリ
Interstage Java EE Node Agentサービス、IJServerクラスタ、およびInterstage Java EE DASサービスの資産は、Java EE共
通ディレクトリの配下に格納されます。
デフォルトのJava EE共通ディレクトリは以下です。
C:\Interstage\F3FMisjee\var (C:\Interstageにインストールした場合)
/var/opt/FJSVisjee
Java EE共通ディレクトリの配下は、以下のような構成となります。
domains\interstage
Interstage Java EE DASサービスが使用するファイル
nodeagents\ijna\agent
Interstage Java EE Node Agentサービスが使用するファイル
nodeagents\ijna\<サーバーイン
スタンス名>
IJServerクラスタが使用するファイル (注1)
commands
Java EE運用コマンドが利用するファイル
databases
JavaDBのシステムディレクトリ (注2)
- 10 -
domains/interstage
Interstage Java EE DASサービスが使用するファイル
nodeagents/ijna/agent
Interstage Java EE Node Agentサービスが使用するファイル
nodeagents/ijna/<サーバーインス
タンス名>
IJServerクラスタが使用するファイル (注1)
commands
Java EE運用コマンドが利用するファイル
databases
JavaDBのシステムディレクトリ (注2)
注1)
IJServerクラスタが使用するファイルの構成については、「2.4.2 IJServerクラスタのファイル構成」を参照してください。
注2)
JavaDBのシステムディレクトリについては、「A.3 Java DBのシステムディレクトリ」を参照してください。
なお、インストール時に、任意のディレクトリをJava EE共通ディレクトリに指定できます。
Java EE共通ディレクトリの変更方法については、「2.1.5 Java EE運用環境の初期化」を参照してください。
2.1.4 リポジトリの同期化処理
Java EE運用環境では、Interstage Java EE Node Agentサービス、およびサーバーインスタンスの実行に必要な資産を
Interstage Java EE DASサービスで集中的に管理しています。
これにより、Interstage Java EE Node Agentサービス、およびサーバーインスタンスのデータのメンテナンスが極力排除さ
れます。
資産の集中管理を実現するため、Java EE運用環境ではリポジトリの同期化処理を行っています。ここでは、リポジトリの
同期化処理について説明します。
Interstage Java EE Node Agentサービス、およびサーバーインスタンスは、それぞれのリポジトリキャッシュの定義情報や
資産を参照して動作します。
リポジトリの同期化処理では、Interstage Java EE Node Agentサービス、およびサーバーインスタンスの動作に必要な定
義情報が、中央リポジトリから各サービスのリポジトリキャッシュにコピーされます。
中央リポジトリおよびリポジトリキャッシュについて、以下に説明します。
- 11 -
中央リポジトリ
ドメイン全体の資産、Interstage Java EE Node Agentサービス、およびサーバーインスタンスの実行上必要となる様々
なデータを格納する領域で、以下のデータで構成されます。
- 定義情報(domain.xmlなど)
- ドメイン/サーバーインスタンスで使用するライブラリ(.jarファイル)やクラス(.classファイル)
- 配備されているアプリケーション
- アプリケーション用に生成されたファイル(EJBスタブ、コンパイル済み JSPクラス、セキュリティーポリシーファイル
など)
リポジトリキャッシュ
Interstage Java EE Node Agentサービス、およびサーバーインスタンスごとに存在し、中央リポジトリからコピーされた
domain.xmlなどの定義情報が格納されます。
それぞれのリポジトリキャッシュの同期化処理は、以下操作の延長で動作します。
・ Interstage Java EE Node Agentサービス
- Interstage Java EE Node Agentサービスの起動 (注1)
・ サーバーインスタンス
- IJServerクラスタ、またはサーバーインスタンスの起動
- アプリケーションのHotDeploy
注1)
Interstage Java EE DASサービスが未起動の場合、リポジトリの同期化処理は行われません。 Interstage Java EE Node
Agentサービスを停止した状態でInterstage Java EE Node Agentサービスの定義変更、または、IJServerクラスタの定
義変更、アプリケーションの更新を実施した場合は、Interstage Java EE DASサービスを起動した状態でInterstage Java
EE Node Agentサービスを起動してリポジトリキャッシュを最新化する必要があります。
2.1.5 Java EE運用環境の初期化
Java EE運用環境の初期化操作を行うと、定義情報と資産が初期化/削除され、インストール直後の状態を復元できます。
アプリケーションの運用やテストを行った環境を初期状態へ戻したい場合に利用します。初期化方法の詳細については、
「リファレンスマニュアル(コマンド編)」-「ijinit」を参照してください。
初期化時の動作
初期化操作を行った際の各資源の動作について、以下に説明します。
項目
IJServerクラスタ
初期化時の動作
備考
定義済みIJServerクラスタがすべて
削除されます。
- 12 -
項目
初期化時の動作
備考
サーバーインスタンス
定義済みサーバーインスタンスがす
べて削除されます。
アプリケーション
配備済みアプリケーションがすべて
削除されます。
システムが利用するアプリケーション
は再作成されます。
リソース
定義済みリソースがすべて削除され
ます。
システムが利用するリソースは再作
成されます。
システムプロパティ
定義済みシステムプロパティがすべ
て削除されます。
メッセージブローカ
作成済みメッセージブローカがすべ
て削除されます。
ユーザーは初期化操作の実行前に
すべてのブローカを停止する必要が
あります。
Webサーバコネクタ
IJServerクラスタと連携するWebサー
バコネクタが削除されます。
IJServerクラスタと連携するWebサー
バコネクタだけ削除され、J2EEの
IJServerと連携するWebサーバコネ
クタは削除しません。
初期化時に指定可能な設定項目
初期化操作の際、以下に示す項目の設定を変更できます。
なお、この時に指定できる項目は、インストール時に指定できる設定項目と同等です。
サーバパッケージの場合
Interstage Java EE DASサービスが利用するポート番号
項目
IIOPポート
デフォルト値
23600
意味
IIOP(ORB)のリスナー
ポート番号
備考
コマンド実行時にJava
EEの他機能の設定項目
とポート番号が重複した
場合は、エラーとなりま
す。
指定されたポート番号が
コマンド実行時に利用で
きない(バインドできな
い)場合は、エラーとなり
ます。
IIOP_SSLポート
23601
IIOP/SSLのリスナー
ポート番号
コマンド実行時にJava
EEの他機能の設定項目
とポート番号が重複した
場合は、エラーとなりま
す。
指定されたポート番号が
コマンド実行時に利用で
きない(バインドできな
い)場合は、エラーとなり
ます。
IIOP_MUTUALAUTH
ポート
23602
相互認証用のIIOP/SSL
リスナーポート番号
- 13 -
コマンド実行時にJava
EEの他機能の設定項目
とポート番号が重複した
項目
デフォルト値
意味
備考
場合は、エラーとなりま
す。
指定されたポート番号が
コマンド実行時に利用で
きない(バインドできな
い)場合は、エラーとなり
ます。
JMX_ADMINポート
8686
JMXの管理ツールで指
定するJMXコネクタのリ
スナーポート番号
コマンド実行時にJava
EEの他機能の設定項目
とポート番号が重複した
場合は、エラーとなりま
す。
指定されたポート番号が
コマンド実行時に利用で
きない(バインドできな
い)場合は、エラーとなり
ます。
DOMAIN_ADMINポー
ト
運用管理用HTTPリス
ナーのポート
12001
コマンド実行時にJava
EEの他機能の設定項目
とポート番号が重複した
場合は、エラーとなりま
す。
指定されたポート番号が
コマンド実行時に利用で
きない(バインドできな
い)場合は、エラーとなり
ます。
HTTP_LISTENERポート
28080
HTTPリスナーのポート
コマンド実行時にJava
EEの他機能の設定項目
とポート番号が重複した
場合は、エラーとなりま
す。
指定されたポート番号が
コマンド実行時に利用で
きない(バインドできな
い)場合は、エラーとなり
ます。
Java EE共通ディレクトリ
項目
デフォルト値
Java EE共通ディレクトリ
C:\Interstage
¥F3FMisjee¥var
/var/opt/FJSVisjee
意味
備考
Interstage Java EE Node
Agentサービス、IJServer
クラスタ、およびInterstage
Java EE DASサービスの
資産を格納するディレクト
リ
初期化操作により、以前
のJava EE共通ディレクト
リ配下に格納されている
ファイルは削除されます。
なお、Java EE共通ディレ
クトリを変更しない場合も、
ファイル資産は一度削除
- 14 -
項目
デフォルト値
意味
備考
されます。
初期化操作を行う前に、
必要な資産を退避してく
ださい。
SSL暗号化通信の使用
項目
SSL暗号化通信の使用
デフォルト値
true
意味
備考
Java EE機能の運用管理
用HTTPリスナーと
Interstage管理コンソー
ルのセキュリティ運用形
態を選択します。
trueを設定するとSSL暗
号化通信が使用されま
す。
Java EE運用環境で利用するJDK
項目
Java EE機能が利用する
JDK
デフォルト値
JDK6
意味
備考
Java EE機能が利用する
JDK。JDK5/JDK6のいず
れかを指定できます。
インストールされていない
JDKを指定した場合、エ
ラーとなります。
意味
備考
クライアントパッケージの場合
Java EE運用環境で利用するJDKまたはJRE
項目
Java EE運用環境で利用
するJDKまたはJRE
デフォルト値
JDK6
Java EE機能が利用する
JDKまたはJRE。JDK5/
JDK6/JRE5/JRE6のいず
れかを指定できます。
インストールされていない
JDKまたはJREを指定し
た場合、エラーとなります。
2.1.6 Java EE運用環境で利用するユーザーとパスワード
Java EE運用環境の操作で利用するユーザーとパスワードについて説明します。
なお、Java EEアプリケーションで利用できるセキュリティ機能については、「5.2 Java EEアプリケーションのセキュリティ機
能」を参照してください。
Interstage Java EE DASサービスへの認証
Interstage Java EEの運用操作を行う前に、Interstage Java EE DASサービスに対して、管理ユーザーIDと管理者パスワー
ドを使用して認証を行う必要があります。
インストール時、またはJava EE運用環境の初期化時の管理ユーザーIDと管理者パスワードのデフォルトの設定は、
「5.1.5.1 ログイン認証のためのレルム」を参照してください。
Java EE運用環境の初期化については「リファレンスマニュアル(コマンド編)」-「ijinit」を、コマンドによるパスワードの変
更方法については「リファレンスマニュアル(コマンド編)」-「change-admin-password」を参照してください。
また、asadminコマンド利用時のユーザーとパスワードの指定方法については、「5.1.6.2 asadminコマンドのログイン認証」
を参照してください。
2.1.7 サービス運用ユーザーのカスタマイズ
Java EE運用環境で動作する以下のJava VMプロセスは、デフォルトではシステム管理者ユーザで運用されます。
・ Interstage Java EE Node Agentサービス
- 15 -
・ Interstage Java EE DASサービス
・ IJServerクラスタ配下のサーバーインスタンス
これらのサービスを運用するユーザーを指定することができます。詳細は、「5.1.2 IJServerクラスタのプロセスの実効権
限」および、「リファレンスマニュアル(コマンド編)」-「ijsetoperatoridコマンド」を参照してください。
2.2 Interstage Java EE DASサービス
Interstage Java EE DASサービスは、Java EE運用環境の運用管理を行うサービスであり、以下の役割があります。
・ Interstage Java EE管理コンソールの運用
・ asadminコマンドの操作受付
・ Interstage Java EE管理コンソール/asadminコマンド利用時のユーザ認証実施
・ Java EE運用環境の資源を格納する中央リポジトリの管理
Java EE運用環境におけるInterstage Java EE DASサービスの位置付けを以下に示します。
また、開発環境において、アプリケーションやリソースをInterstage Java EE DASサービスに配備して動作確認できます。
Interstage Java EE DASサービスを利用すると、Interstage Java EE Node AgentサービスやIJServerクラスタを起動すること
なく、アプリケーションの動作を確認できます。
- 16 -
Java EE運用環境におけるInterstage Java EE DASサービスの位置付けについては、「2.1.1 Interstage Java EE運用環境」
も参照してください。
2.2.1 Interstage Java EE DASサービスのファイル構成
Interstage Java EE DASサービスが利用するファイルは、以下のディレクトリに格納されます。
[Java EE共通ディレクトリ]\domains\interstage
[Java EE共通ディレクトリ]/domains/interstage
ファイル構成の詳細については、「B.1 Interstage Java EE DASサービスのファイル構成」を参照してください。
2.2.2 Interstage Java EE DASサービスのログファイル
ログファイルについては、「4.21 Java EEアプリケーションのログ」を参照してください。
2.2.3 Interstage Java EE DASサービスのインスタンス名と定義情報
Interstage Java EE DASサービスは、どのIJServerクラスタにも属さないスタンドアロンインスタンスとして動作します。
なお、IJServerクラスタ配下のサーバーインスタンスと同様に、インスタンス名と設定情報を持っています。
Interstage Java EE DASサービスのインスタンス名と設定名を以下に示します。
インスタンス名
server
設定名
server-config
例えば、asadminコマンドでInterstage Java EE DASサービスを操作する場合は、以下のように指定します。
・ インスタンス名を指定してInterstage Java EE DASサービスへアプリケーションを配備する場合
> asadmin deploy --target server sample.ear
・ 定義名を指定してInterstage Java EE DASサービスの定義情報を参照する場合
> asadmin get server-config.*.*
Interstage Java EE DASサービスの定義は、IJServerクラスタの定義と同等となります。
ただし、以下項目についてはInterstage Java EE DASサービスでは利用できません。
- 17 -
カテゴリ
IJServer
項目
IJServer名
環境変数
Javaヒープ/Permanent世代領域不足時の制御
アプリケーション最大処理時間
IJServer起動待ち時間
IJServer強制停止時間
退避するカレントディレクトリの世代数
クラスタ
ハートビートポート
ハートビートアドレス
ハートビート
2.2.4 IJServerクラスタとの差異
Interstage Java EE DASサービスとIJServerクラスタの機能差を以下に示します。
Interstage Java EE
DASサービス
IJServerクラスタ
マルチプロセス運用
-
○
Java VMプロセスの自動再起動
-
○
縮退運用
-
○
Javaヒープ/Permanent世代領域不
足時の制御
-
○
アプリケーション最大処理時間の監
視
-
○
予兆監視
-
○
カレントディレクトリの世代管理
-
○
環境変数の設定
△(注1)
○
アプリケーション運用
△(注2)
○
リソース作成
△(注2)
○
-
○
-(注3)
○
起動ログのローテーション
Java VMログ
注1) Interstage Java EE DASサービスへの環境変数の設定方法は、「4.3.3 環境変数の設定」を参照してください。
注2) 開発環境で利用できます。運用環境での利用は推奨しません。また、IJServerクラスタ/Interstage Java EE DASサー
ビスの両方で利用できる機能について、マニュアル記事中でIJServerクラスタを例に説明している場合があります。
注3) Interstage Java EE DASサービスでもjvm.logは作成されますが、このファイルには技術員による調査に必要な情報
が出力されます。
アプリケーションのスレッドダンプやGCの発生状況等のJava VMの情報を取得する必要がある場合は、IJServerクラスタ
にアプリケーションを配備して取得してください。
2.3 Interstage Java EE Node Agentサービス
Interstage Java EE Node Agentサービスは、サーバーインスタンスの起動・停止と監視を行う常駐プロセスです。
Interstage Java EE Node Agentサービスは、マシン単位で作成され、以下の図のようにInterstage Java EE Node Agentサー
ビスとIJServerクラスタは1対nの関係となります。
- 18 -
サーバーインスタンスは実際に生成されるJava VMプロセスと対応しており、サーバーインスタンスごとにJava VMプロセ
スが生成されます。
2.3.1 Interstage Java EE Node Agentサービスのファイル構成
以下のディレクトリ配下で管理されています。
[Java EE共通ディレクトリ]\nodeagents\
[Java EE共通ディレクトリ]/nodeagents/
ファイル構成の詳細については、「B.2 Interstage Java EE Node Agentサービスのファイル構成」を参照してください。
2.3.2 Interstage Java EE Node Agentサービスのログファイル
ログファイルについては、「4.21 Java EEアプリケーションのログ」を参照してください。
2.4 IJServerクラスタ
本製品では、運用性の向上を目的として、Java EEアプリケーションを運用する環境であるInterstage Java Server(以降、
IJServerクラスタと略します)という概念を導入しています。
IJServerクラスタは、Java EEアプリケーションの実行環境であるEJBコンテナとWebコンテナを内包し、これらのコンテナの
上位に位置づけられる論理的な概念です。
注意
Java EEアプリケーションの実行環境であるIJServerクラスタは、V9.0.x以前のInterstage Application Serverで提供してい
たJ2EEアプリケーションの実行環境であるIJServer(J2EE)とは異なる実行環境です。両者を区別する必要がある場合、以
下の用語を使用しています。
・ IJServerクラスタ: Java EEアプリケーションの実行環境
・ IJServer(J2EE) : J2EEアプリケーションの実行環境
- 19 -
本マニュアルでは「IJServerクラスタ」について説明しています。
「IJServer(J2EE)」を利用する場合は、「J2EE ユーザーズガイド(旧版互換)」を参照してください。
なお、「IJServerクラスタ」と「IJServer(J2EE)」の違いについては、「移行ガイド」-「J2EEからJava EEへの移行」を参照して
ください。
2.4.1 IJServerクラスタの運用環境
実行環境の全体構成については、「2.1.1 Interstage Java EE運用環境」を参照してください。
ここでは、以下について説明します。
・ IJServerクラスタのファイル構成について
・ カレントディレクトリ
・ ログディレクトリ
・ 複数プロセス構成
2.4.2 IJServerクラスタのファイル構成
ここでは、以下について説明します。
・ IJServerクラスタのファイル構成について
・ カレントディレクトリ
・ ログ出力ディレクトリ
・ JSPコンパイル結果格納ディレクトリ
IJServerクラスタのファイル構成について
IJServerクラスタや配備したアプリケーションは、以下のディレクトリ配下で管理されています。
[Java EE共通ディレクトリ]\
[Java EE共通ディレクトリ]のデフォルトはC:\Interstage\F3FMisjee\var
[Java EE共通ディレクトリ]/
[Java EE共通ディレクトリ]のデフォルトは/var/opt/FJSVisjee
ファイル構成の詳細については、「B.3 IJServerクラスタのファイル構成」を参照してください。
IJServerクラスタの設定情報は、サーバーインスタンスごとに配置されます。アプリケーション資産は、ドメインで1箇所に
配置されています。
カレントディレクトリ
サーバーインスタンスのJava VMプロセスのカレントディレクトリは、「[Java EE共通ディレクトリ]/nodeagents/ijna/${サーバー
インスタンス名}」の配下に以下のような構成で作成されます。
- 20 -
カレントディレクトリの位置を変更した場合、「[指定したディレクトリ]/[サーバーインスタンス名]」配下に作成されます。
IJServerクラスタの起動時、各サーバーインスタンス配下のcurrent/latestディレクトリがローテーションし、以前のディレクト
リには「old.%0からの連番%」のディレクトリ名が付加されます。バックアップする世代数の上限は、「退避するカレントディ
レクトリの世代数」で設定できます。退避するカレントディレクトリの世代数のデフォルト値は1です。
IJServerクラスタ運用中に配下のJava VMプロセスが自動再起動した場合、自動再起動したサーバーインスタンス配下の
current/latestディレクトリのカレントディレクトリだけがローテーションされます。以前のカレントディレクトリは「old.%0からの
連番%」に変名され、バックアップされます。
ログ出力ディレクトリ
IJServerクラスタのログが出力されるディレクトリです。
ログ出力ディレクトリおよびログの詳細は、「4.21 Java EEアプリケーションのログ」を参照してください。
なお、IJServerクラスタの起動・停止や異常時の自動再起動が行われた場合でも、ログディレクトリはローテーションされ
ません。
JSPコンパイル結果格納ディレクトリ
JSPコンパイル結果の出力先として使用します。Interstage Deployment Descriptor(sun-web.xml)のscratchdirで任意のディ
レクトを指定することも可能です。
コンパイル結果をこのディレクトリ内に格納しておくと、JSP実行時のコンパイル処理を抑止できます。詳細は、「2.5.4 JSP
事前コンパイル」を参照してください。
JSPコンパイル結果は、以下のデフォルトのディレクトリまたはユーザが指定したディレクトリ内に格納されます。
Java EEアプリケーションにWebアプリケーションが含まれている場合
[Java EE共通ディレクトリ]\nodeagents¥ijna\[サーバーインスタンス名]\generated\jsp\j2ee-apps\[Java EEアプリケー
ション名]\[Webアプリケーション名]_war
[Java EE共通ディレクトリ]/nodeagents/ijna/[サーバーインスタンス名]/generated/jsp/j2ee-apps/[Java EEアプリケーショ
ン名]/[Webアプリケーション名]_war
Webアプリケーション単体の場合
[Java EE共通ディレクトリ]\nodeagents¥ijna\[サーバーインスタンス名]\generated\jsp\j2ee-modules\[Webアプリケー
ション名]
- 21 -
[Java EE共通ディレクトリ]/nodeagents/ijna/[サーバーインスタンス名]/generated/jsp/j2ee-modules/[Webアプリケーショ
ン名]
Interstage deployment descriptor(sun-web.xml)のscratchdirで指定する場合
<jsp-config>
・・・
<!-- C:\temp\jspcompile配下にコンパイル結果格納ディレクトリを変更する場合 -->
<property name="scratchdir" value="C:\temp\jspcompile" />
・・・
</jsp-config>
<jsp-config>
・・・
<!-- /usr/local/tmp/jspcompile配下にコンパイル結果格納ディレクトリを変更する場合 -->
<property name="scratchdir" value="/usr/local/tmp/jspcompile" />
・・・
</jsp-config>
注意
JSPコンパイル結果格納ディレクトリの注意事項
・ 他の環境で事前にコンパイルした結果を使用する場合は、Interstage deployment descriptor(sun-web.xml)でJSPコン
パイル結果格納ディレクトリを指定してください。
・ パスに指定できる文字は、各OSの仕様に従ってください。
・ JSPのコンパイル結果は、以下の構成でJSPコンパイル結果出力ディレクトリ内に生成されます。
- JSPコンパイル結果格納ディレクトリ\org\apache\jsp\Webアプリケーション内のJSP格納ディレクトリ\JSPファ
イル名_jsp.java
- JSPコンパイル結果格納ディレクトリ\org\apache\jsp\Webアプリケーション内のJSP格納ディレクトリ\JSPファ
イル名_jsp.class
- JSPコンパイル結果格納ディレクトリ/org/apache/jsp/Webアプリケーション内のJSP格納ディレクトリ/JSPファイル
名_jsp.java
- JSPコンパイル結果格納ディレクトリ/org/apache/jsp/Webアプリケーション内のJSP格納ディレクトリ/JSPファイル
名_jsp.class
・ JSPのファイル名によっては、生成する.javaおよび.classのJSPファイル名部分と一致しない場合があります。
・ Javaのバージョンによってコンパイル結果が生成されない場合があります。詳細は、「2.5.5 Java Standard Edtion 6に
よるJSPの運用」を参照してください。
2.4.3 IJServerクラスタの複数プロセス構成
ここでは、以下について説明します。
・ IJServerクラスタの複数プロセスでの運用について
・ プロセスIDとサーバーインスタンス名
- 22 -
・ プロセスID保存ファイル
IJServerクラスタの複数プロセスでの運用について
IJServerクラスタに対して複数のサーバーインスタンスを登録すると、複数のJava VMプロセスを一括で起動・停止できます。
サーバーインスタンスは、実際に生成されるJava VMプロセスと対応しているため、IJServerクラスタを起動するとサーバー
インスタンスごとにJava VMプロセスが生成されます。
プロセスIDとサーバーインスタンス名
それぞれのサーバーインスタンスは異なるプロセスIDとサーバーインスタンス名を持っており、ユーザはこれらの情報を
使用して各プロセスを識別します。一方、ユーザアプリケーションや定義情報はIJServerクラスタ単位で同一のものを参
照します。
IJServerクラスタを複数のインスタンスで起動したときの構成について、以下に説明します。
項目
構成
説明
プロセスID
インスタンス単位
インスタンス名
インスタンス単位
設定情報
IJServerクラスタ
単位
設定情報は、IJServerクラスタ単位で同一の設定を参照しま
す。
ただし、プロセス間の重複ができない項目(リクエスト受付ポー
ト番号など)は、サーバーインスタンスごとに値を設定する必
要があります。
プロセス間の重複ができない項目については、「6.8.1 定義
時に利用できるプロパティ」を参照してください。
配備済みアプリ
ケーション
IJServerクラスタ
単位
配備済みアプリケーションは、IJServerクラスタ単位で同一の
アプリケーションを参照します。
ログ
インスタンス単位
ログ出力ディレクトリ、およびログファイルは、サーバーインス
タンスごとに作成されます。
カレントディレク
トリ
インスタンス単位
カレントディレクトリは、サーバーインスタンスごとに作成され
ます。
- 23 -
注意
IJServerクラスタ運用中に設定を更新した場合、更新した内容は停止しているサーバーインスタンスに反映され、すでに
起動しているサーバーインスタンスには反映されません。すでに起動されているサーバーインスタンスに対し、更新内容
が反映されているかどうかは、サーバーインスタンスの状態で判断できます。
サーバーインスタンスの状態がrequired restartの場合、設定更新内容は反映されていません。IJServerクラスタに属する
すべてのサーバーインスタンスに対して定義内容を反映させるためには、IJServerクラスタの再起動、または、すべての
サーバーインスタンスの再起動を実施してください。
ユーザアプリケーションからは以下のプロパティによりIJServerクラスタ名とサーバーインスタンス名を取得できます。
IJServerクラスタ名
com.sun.aas.clusterName
サーバーインスタンス名
com.sun.aas.instanceName
本機能により、IJServerクラスタを複数サーバーインスタンスで運用する際にアプリケーションからプロセスを識別できます。
例えば、業務データをログファイルに出力する場合、アプリケーションからサーバーインスタンス名を取得してファイル名
に付加すると、プロセスごとに異なるファイルにデータを出力できます。
例
サーバーインスタンス名取得の実装例
String instanceName =
System.getProperty("com.sun.aas.instanceName");
プロセスID保存ファイル
IJServerクラスタの起動時、サーバーインスタンスのJava VMプロセスのプロセスIDが以下のファイルに出力されます。
このファイルは、IJServerクラスタを停止した際に削除されますが、サーバーインスタンスのJava VMプロセスが異常終了
した場合は、ファイルが残存します。
プロセスID保存ファイルが残存した場合でも、サーバーインスタンスのカレントディレクトリの世代管理により自動的に退
避・削除されるため、対処の必要はありません。
[Java EE共通ディレクトリ]\nodeagents¥ijna\[サーバーインスタンス名]\current\latest\.__com_sun_appserv_pid
[Java EE共通ディレクトリ]/nodeagents/ijna/[サーバーインスタンス名]/current/latest/.__com_sun_appserv_pid
2.4.4 Java VMプロセスの生死監視
サーバーインスタンスのJava VMプロセスは、Interstage Java EE Node Agentサービスにより2秒間隔で監視されます。
Java VMプロセスのダウンが検知されると、システムログ/イベントログへOM1011メッセージが出力され、プロセスが自動
的に再起動されます。
- 24 -
2.4.5 縮退運用
IJServerクラスタに対して2つ以上のサーバーインスタンスを登録している場合、一部のサーバーインスタンスのみでIJServer
クラスタを運用することができます。この状態を、縮退運用状態と呼びます。
縮退運用状態となる契機
以下の場合、IJServerクラスタは縮退運用状態となります。
・ プロセス異常終了時の自動再起動が失敗した場合 ※
・ 一部のサーバーインスタンスの停止操作を行った場合
・ 運用状態のIJServerクラスタへサーバーインスタンスを追加した場合
※)自動再起動失敗によりIJServerクラスタ配下の全サーバーインスタンスが停止した場合、IJServerクラスタが異常終了
し停止状態となります。
縮退運用状態からの復元
IJServerクラスタ起動操作/サーバーインスタンス起動操作により、IJServerクラスタを縮退運用状態から運用状態へ復元
することができます。
IJServerクラスタの状態遷移
IJServerクラスタの状態遷移を以下に示します。
- 25 -
縮退運用/復元に関する操作の詳細は、以下を参照してください。
・ 「リファレンスマニュアル(コマンド編)」-「start-clusterサブコマンド」
・ 「リファレンスマニュアル(コマンド編)」-「start-instanceサブコマンド」
・ 「リファレンスマニュアル(コマンド編)」-「stop-instanceサブコマンド」
・ Interstage Java EE管理コンソールヘルプ
2.4.6 Javaヒープ/Permanent世代領域不足時の制御
運用中のサーバーインスタンスのJava VMプロセスでJavaヒープ、またはPermanent世代領域が不足した場合の動作は、
「Javaヒープ/Permanent世代領域不足時の制御」で、以下の2つのうちから選択できます。デフォルト値は、「プロセスを再
起動する」です。
プロセスを再起動する
Javaヒープ領域、Permanent世代領域、Cヒープ領域が不足した場合に、OM1018を出力して、領域不足が発生した
プロセスを再起動します。
アプリケーションにjava.lang.OutofMemoryErrorを返却する
通常のJavaアプリケーション同様、アプリケーション、およびJava EEコンテナにjava.lang.OutOfMemoryErrorを返却し、
可能な限り処理を継続します。
ただし、不足した資源や不足量、および発生のタイミングによっては、正常に運用できなくなる(リクエスト処理失敗で
ステータス500、セッションの情報消失、内部異常など)可能性があります。
設定方法については、「6.8.19 プロセス制御の定義項目」を参照してください。
2.4.7 アプリケーション最大処理時間の監視とレスポンス監視
アプリケーション処理時間の監視
アプリケーションの最大処理時間の監視を行うことで、アプリケーションのハングアップやレスポンス遅延を検出できます。
本機能は、Webアプリケーション、EJBアプリケーション、Message Driven Beanに対して、プロセス外からの呼出しが行わ
れた場合に有効になります。
最大処理時間を超過したときの動作は、「アプリケーション最大処理時間超過時の制御」で指定します。デフォルト値は、
「警告メッセージを出力する」です。
アプリケーション最大処理時間のデフォルト値は480(秒)です。
アプリケーション最大処理時間を超過した場合、10分間は、同一インスタンスに対して、アプリケーション最大処理時間
の超過を検出しません。
10分以内にアプリケーション最大処理時間の超過を検出したい場合、クラスタ再起動、または、インスタンス再起動を行
うことでアプリケーション最大処理時間の超過を検出することができます。
- 26 -
レスポンス監視
アプリケーション最大処理時間の監視とは別に、IJServerクラスタ運用中に配下のサーバーインスタンスについてレスポ
ンス監視を行っています。レスポンス監視では運用中のIJServerクラスタ配下の各サーバーインスタンスから、Interstage
Java EE Node Agentサービスへ一定間隔(5秒間隔)で生存通知が行われます。
何らかの理由によりこの通知が30秒間途絶えた場合、サーバーインスタンスの運用で問題が発生していると判断します。
レスポンス監視時間を超過した場合も、「アプリケーション最大処理時間超過時の制御」で指定した動作が実行されます。
注意
プロセス異常終了によるプロセス自動再起動と、アプリケーション最大処理時間を超過した場合のプロセス停止では、10
分間アプリケーション最大処理時間の超過を検出しない状態を解除することができません。
「アプリケーション最大処理時間超過時の制御」で指定する動作
警告メッセージを出力する
最大処理時間を超過した場合、以下の処理が行われます。
1. イベントログ/システムログに以下の警告メッセージが出力されます。
- アプリケーション最大処理時間の監視の場合:OM1020
- レスポンス監視の場合:OM1120
1. Java VMログに1回目のフルスレッドダンプが出力されます。
2. 2.の10秒後に、Java VMログに2回目のフルスレッドダンプが出力されます。
注意
- アプリケーション最大処理時間を検出したスレッドは回収されず、処理を継続します。そのため、警告メッセージ
が出力された後にアプリケーションの処理が成功する場合があります。
- 特定のIJServerクラスタ配下の複数のサーバーインスタンスで同時にアプリケーション最大処理時間を超過した
場合、OM1020のメッセージは1回だけ出力されます。
プロセスを強制停止する
アプリケーション最大処理時間、またはレスポンス監視時間を超過した場合、以下の処理が行われます。
1. イベントログ/システムログに以下のエラーメッセージが出力されます。
- アプリケーション最大処理時間の監視の場合:OM1005
- レスポンス監視の場合:OM1124
1. Java VMログに1回目のフルスレッドダンプが出力されます。
2. 2.の10秒後に、Java VMログに2回目のフルスレッドダンプが出力されます。
3. 3.の10秒後に、プロセスが強制停止されます。
注意
プロセスが強制停止されるまで最低20秒を要するため、その間に正常にアプリケーションが復帰する場合があります。
また、強制停止のタイミングにより以下の状態になることが考えられます。
(正常にレスポンスすべてがクライアントまで送信できた場合は除きます)
- アプリケーションがレスポンス未送信の場合
レスポンスがクライアントに返らず、通信が切断されます。
ただし、クライアントからのアクセスがWebサーバを経由していた場合、Webサーバコネクタが異常を検知してクラ
イアントにステータスコード500を返します。
- 27 -
- アプリケーションがレスポンスの一部を送信済みの場合
レスポンスの一部のみが送信され、レスポンスの送信が未完了の状態で強制停止された場合、送信済みのデー
タ(ステータスライン、ヘッダー、メッセージボディ)までがクライアントに送信されます。
これは、強制停止時点において、すでにクライアントに送信済みのデータは取り戻せないためです。
この場合、アプリケーションが返却した結果に依存するため、必ずステータスコードが200になるとは限りません。
設定方法については、「6.8.19 プロセス制御の定義項目」を参照してください。
2.4.8 予兆監視
予兆監視機能により、Java VMのヒープ使用量、およびPermanent世代領域を監視できます。
Javaヒープ不足、および、それに伴うガーベジコレクションの多発による業務レスポンス低下の可能性を検出し、Javaヒー
プの問題を警告メッセージ(ISJEE_OM3204)で通知します。警告メッセージは、イベントログ/システムログおよびサーバー
ログに出力されます。
警告メッセージの詳細内容と出力条件、その対処については、「チューニングガイド」-「予兆監視機能から警告が通知
された場合の対処」を参照してください。
2.5 Servletの提供機能
本製品のWebコンテナでは、以下の機能を提供しています。
・ Servlet 2.5
・ JSP 2.1
・ エラーページ
・ JSP事前コンパイル
・ Java Standard Edtion 6によるJSPの運用
2.5.1 Servlet 2.5
Webコンテナは、サーブレットの起動(クラスのローディング、インスタンス化)、サーブレットの呼出しといったサーブレット
の制御を行います。
サーブレットが動作する上での基本機能です。
Java(TM) Servlet API 2.5に準拠しているサーブレットを実行できます。
サーブレットの起動時には、サーブレットをローディングし、サーブレットの初期化(initメソッド)を実行します。
その後、サーブレットをWebコンテナ上に常駐化(インスタンス化)し、Webブラウザからの呼出しを待ちます。
Webブラウザから呼び出された時は、サービスの実行(serviceメソッド)を行います。
サーブレットの停止は、Webコンテナの停止と同時に行います。
この時、サーブレットの消滅(destroyメソッド)を処理します。
処理の流れを以下に示します。
1. WebブラウザからURLを入力すると、Webサーバを経由してWebコンテナがそのURLを受け取ります。
2. Webコンテナでは、URLを解析し、サーブレットの起動と呼出しを行います。
- 28 -
3. サーブレットはHTMLを返却します。
Webコンテナは、出力結果であるHTMLを、Webサーバを経由してWebブラウザに返却します。
Listener
Listenerとは、Webアプリケーションのライフサイクルイベントが発生したタイミングで呼び出されるクラスのことです。
Webアプリケーションでライフサイクルイベントが発生すると、定義したListenerが自動的に起動されます。
Filter
Filterとは、リソース(サーブレットまたは静的なコンテンツ)へのリクエストやリソースからのレスポンスをフィルタリングす
るタスクを処理する機能です。
セッション
セッションとは、同一のWebブラウザからの複数回のリクエストを、サーブレットで同一のWebブラウザからのアクセスと
して処理するための機能です。この機能を利用することで、サーブレットで前回の処理結果を引き継ぐことができ、継
続的な処理が可能となります。
本製品では、セッションに関する設定をsun-web.xmlのsession-configタグで指定できます。詳細は、sun-web.xmlの
session-configタグを参照してください。
2.5.2 JSP 2.1
JavaServer Pages 2.1 Specificationに準拠しているJSPの表示ができます。
JSPは、サーブレットとして動作します。
Webコンテナは、JSPをサーブレットのソースファイルに変換し、コンパイルします。
その後、生成されたサーブレットを起動します。
Webコンテナが停止する時は、サーブレットの消滅(destroyメソッド)を処理します。
処理の流れを以下に示します。
1. WebブラウザからURLを入力すると、Webサーバを経由してWebコンテナがそのURLを受け取ります。
2. Webコンテナでは、URLを解析し、JSPをロードします。
3. Webコンテナは、JSPをサーブレットのソースファイルに変換し、コンパイルします。
4. コンパイルしたサーブレットを起動します。
- 29 -
5. サーブレットの呼出し時には、サーブレットはHTMLを返却します。
Webコンテナは、出力結果であるHTMLを、Webサーバを経由してWebブラウザに返却します。
本製品では、JSPに関する設定をsun-web.xmlのjsp-configタグで指定できます。詳細は、sun-web.xmlのjsp-configタグを
参照してください。
2.5.3 エラーページ
エラーページとは、何らかのエラーが発生した場合にクライアントに返されるコンテンツです。
ブラウザに表示されるエラーページは、以下の3種類です。
・ Webサーバのエラーページ
・ Webコンテナのエラーページ
・ Webアプリケーションのエラーページ
上記のうちカスタマイズ可能なエラーページは、WebサーバのエラーページとWebアプリケーションのエラーページです。
設定方法については、以下を参照してください。
・ Webサーバのエラーページ:Webサーバのマニュアル
・ Webアプリケーションのエラーページ:Servlet/JSPの仕様、および「3.2.2.2 Web application deployment descriptor
(web.xml)」
次に各エラーページが使用される契機について説明します。
エラーページ
Webサーバの
エラーページ
Webコンテナの
エラーページ
エラーページが使用される契機
・ 要求されたリクエストURLに誤りがある場合
・ Webサーバコネクタでエラーが発生した場合
・ Webアプリケーションの実行に失敗した場合
・ Webアプリケーションでエラーが発生し、対応する
備考
リクエストがWebコンテ
ナで処理された場合
は、このエラーページ
は表示されません。
詳細は、Servletの仕
様を参照してください。
エラーページが設定されていない場合
Webアプリケー
ションのエラー
ページ
・ Webアプリケーションでエラーが発生し、対応する
エラーページが設定されている場合
- 30 -
詳細は、Servletの仕
様を参照してください。
注意
エラーページに関する注意事項については、「使用上の注意」-「Webアプリケーションの注意事項」の以下を参照して
ください。
・ ErrorやExceptionについて
・ エラーページについて
2.5.4 JSP事前コンパイル
JSPは通常、初回リクエスト時にコンパイルを行います。このため、以下の問題があります。
・ 初回リクエストは、2回目以降のリクエストに比べてレスポンスが返されるまでに時間がかかります。
ただし、コンパイルにかかる時間は、Java Standard Edtion 6使用時にはJava Standard Edtion 5使用時に比べて大幅
に改善されています。詳細は、「2.5.5 Java Standard Edtion 6によるJSPの運用」を参照してください。
・ JSPに構文エラーがあった場合、初回リクエスト処理時にコンパイルエラーを検出するため、運用に支障をきたす恐
れがあります。
上記の問題に対して、以下の表にあるJSP事前コンパイルを使用すると問題を防ぐことができます。
JSP事前コンパイルの方法
コンパイルする環境
概要
配備時コンパイル
運用環境
Webアプリケーション配備時にコンパイ
ルを行います。
コンパイル結果を含むWebアプリ
ケーションを配備
開発環境
コンパイルした結果をWebアプリケーショ
ン内に格納して運用環境に配備します。
開発環境で生成したコンパイル結
果を運用環境にコピー
開発環境
コンパイルした結果を運用環境のJSPコ
ンパイル結果格納ディレクトリにコピーし
ます。
各JSP事前コンパイルの方法について以下に説明します。
配備時コンパイル
JSPを含んだWebアプリケーションの配備時に、コンパイルを行う機能です。この機能を使用すると、配備時にWebアプリ
ケーションに含まれているJSPがコンパイルされ、IJServerクラスタに配備されます。
本機能は、以下のどちらかの方法で利用できます。
・ Interstage Java EE管理コンソールからWebアプリケーション配備時に、「JSP をプリコンパイル」をチェックして配備を
行う。
・ 配備コマンド(asadminコマンドのdeployサブコマンド)使用時にオプション「--precompilejsp」を指定する。
生成したコンパイル結果は、デフォルトのJSPコンパイル結果格納ディレクトリに格納され、該当するIJServerクラスタの運
用時に使用されます。
なお、配備したWebアプリケーションのInterstage Deployment Descriptor(sun-web.xml)で「scratchdir」を指定している場合、
配備時コンパイルで生成したコンパイル結果は有効になりません。「配備時コンパイル」を使用する場合には、「scratchdir」
を指定しないでください。
JSPコンパイル結果格納ディレクトリについては、「2.4.2 IJServerクラスタのファイル構成」を参照してください。
別環境でコンパイルした結果を使用する方法
別環境(開発環境)でJSP事前コンパイルした結果を、運用環境で使用します。運用環境でJSPコンパイルを行わずにWeb
アプリケーションを運用できます。
コンパイル結果を含むWebアプリケーションを配備
- 31 -
コンパイル結果をWebアプリケーション内に格納してIJServerクラスタに配備します。
以下に手順を説明します。
1. jspcコマンドでWebアプリケーション内のJSPをコンパイルします。
2. 手順1.のコンパイル結果をWEB-INF/classesまたはWEB-INF/lib配下にコピーします。
3. sun-web.xmlのプロパティusePrecompiledをtrueにします。
4. Webアプリケーションとしてwarファイルにします。
5. 手順4.で作成したwarファイルをIJServerクラスタに配備します。
手順2.と手順3.に関係する詳しい説明は、「3.2.3.7 Interstage deployment descriptorのタグの説明」を参照してください。
例
Webアプリケーション(JspSample)に含まれているJSPをコンパイルし、生成されたクラスファイルをそのままWEB-INF/
classes配下に格納する場合
# jspc -webapp c:\temp\JspSample -v -compile -d c:\temp\JspSample\WEB-INF\classes
# yyyy/mm/dd hh:mm:ss org.apache.jasper.JspC processFile
# 情報: Built File: \index.jsp
#
開発環境で生成したコンパイル結果を運用環境にコピー
開発環境でコンパイルした結果を、運用環境のJSPコンパイル結果格納ディレクトリにコピーします。
デフォルトのJSPコンパイル結果格納ディレクトリに対してコピーすると、Interstage環境を破壊してしまう恐れがあります。
あらかじめInterstage Deployment Descriptor(sun-web.xml)でJSPコンパイル結果格納ディレクトリを指定し、指定先のディ
レクトリにコンパイル結果をコピーしてください。
JSPコンパイル結果格納ディレクトリについては、「JSPコンパイル結果格納ディレクトリ」を参照してください。
以下に手順を説明します。
1. 開発環境において、jspcコマンドでWebアプリケーション内のJSPをコンパイルします。
2. Webアプリケーションを運用環境に配備します。
3. 手順1.で生成されたコンパイル結果を、Interstage Deployment Descriptor(sun-web.xml)で指定した運用環境のディ
レクトリにコピーします。
注意
コピーする資源の更新日時は、手順2.を行った日時より後に更新しておく必要があります。「使用上の注意」-「Web
アプリケーションの注意事項」-「JSPの入れ替えについて」もあわせて参照してください。
コンパイル結果は、IJServerクラスタの起動(再起動)、またはJSPのオートリロード機能により反映されます。ただし、IJServer
クラスタ起動中に手順3.の前にJSPへのリクエスト、または一定間隔のJSPのオートリロード機能が動作した場合は、その
処理の延長で対象のJSPのコンパイルが実行されます。
注意
JSP事前コンパイルの注意事項
JSPのコンパイル結果は、IJServerクラスタが読み書きできる必要があります。IJServerクラスタの起動ユーザを変更してい
る場合は、JSPのコンパイル結果に対してIJServerクラスタの起動ユーザが読み書きできる権限を付加してください。
IJServerクラスタの起動ユーザについては、「2.1.7 サービス運用ユーザーのカスタマイズ」を参照してください。
- 32 -
2.5.5 Java Standard Edtion 6によるJSPの運用
本製品では、Java Standard Edtion 6によるIJServerの運用をサポートします。
Webコンテナは、Java Standard Edtion 6に合わせてJSPのコンパイル論理を変更し、コンパイル処理時間を大幅に短縮
します。これによりJSP実行時にコンパイルした場合でも、レスポンスの復帰が早くなります。
なお、コンパイル論理の変更に関係なく、JSP事前コンパイルを使用している場合にはJSPのコンパイル処理は動作しま
せん。
JSPのコンパイル論理が変わることで、JSPのコンパイル時に生成するファイルは以下の表のようになります。
表では、Javaバージョンによるコンパイル結果の違いを表します。生成される場所については、「JSPコンパイル結果格納
ディレクトリ」を参照してください。
オペレーション
Java Standard Edtion 5
Java Standard Edtion 6
配備時にJSP事前コンパイルを指定
ます。
Javaソースファイル、クラスファイル
を生成します。
Javaソースファイル、クラスファ
イルを生成します。
ファイルを生成しません。(注
2)
JSP実行時にコンパイルを行います。
(注1)
注1):Interstage Deployment Descriptor(sun-web.xml)のプロパティkeepgeneratedの指定により、Javaソースファイルの生
成条件が変わります。詳細については、「3.2.3.2 Interstage Web application deployment descriptor (sun-web.xml)」を参
照してください。
注2):JSPの実行に影響はありません。ただし、JSPのコンパイルエラーにより原因究明のためJavaソースファイルを解析し
たい場合には、Interstage Deployment Descriptor(sun-web.xml)のオプションkeepgeneratedを指定してください。
2.6 HTTPサービス
HTTP通信によるリクエストを処理するための機能を提供しています。
HTTPサービスでは、Webコンテナがクライアントと通信するポートに関する設定やリクエストを処理するためのスレッド数
の設定などを行います。
HTTPサービスに関する設定は、Interstage Java EE管理コンソールまたは、asadminコマンドを使用します。
設定方法の詳細は、Interstage Java EE管理コンソールのヘルプ、または、「リファレンスマニュアル(コマンド編)」を参照
してください。
ここではHTTPサービスの機能である以下について説明します。
・ HTTPリスナー
・ HTTPアクセスログ
・ HTTPトレースログ
2.6.1 HTTPリスナー
HTTP リスナーは、クライアントからのリクエストを受け付け、受け付けたリクエストを仮想サーバーに転送する役割を担っ
ています。
HTTPリスナーは、ポート番号とIPアドレスの一意な組み合わせをもつ必要があります。
定義の各項目は、「リファレンスマニュアル(コマンド編)」-「configsの定義項目」を参照してください。
2.6.2 HTTPアクセスログ
HTTPアクセスログを有効にすることによって、クライアントからWebコンテナへのアクセスに対するログ情報を出力します。
出力されたログの情報を解析することにより、障害発生時の原因究明およびセキュリティ監視など運用面での強化を行う
ことができます。
HTTPアクセスログの詳細については、「4.21.3 HTTPアクセスログ」を参照してください。
- 33 -
2.6.3 HTTPトレースログ
トレースログ機能を有効にすることによって、クライアントからのリクエストに対するWebコンテナ内の処理状態をログファイ
ルに出力します。出力されたログの情報を解析することにより障害発生時の原因究明に利用することができます。
HTTPトレースログの詳細については、「4.21.5 HTTPトレースログ」を参照してください。
2.7 EJBの提供機能
ここでは、EJBの提供機能について説明します。
EJBアプリケーションの形態
EJBアプリケーションには、以下の形態があります。
Session Bean
クライアントとの対話処理を実現するオブジェクトです。一般的には、ビジネスロジックを実現しています。詳細は、
「2.7.1 Session Beanの実行環境」を参照してください。
Message-driven Bean
メッセージを受信して処理するオブジェクトです。コンテナは、JMSまたはconnectorからのメッセージを受信して、
Message-driven Beanのインスタンスにマッピングしてビジネスロジックを実現しています。詳細は、「2.7.2 Messagedriven Beanの実行環境」を参照してください。
EJBコンテナが提供する機能
本製品では、以下の機能を提供しています。
Session Beanの実行環境
詳細は、「2.7.1 Session Beanの実行環境」を参照してください。
Message-driven Beanの実行環境
詳細は、「2.7.2 Message-driven Beanの実行環境」を参照してください。
Java Persistence API
業務データをリレーショナルデータベースで管理するために、Java Persistence APIを提供しています。EJB 2.1以前の
Entity Beanの代わりに、Java Persistence APIの採用を推奨します。詳細は、「2.10 JPAの提供機能」を参照してくださ
い。
時間監視機能
詳細は、「2.8 EJBコンテナ時間監視機能」を参照してください。
EJBディスパッチ機能によるロードバランス
詳細は、「2.7.3 EJBディスパッチ機能によるロードバランス」を参照してください。
また、EJBコンテナの機能でチューニングを行う場合は、「チューニングガイド」-「EJBコンテナのチューニング」を参照し
てください。
2.7.1 Session Beanの実行環境
Session Beanは、サーバ上でビジネスロジックを実現するEJBアプリケーションです。クライアントとの通信にはRMI-IIOP
またはSOAPを使用でき、開発者は通信処理を実装することなくクライアントからSession Beanを呼び出すことができます。
また、トランザクション処理やセキュリティ処理をEJBコンテナに任せることができるため、開発者はビジネスロジックの開発
に専念できます。
Session Beanには、状態を保持できる/保持できないによって以下の2種類が存在します。それぞれの特徴を以下に示し
ます。
- 34 -
Stateless Session Bean
クライアントとの対話中、トランザクション状態やアプリケーション変数をインスタンスに保持できません。Stateless Session
Beanのインスタンスはプールで管理され、クライアントから呼び出される度に空いているインスタンスが再利用されます。
このため、メモリ使用量を軽減できます。プールの詳細については、「チューニングガイド」-「Enterprise Beanインス
タンスのプーリング」を参照してください。
Stateless Session BeanをWebサービスのエンドポイントとして公開することもできます。
Webサービスのエンドポイントとして公開することでSOAPでの呼出しができ、通信プロトコルにHTTPが使用されるため、
ファイヤーウォールを隔てたシステムを構築する場合には環境構築が容易です。
Stateful Session Bean
クライアントとの対話中にトランザクション状態やアプリケーション変数を保持できます。作成されたStateful Session
Beanのインスタンスは、キャッシュで管理されます。同一のクライアントから呼び出された場合には、EJBコンテナが
キャッシュされている前回の呼出しと同じインスタンスを呼び出すため、前回の状態をインスタンス変数に保持できます。
キャッシュの詳細については、「チューニングガイド」-「Enterprise Beanインスタンスのキャッシング」を参照してください。
キャッシュされたインスタンスはRemove要求を実行して削除するか、一定時間超過してもビジネスメソッドが実行され
なかった場合、コンテナが「Stateful Session Beanインスタンスの無通信時間監視機能」によって自動的に該当のイン
スタンスを削除します。
以下にSession Beanの位置づけを示します。
EJBクライアントからEJBアプリケーションのビジネスインタフェースに対して要求を発行する場合、EJBクライアントがEJB
アプリケーションのビジネスインタフェースなどのクラスを参照できるように、EJBクライアントと一緒にパッケージングするか、
IJServerクラスタの共通クラスローダ、またはアプリケーションクライアントコンテナのクラスパスに追加します。
Stateless Session BeanのWebサービスエンドポイントに対して要求を発行する場合、Webサービスクライアントアプリケー
ションを使用します。詳細は、「4.12 Webサービスクライアントを利用する場合の手順」を参照してください。
EJB規約によってSession Beanで使用するインタフェースが異なります。EJB3.0規約では、ビジネスインタフェースを使用
します。EJB2.1規約以前では、Homeインタフェース/LocalHomeインタフェースとRemoteインタフェース/Localインタフェー
スを使用します。EJB3.0規約でも、下位互換のためにHomeインタフェース/LocalHomeインタフェースを使用できますが、
使用する必要はありません。インタフェースの違いについては、EJB規約を参照してください。
2.7.2 Message-driven Beanの実行環境
Message-driven Beanは、JMSメッセージまたはリソースアダプタのメッセージを受信して処理するEJBアプリケーションです。
EJBコンテナは、Message-driven Beanが対象とする宛先にメッセージが到着すると、そのメッセージを受信してMessagedriven Beanのインスタンスを呼び出してビジネスロジックを実行します。
Message-driven Beanに記述されたメッセージリスナーメソッド(JMSの場合はonMessageメソッド)でメッセージを処理します。
- 35 -
Message-driven Beanは、Session BeanまたはJava Persistence APIを呼び出すか、DBMSが提供するデータベース操作
命令(JDBCドライバ)を直接呼び出してデータベース処理を行います。
Message-driven Bean のインスタンスは、プールで管理されます。プールの詳細については、「チューニングガイド」-
「Enterprise Beanインスタンスのプーリング」を参照してください。
以下にMessage-driven Beanの位置づけを示します。以下はJMSメッセージを受信する場合の構成図です。
Message-driven Beanはメッセージを受信する対象としてJMSからメッセージを受信するか、リソースアダプタからメッセー
ジを受信するか選択できます。
JMSからメッセージを受信する場合
JMSからメッセージを受信する場合、Message-driven Beanがメッセージ受信対象とする定義済みの以下の2つを指定す
る必要があります。
・ JMS接続ファクトリ
・ JMS送信先リソース
以下にそれぞれの指定方法について説明します。
JMS接続ファクトリの指定
JMSプロバイダにアクセスするには、JMS接続ファクトリが必要です。Message-driven Beanが対象とするJMS接続ファクト
リを指定することで、JMS接続ファクトリのコネクションプールをチューニングできます。JMS接続ファクトリを指定しなかっ
た場合には、コネクションプールのチューニング項目がデフォルト設定のJMS接続ファクトリが内部的に使用されます。
Message-driven Beanが対象とするJMS接続ファクトリを指定するには、JMS接続ファクトリのJNDI名をInterstage EJB
application deployment descriptor (sun-ejb-jar.xml)ファイルの<ejb><mdb-connection-factory>タグに指定します。定義詳
細については、「3.2.3.3 Interstage EJB application deployment descriptor (sun-ejb-jar.xml)」を参照してください。JMS接
続ファクトリの作成方法とチューニング機能については、「4.16.3 JMSのメッセージを送受信する準備」を参照してください。
JMS送信先リソースの指定
Message-driven Beanが使用するJMS送信先リソースのJNDI名を指定します。
JMS送信先リソースの作成については、「4.16.3 JMSのメッセージを送受信する準備」を参照してください。
Message-driven Beanが使用するJMS送信先リソースの指定場所を、以下に示します。
定義の
優先度
1
指定場所
使用パターン
sun-ejb-jar.xmlファイルの<ejb>
の<jndi-name>
EJB 2.1以前のEJBアプリケーションを使用する場合、
または以下の定義を修正せずに上書きしたい場合。
- 36 -
定義の
優先度
指定場所
使用パターン
2
ejb-jar.xmlファイルの
<message-driven-bean>の
<mapped-name>
EJB 3.0のEJBアプリケーションを使用する場合。アノ
テーションを使用しない、または上書きしたい場合。
3
ソース内の@MessageDrivenの
mappedName属性
EJB 3.0のEJBアプリケーション開発時にアノテーショ
ンを採用し運用環境上のJNDI名が既知の場合。
サブスクライバ識別名の指定
Message-driven BeanがPublish/Subscribeモデルの場合は、サブスクライバの永続性をdeployment descriptor(ejb-jar.xml)
ファイルの<message-driven><subscription-durability>タグに指定できます。サブスクライバの永続性の詳細については、
EJB規約を参照してください。
サブスクライバの永続性を「Durable」に指定する場合は、サブスクライバの識別名をInterstage EJB application deployment
descriptor(sun-ejb-jar.xml)ファイルの<ejb><jms-durable-subscription-name>タグに指定します。定義詳細については、
「3.2.3.3 Interstage EJB application deployment descriptor (sun-ejb-jar.xml)」を参照してください。
注意
IJServerクラスタを複数プロセス構成で運用する場合の注意事項
IJServerクラスタを複数プロセス構成で運用すると、Message-driven Beanは複数のセッションを使用してメッセージを受信
するため、複数メッセージを並行に処理するためにメッセージ順序性は保証されません。
Publish/Subscribeモデルでは複数の受信者に対して同一のメッセージが配信されますが、IJServerクラスタを複数プロセ
ス構成で運用する場合は、Topicからのメッセージを1つのプロセスで動作しているMessage-driven Beanにのみ送信します。
サブスクライバの永続性を「Durable」に指定する場合の注意事項
サブスクライバの永続性を「Durable」に指定した場合、Message-driven Beanの初回起動時に「サブスクライバの識別名」
に設定された名前で永続サブスクリプションを登録します。永続サブスクリプションが必要なくなった場合は、imqcmd
destroy durコマンドで削除してください。
リソースアダプタからメッセージを受信する場合
リソースアダプタからメッセージを受信する場合、Interstage EJB application deployment descriptor(sun-ejb-jar.xml)の
<resource-adapter-mid>タグに使用するリソースアダプタ名を指定します。<resource-adapter-mid>タグを指定しない場合、
または空の文字列か「jmsra」を指定した場合は、メッセージを受信する対象としてJMSが選択されます。リソースアダプタ
名については「4.17.1 コネクタモジュールの配備とリソース定義の作成」を、定義詳細については「3.2.3.3 Interstage EJB
application deployment descriptor (sun-ejb-jar.xml)」を参照してください。
チューニング機能、複数プロセスでの運用や使用時の注意事項については、リソースアダプタ提供元のマニュアルも参
照してください。
2.7.3 EJBディスパッチ機能によるロードバランス
IIOP通信のロードバランス機能としてEJBディスパッチ機能を提供します。従来のグループ管理サービス(以降、GMS)と
比べて、多様なシステム構成においても柔軟な拡張や構成変更が可能となります。GMSを利用したロードバランスは非
推奨機能となります。
以下にEJBディスパッチ機能を利用した場合の構成を記載します。
- 37 -
EJBディスパッチ機能では、IIOP通信による要求を受信して適切なサーバーインスタンスに要求を振り分けるディスパッ
チャのことを"EJBディスパッチャ"と呼びます。
EJBディスパッチ機能を利用したロードバランスでは、業務サーバーインスタンスとは別にEJBディスパッチャを運用する
サーバーインスタンスを用意します。クライアントは、EJBディスパッチャに対してIIOP通信の要求を送信します。IIOP通
信の要求を受信したEJBディスパッチャは、振り分け対象のサーバーインスタンスにリクエストを振り分けます。EJBディス
パッチャは複数のIJServerクラスタを振り分け対象にできるため、クライアントはEJBディスパッチャのエンドポイント(ホスト
名とIIOPリスナーポート)のみ意識すれば、EJBディスパッチャが振り分け対象として認識しているIJServerクラスタ/サー
バーインスタンスがどのようにサーバー上に配置されているかを意識する必要はありません。
従来のグループ管理サービスを利用したロードバランスでは、IIOP通信で要求を送信する前(InitialContextオブジェクト
を生成する時)に、一度業務サーバーインスタンスのグループ管理サービスから稼動中のサーバーインスタンス一覧情
報を取得し、その一覧情報からIIOP通信でリクエストを送信するサーバーインスタンスを決定しました。しかし、アプリケー
ションとグループ管理サービスが同一のサーバーインスタンスで動作するため、アプリケーションの異常などにより問い合
わせるグループ管理サービスのサーバーインスタンスが停止している可能性があり、呼び出し元は各サーバーインスタ
ンスの状態を意識する必要がありました。
グループ管理サービスを利用した場合とEJBディスパッチ機能を利用した場合のロードバランスの比較を以下に説明し
ます。また、処理性能もグループ管理サービスを利用した場合に比べて、EJBディスパッチャを利用した場合の方が向上
します。
項目
別々のIJServerクラスタで運用された
アプリケーションの呼び出し
クライアントにおけるエンドポイントの
指定
グループ管理サービスを利用した場
合
EJBディスパッチャを利用した場合
呼び出せません。
呼び出すことができます。
クライアントアプリケーションから複数
IJServerクラスタのEJBアプリケーショ
ンを呼び出せません。呼び出す場
合には、エンドポイントの指定を変更
し、クライアントアプリケーションを再
起動する必要があります。
EJBディスパッチャが複数IJServerク
ラスタの要求を一括で受け付けて振
り分けるため、クライアントから複数
IJServerクラスタで運用されたEJBア
プリケーションを呼び出すことができ
ます。
EJBアプリケーションを運用するサー
バーインスタンスのホスト名とIIOPリ
スナーポート番号を指定します。ア
プリケーションの異常やアプリケー
ションのメンテナンスによりサーバー
インスタンスが停止している可能性
EJBディスパッチャを運用するサー
バーインスタンスのホスト名とIIOPリ
スナーポート番号のみ指定します。
EJBディスパッチャを運用するサー
バーインスタンスでアプリケーション
を運用しない場合、サーバーインス
- 38 -
項目
グループ管理サービスを利用した場
合
EJBディスパッチャを利用した場合
があるため、エンドポイントを複数(作
成したすべてのサーバーインスタン
ス数分)指定することが推奨です。
タンスを常時起動しておくことにより
エンドポイントは1つのみ指定すれ
ば良いです。
業務サーバーインスタンスの監視方
法
各業務サーバーインスタンスがマル
チキャストに定期的にハートビート信
号を送信し、業務サーバーインスタ
ンスが正常に稼動しているか監視し
ます。
業務サーバーインスタンスの起動/
停止制御を行うInterstage Java EE
Node Agentサービスが、正常に稼動
している業務サーバーインスタンス
をEJBディスパッチャに通知します。
IPCOM連携によるIIOP通信の負荷
分散
Stateless Session BeanのみIPCOM
連携が可能です。
Stateful Session BeanとStateless
Session BeanでIPCOM連携が可能
です。
2.7.3.1 振り分け対象の追加/削除
Interstage Java EE Node Agentサービスと連携して、起動済みのサーバーインスタンスが自動的に振り分け対象となり、
停止したサーバーインスタンスを振り分け対象から自動的に除外します。
また、EJBディスパッチャを起動後にディスパッチターゲットを追加・削除した場合には、追加・削除したタイミングでIJServer
クラスタのサーバーインスタンスが振り分け対象に反映されます。
注意
・ Interstage Java EE Node Agentサービスがサーバーインスタンスの起動もしくは停止を確認してから、サーバーインス
タンスの振り分け対象への追加もしくは振り分け対象から除外するまで数秒(サーバーの負荷が高い場合には数十
秒)の時間を要する場合があります。
・ EJBディスパッチャを起動後にディスパッチターゲットのIJServerクラスタに対して以下の操作を行わないでください。
以下の操作を行ったサーバーインスタンスはEJBディスパッチャの振り分け対象に正しく反映されない場合があります。
正しく反映されない場合、操作を行ったIJServerクラスタをEJBディスパッチャのディスパッチターゲットから一度削除
して再度追加するか、もしくは、EJBディスパッチャのIJServerクラスタを再起動してください。
- IJServerクラスタへのサーバーインスタンスの追加/削除
- IJServerクラスタのサーバーインスタンスに対してIIOPリスナーの定義変更
- 39 -
・ ディスパッチターゲットに追加したIJServerクラスタをInterstage Java EE管理コンソールもしくはasadminコマンドのdeleteclusterサブコマンドで削除しても、ディスパッチターゲットの定義は残存します。必要に応じてIJServerクラスタの削除
に合わせてディスパッチターゲットも削除してください。
2.7.3.2 振り分け対象のEnterprise JavaBeans
サーバーインスタンスが振り分け対象と認識されたタイミングで、そのサーバーインスタンスですでに有効(稼動済み)と
なっているEnterprise JavaBeansがEJBディスパッチャの振り分け対象となります。振り分け対象となった起動済みのサー
バーインスタンスに対し、以下の操作を行った場合には異常となります。このため、起動済みのサーバーインスタンスに
対して配備・配備解除するような開発中はEJBディスパッチ機能を利用したロードバランス機能は使用しないでください。
・ Enterprise JavaBeansを追加で配備した場合(配備と同等のアプリケーションの展開やアプリケーションの活性状態を
有効にした場合を含む)
EJBディスパッチャの振り分け対象となりません。呼び出し元から追加で配備したEnterprise JavaBeansを呼び出した
場合には、振り分け対象が存在しないことを示すOBJ_ADAPTER例外が返却されます。
・ Enterprise JavaBeansを再配備した場合
追加で配備した場合と同様にEJBディスパッチャの振り分け対象となりません。呼び出し元から再配備したEnterprise
JavaBeansを呼び出した場合には、振り分け対象が存在しないことを示すOBJ_ADAPTER例外が返却されます。
・ Enterprise JavaBeansを配備解除した場合(配備解除と同等のアプリケーションの展開解除やアプリケーションの活性
状態を無効にした場合を含む)
EJBディスパッチャの振り分け対象から除外されません。呼び出し元から配備解除したEnterprise JavaBeansを呼び出
した場合には、振り分け対象のサーバーインスタンスに要求が振り分けられますが、対象のEnterprise JavaBeansが
存在しないことを示すOBJECT_NOT_EXIST例外が返却されます。
上記のように振り分け対象となった起動済みのサーバーインスタンスに対する変更を、EJBディスパッチャに有効にする
には以下の方法があります。
・ asadminコマンドのdisable-ejb-dispatch-targetサブコマンドでサーバーインスタンスの振り分け対象として一時的に無
効し、enable-ejb-dispatch-targetサブコマンドでサーバーインスタンスを再度振り分け対象として有効にする。
・ EJBディスパッチャが稼動しているサーバーインスタンスを再起動する。
・ Enterprise JavaBeansを運用しているサーバーインスタンスを再起動する。
また、IIOP通信で呼び出されるEnterprise JavaBeansがEJBディスパッチャの振り分け対象となります。IIOP通信を介さず
に呼び出されるMessage-driven Beanやその他のEnterprise JavaBeansは振り分け対象となりません。
注意
以下のEnterprise JavaBeansの呼び出しはEJBディスパッチャの振り分け対象となりません。
・ Java EE Management規約のMEJB
2.7.3.3 コマンドによる振り分け操作と状態表示
以下のコマンドを使用することにより、EJBディスパッチャにおけるリクエスト振り分け制御状態(振り分け対象にする/しな
い)の変更や、現在のリクエスト振り分け制御状態を表示できます。
例えば、EJBアプリケーションの定期保守、ネットワーク障害やマシンのハード障害などの場合に当該サーバーインスタ
ンスを一時的にリクエスト振り分け対象から外し、保守完了後や障害対処後に振り分け対象に戻します。
この操作により、安定かつ継続的なシステムの運用が可能になります。
・ 振り分け操作コマンド(disable-ejb-dispatch-target/enable-ejb-dispatch-target)
リクエストの振り分け対象にする/しないの操作を、サーバーインスタンス名を指定して行います。
振り分け操作コマンドで操作した状態は、EJBディスパッチャの再起動後や異常停止後でも保持されます。振り分け
の状態を変更したい場合は、再度振り分け操作コマンドを実行します。
・ 振り分け状態表示コマンド(list-ejb-dispatch-targets)
サーバーインスタンスへの振り分け状態を表示します。
- 40 -
2.7.3.4 EJBディスパッチャのログ
EJBディスパッチ機能の利用者が、意図した通りに振り分け制御されているかを確認できるように、EJBディスパッチャの
振り分け制御情報をログに出力する機能を提供します。
ログはサーバーログにメッセージとして出力されます。
ログの設定
EJBディスパッチャのログは、Interstage Java EE管理コンソール、またはasadminコマンドにより有効にできます。
・ Interstage Java EE管理コンソール
[クラスタ] > [クラスタ名]の「IIOPロードバランス」画面において「リクエストディスパッチ情報ログ」もしくは「ディスパッチ
ターゲット情報ログ」の設定を有効にします。
・ asadminコマンドのsetサブコマンド
「clustersの定義項目」の「リクエストディスパッチ情報ログ」もしくは「ディスパッチターゲット情報ログ」の設定を変更し
ます。
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参照し
てください。
ログの出力先
サーバーログ(server.log)ファイルに出力されます。
出力情報
以下の情報を出力します。
出力情報
内容
リクエストディスパッチ情報ログ
この設定を有効に設定した場合、EJBディスパッチャが
要求をどの対象に振り分けたかを示す情報をログに出
力します。
ディスパッチターゲット情報ログ
この設定を有効に設定した場合、EJBディスパッチャへ
振り分け対象となるサーバーインスタンスの情報をログ
に出力します。
出力形式
以下の情報が出力されます。
1)リクエストディスパッチ情報ログ
[出力形式]
- IIOP通信要求を受け付けた場合
INFO: ISJEE_EJBD0006: REQUEST ACCEPT "リクエストID" "リモートホスト名" "種別" "インタフェース情報" "オ
ペレーション名" "アプリケーション識別情報"
- IIOP通信要求を振り分け対象に振り分ける場合
INFO: ISJEE_EJBD0007: REQUEST DISPATCH "リクエストID" "リモートホスト名" "サーバーインスタンス名" "種
別" "インタフェース情報" "オペレーション名" "アプリケーション識別情報"
[可変情報]
出力項目
内容
リクエストID
IIOP通信要求を特定する一意のIDが出力されます。
リモートホスト名
EJBディスパッチャに接続したクライアントのホスト名、またはIPアドレ
スが出力されます。同一サーバーインスタンス内で要求を受け付けた
場合は、"-"が出力されます。
サーバーインスタンス名
ディスパッチ対象のサーバーインスタンス名が出力されます。
- 41 -
出力項目
内容
操作名がACCEPTの場合には出力されません。
種別
以下のいずれかが出力されます。
・ EJB
EJBアプリケーションに対する要求です。
・ SERVICE
EJBアプリケーション以外の各種サービスに対する要求です。
インタフェース情報
種別が「EJB」の場合、インタフェース情報が以下のような形式で出力
されます。
種別が「SERVICE」の場合、内部のインタフェース情報が出力されま
すので無視してください。
■EJB2.1以前の形式の場合
RMI:Homeインタフェースのパッケージ名.Homeインタフェース名:
0000000000000000
■EJB3.0形式の場合※
RMI:com.sun.ejb.codegen.GenericEJBHome_Generated:
0000000000000000
※Homeインタフェースが存在しないEJB3.0形式のEnterprise
JavaBeansの場合には、Homeインタフェース名には"
com.sun.ejb.codegen.GenericEJBHome_Generated"が固定で出力さ
れます。
オペレーション名
呼び出されたオペレーション名が出力されます。
アプリケーション識別情報
アプリケーションを一意に特定する内部情報が出力されます。
2)ディスパッチターゲット情報ログ
[出力形式]
- 振り分け対象が追加された場合
INFO: ISJEE_EJBD0008: TARGET ADDED "サーバーインスタンス名" "インタフェース情報" "アプリケーション
識別情報"
- 振り分け対象が削除された場合
INFO: ISJEE_EJBD0009: TARGET DELETED "サーバーインスタンス名"
- ユーザ操作により振り分け対象として再登録された場合
INFO: ISJEE_EJBD0010: TARGET ENABLED "サーバーインスタンス名" "インタフェース情報" "アプリケーショ
ン識別情報"
- ユーザ操作により振り分け対象から除外された場合
INFO: ISJEE_EJBD0011: TARGET DISABLED "サーバーインスタンス名"
[可変情報]
出力項目
内容
サーバーインスタンス名
ディスパッチ対象のサーバーインスタンス名が出力されます。
インタフェース情報
操作名が"ADDED"もしくは"ENABLED"の場合に出力されます。
ディスパッチ対象となるEJBアプリケーションのインタフェース情報が
出力されます。以下の形式で出力されます。
■EJB2.1以前の形式のHomeインタフェースの場合
- 42 -
出力項目
内容
RMI:Homeインタフェースのパッケージ名.Homeインタフェース名:
0000000000000000
■EJB2.1以前の形式のRemoteインタフェースの場合
RMI:Remoteインタフェースのパッケージ名.Remoteインタフェース名:
0000000000000000
■EJB3.0形式のHomeインタフェースの場合※
RMI:com.sun.ejb.codegen.GenericEJBHome_Generated:
0000000000000000
■EJB3.0形式のビジネスインタフェースの場合
RMI:ビジネスインタフェースのパッケージ名._ビジネスインタフェース
名_Remote:0000000000000000
例)EJB3.0形式のビジネスインタフェース
が"com.fujitsu.manager.EmployeeRemote"の場合の例
RMI:com.fujitsu.manager._EmployeeRemote_Remote:
0000000000000000
※Homeインタフェースが存在しないEJB3.0形式のEnterprise
JavaBeansの場合には、Homeインタフェース名には"
com.sun.ejb.codegen.GenericEJBHome_Generated"が固定で出力さ
れます。
アプリケーション識別情報
操作名が"ADDED"もしくは"ENABLED"の場合に出力されます。
アプリケーションを一意に特定する内部情報が出力されます。
出力例
[08/06/2011 14:44:11.250 +0900] ISJEE: INFO: ISJEE_EJBD0008: TARGET ADDED "targetInstance1"
"RMI:com.fujitsu.test.ejb21.remote.FrontStatelessHome:0000000000000000" "85689139321831425_RHomeEJBHome": ThreadID=25,ThreadName=RMI TCP Connection(120)-10.10.10.11
[08/06/2011 14:44:11.250 +0900] ISJEE: INFO: ISJEE_EJBD0008: TARGET ADDED "targetInstance1"
"RMI:com.fujitsu.test.ejb21.remote.FrontStatelessRemote:0000000000000000" "85689139321831425_RHomeEJBObject": ThreadID=25,ThreadName=RMI TCP Connection(120)-10.10.10.11
[08/06/2011 14:35:15.218 +0900] ISJEE: INFO: ISJEE_EJBD0006: REQUEST ACCEPT "59" "10.10.10.11" "EJB"
"RMI:com.fujitsu.test.ejb21.remote.FrontStatelessHome:0000000000000000" "create" "RootPOA/
#INTERNAL#ReferenceFactoryManagerBase#INTERNAL#/85689139321831425_RHome-EJBHome":
ThreadID=23,ThreadName=p: thread-pool-1; w: 16
[08/06/2011 14:35:15.218 +0900] ISJEE: INFO: ISJEE_EJBD0007: REQUEST DISPATCH "59" "10.10.10.11"
"targetInstance1" "EJB" "RMI:com.fujitsu.test.ejb21.remote.FrontStatelessHome:0000000000000000" "create"
"85689139321831425_RHome-EJBHome": ThreadID=23,ThreadName=p: thread-pool-1; w: 16
[08/06/2011 14:38:17.187 +0900] ISJEE: INFO: ISJEE_EJBD0011: TARGET DISABLED "targetInstance1":
ThreadID=24,ThreadName=RMI TCP Connection(101)-10.10.10.11
[08/06/2011 14:38:30.953 +0900] ISJEE: INFO: ISJEE_EJBD0010: TARGET ENABLED "targetInstance1"
"RMI:com.fujitsu.test.ejb21.remote.FrontStatelessHome:0000000000000000" "85689139321831425_RHomeEJBHome": ThreadID=24,ThreadName=RMI TCP Connection(101)-10.10.10.11
[08/06/2011 14:38:30.953 +0900] ISJEE: INFO: ISJEE_EJBD0010: TARGET ENABLED "targetInstance1"
"RMI:com.fujitsu.test.ejb21.remote.FrontStatelessRemote:0000000000000000" "85689139321831425_RHomeEJBObject": ThreadID=24,ThreadName=RMI TCP Connection(101)-10.10.10.11
[08/06/2011 14:43:57.250 +0900] ISJEE: INFO: ISJEE_EJBD0009: TARGET DELETED "targetInstance1":
ThreadID=25,ThreadName=RMI TCP Connection(120)-10.10.10.11
- 43 -
2.8 EJBコンテナ時間監視機能
EJBコンテナでは、以下の時間監視機能が使用できます。
・ IIOP接続の待機時間監視機能
・ IIOP通信時のサーバメソッド復帰時間監視機能
・ IIOP通信ソケットの送受信待機時間監視機能
・ IIOP通信クライアントの無通信監視機能
・ アプリケーションの最大処理時間監視機能
・ Stateful Session Beanインスタンスの無通信時間監視機能
・ EJBコンテナのトランザクション完了時間監視機能
・ プールされたBeanインスタンスのアイドル時間監視機能
・ プールされたスレッドのアイドル時間監視機能
・ EJBタイマーサービス
以下の表で、各機能の概要を説明します。
機能
機能説明
効果
IIOP接続の待機時
間監視機能
IIOP通信によるクライアントからサーバへの接続
処理のリトライ時間を監視します。監視時間を超
過すると、クライアントに例外を返却します。
IJServerクラスタ未起動、
ネットワーク切断、接続
サーバ情報の誤りなどの
異常を検知できます。
IIOP通信時のサー
バメソッド復帰時間
監視機能
IIOP通信によるクライアントからサーバに対する
要求の送信に成功してから、サーバから要求が
復帰するまでの時間を監視します。サーバから
一定時間超過しても要求が復帰しない場合には、
クライアントにタイムアウトを通知する例外が返
却されます。
リクエスト送信後のネット
ワーク異常や、サーバ側
の処理遅延やハングアッ
プを検知できます。
IIOP通信ソケットの
送受信待機時間監
視機能
IIOP通信によるクライアントからのリクエスト受信
(送信)中、またはサーバからのレスポンス受信
(送信)中に一度にデータを受信(送信)できな
かった場合、読み込み(書き込み)のリトライが行
われます。リトライを実行しても受信(送信)でき
なかった場合には、クライアントに例外が返却さ
れます。
電文読み込み(書き込
み)中のネットワーク異常
や処理遅延を検知して、
処理を中断できます。
IIOP通信クライアン
トの無通信監視機能
クライアントから、サーバへの無通信状態を監視
します。
監視時間を超えた場合、次回リクエスト送信時に、
サーバとのコネクションの切断・再接続を行いま
す。
サーバからコネクション
切断が行われていた場
合に、クライアント側で新
しくコネクションを作成す
ることで、通信異常を回
避できます。
アプリケーションの最
大処理時間監視機
能
EJBアプリケーションのメソッド処理時間(サーバ
処理時間)を監視します。メソッドが一定時間超
過しても完了しない場合には、イベントログ/シス
テムログに異常を通知するメッセージが出力さ
れます。
システム管理者がEJBア
プリケーションの処理遅
延やハングアップが発生
したことを検知できます。
Stateful Session
Beanインスタンスの
Stateful Session Beanに対して、一定時間経過
してもビジネスメソッドが実行されなかった場合、
コンテナは該当のインスタンスが持つ対話状態
をファイルに保存(passivate)し、インスタンスを削
クライアントでRemove要
求を発行し忘れている、
不要なBeanインスタンス
と対話状態が削除される
- 44 -
機能
機能説明
効果
無通信時間監視機
能
除します。一定時間経過してからpassivateした
Beanをファイルシステムから削除します。
ため、使用するメモリの
最適化ができます。
EJBコンテナのトラン
ザクション完了時間
監視機能
EJBコンテナがトランザクション制御を行う場合、
トランザクションの開始から完了するまでの時間
を監視します。トランザクションが一定時間超過
しても完了しない場合、トランザクションの状態
を「MarkedRollback」に変更します(注)。
トランザクション中のハン
グアップや処理遅延が
発生したことを検知でき
ます。
プールされたBeanイ
ンスタンスのアイドル
時間監視機能
プールされたBeanインスタンスが未使用(アイド
ル状態)となっている時間を監視します。プール
内のBeanインスタンスが一定時間超過しても使
用されなかった場合には、Beanインスタンスを削
除します。
不要になった過度のイン
スタンスを破棄すること
によりメモリの最適化が
できます。
プールされたスレッ
ドのアイドル時間監
視機能
プールされたスレッドが未使用(アイドル状態)と
なっている時間を監視します。プール内のスレッ
ドが一定時間超過しても使用されなかった場合
には、スレッドを削除します。
不要になった過度のス
レッドを破棄することによ
りメモリやリソースの最適
化ができます。
EJBタイマーサービ
ス
EJBアプリケーション内でEJBタイマーを登録し、 任意の監視対象を監視
任意の時刻にコールバック処理を実行させるこ できます。
とができます。
注) トランザクションの状態については、「2.14.6 トランザクションの監視と凍結機能」を参照してください。
時間監視の各機能の設定内容
時間監視の各機能の設定内容について以下に説明します。アプリケーションの最大処理時間監視機能については、
「2.4.7 アプリケーション最大処理時間の監視とレスポンス監視」を参照してください。EJBタイマーサービスについては、
他の時間監視機能と異なり、EJBアプリケーション内でタイマーを作成します。EJBタイマーサービスについては、「2.8.3
EJBタイマーサービス」を参照してください。また、プールされたBeanインスタンスのアイドル時間監視機能とプールされ
たスレッドのアイドル時間監視機能については、「チューニングガイド」-「Enterprise Beanインスタンスのプーリング」と「ス
レッドプーリング」を参照してください。
IIOP接続の待機時間監視機能、IIOP通信時のサーバメソッド復帰時間監視機能 、IIOP通信ソケットの送受信待機時間
監視機能、IIOP通信クライアントの無通信監視機能については、「2.26 IIOP通信で使用できる時間監視機能」を参照し
てください。
2.8.1 Stateful Session Beanインスタンスの無通信時間監視機能
Stateful Session Beanインスタンスの無通信時間監視機能とは、Stateful Session Beanのインスタンスに対して、一定時間
超過してもビジネスメソッドが実行されなかった場合、コンテナが該当のインスタンスをメモリから削除する機能です。
この機能を使用することによって、長時間使用されていない不要なBeanインスタンスが削除されるため、使用するメモリを
最適化することができます。「SFSB持続性のタイプ」が「none」・「file」によって本機能の処理が異なります。デフォルトは
「none」です。
「SFSB持続性のタイプ」が「none」のとき
キャッシュアイドルタイムアウトで設定した一定時間を超過してもビジネスメソッドが実行されなかったBeanインスタンスは
メモリから削除されます。削除したBeanに対して要求が発行されると、EJB規約に記載されている例外をクライアントに通
知します。JNDI から新しいStateful Session Beanの参照を取得し対話をし直してください。
「SFSB持続性のタイプ」が「file」のとき
以下の2段階があります。
1. Beanインスタンスの対話状態を一時的にファイルシステムに保存(passivate)
キャッシュアイドルタイムアウトで設定した一定時間を超過してもビジネスメソッドが実行されなかったBeanインスタ
ンスはファイルシステムにpassivateされ、メモリから削除されます。passivateされた Beanに対して要求が発行される
- 45 -
と、コンテナは対話状況をファイルシステムから読み込みBeanを回復(activate)します。コンテナは passivateとactivate
処理を正常に行った場合は、メッセージを出力しません。
2. 保存した対話状態をファイルシステムから削除
削除タイムアウトで設定した一定時間を超過してBeanに対してビジネスメソッドが実行されなかった場合、コンテナ
が該当のインスタンス、またはpassivateによりファイルシステムに保存した対話状況を削除します。削除したBeanに
対して要求が発行されると、EJB規約に記載されている例外をクライアントに通知します。JNDI から新しいStateful
Session Beanの参照を取得し対話をし直してください。
注意
トランザクション管理種別が「Bean」でBeanインスタンスが削除された時にトランザクションが開始されている状態の場合は、
コンテナがトランザクションを自動的にロールバックします。
参照
本監視機能の設定については、「6.8.8 EJBコンテナの定義項目」-「Enterprise Beanインスタンスのキャッシング」の以下
各定義項目を参照してください。
・ Beanインスタンスのpassivate化に関する項目
- 「最大キャッシュサイズ」
- 「キャッシュのサイズ変更量」
- 「キャッシュアイドルタイムアウト」
・ passivateされたBeanの削除に関する項目
- 「削除タイムアウト」
- 「選択内容の削除ポリシー」
2.8.2 EJBコンテナのトランザクション完了時間監視機能
EJBアプリケーションのトランザクション制御をコンテナが行う場合、トランザクションの時間が監視されます。本機能の設
定は、EJBアプリケーションごとに指定でき、トランザクションサービスのトランザクションタイムアウト設定より優先して有効
になります。
本監視機能の待機時間は、Interstage EJB application deployment descriptor(sun-ejb-jar.xml)ファイルの<ejb><cmttimeout-in-seconds>タグに指定します。定義詳細については、「3.2.3.3 Interstage EJB application deployment descriptor
(sun-ejb-jar.xml)」を参照してください。
トランザクションの処理時間が指定したトランザクションタイムアウト時間を超過した場合には、EJBコンテナが自動的にト
ランザクションの状態を「MarkedRollback」に変更します。MarkedRollbackに変更されたトランザクションは、EJBアプリケー
ションのメソッド処理完了時に、自動的にロールバックされます。トランザクションの状態については、「2.14.6 トランザクショ
ンの監視と凍結機能」を参照してください。本機能を使用することで、サーバのトランザクション処理が一定時間超過して
も完了しない場合、サーバの処理復帰を待たずに呼出し元の処理を中断してもトランザクションを安全にロールバックで
きます。
サーバーログには、ISJEE_EJB5123警告メッセージが出力されます。クライアントにはエラーは返却されません。
2.8.3 EJBタイマーサービス
EJBタイマーサービスでは、以下のようなタイマーを作成し、任意の時刻にEJBコンテナからコールバック処理を実行させ
ることができます。
・ 一定時間経過後にコールバック
・ 一定時間経過後にコールバック、その後定期的にコールバック
・ 指定日時にコールバック
- 46 -
・ 指定日時にコールバック、その後定期的にコールバック
以下について説明します。
・ 基本機能
・ タイマーの永続化について
・ テーブルに格納するデータについて
・ タイマーサービスの設定について
・ タイマーの正確性と処理遅延時の動作
・ IJServerクラスタを複数プロセス構成で運用する場合の注意事項
基本機能
タイマーの生成方法
タイマーは、javax.ejb.TimerServiceインタフェースのcreateTimerメソッドを実行して生成します。createTimerメソッドの
引数に実行時刻や実行間隔を指定します。EJBタイマーサービス(javax.ejb.TimerServiceインタフェースの実装)は、
以下の方法で取得できます。
- EJBコンテナより渡されるEJBコンテキストのgetTimerServiceメソッドを実行する。
- javax.ejb.TimerService型のフィールドに@Resourceアノテーションを付与する。
タイマーのキャンセル方法
生成したタイマーをキャンセルするには、生成したタイマーのcancelメソッドを実行します。
コールバック処理の実行
タイマー生成時に指定した時刻に、EJBタイマーサービスより各Enterprise Beanのタイマーコールバックメソッドを実行
します。タイマーコールバックメソッドは、以下のいずれかで定義できます。
- コールバックしたいメソッドに@Timeoutアノテーションを定義する。
- Beanクラスがjavax.ejb.TimedObjectインタフェースを実装し、ejbTimeoutメソッドを定義する。
- deployment descriptor(ejb-jar.xml)ファイルのtimeout-methodタグにタイマーコールバックメソッド名を定義する。
タイマーの永続化
タイマーは、データベースに永続化します。IJServerクラスタ起動時にタイマー情報をデータベースから取得するため、
以下の操作によりIJServerクラスタプロセスが再起動されると、タイマーが自動的に回復します。
- IJServerクラスタが異常終了後、プロセスが自動再起動された場合
- IJServerクラスタを再起動した場合
タイマーの永続化について
タイマーを使用する場合、永続化のためのデータベースが必要です。使用するデータベースを用意してください。
タイマーをトランザクション内で生成すると、トランザクションの終了時にトランザクションのステータスに従って、タイマー
情報の登録もコミットまたはロールバックされます。そのため、タイマーを使用するトランザクション内で別のJDBCデータ
ソースやJMSリソースをアクセスする場合、グローバルトランザクションに対応するデータソース(XADataSource)を使用す
る必要があります。
グローバルトランザクションを使用すると性能のオーバーヘッドがあるため、タイマー生成処理やコールバック処理でJDBC
のAPIまたはJPAを使用してデータベースにアクセスする場合には、タイマー永続化にも同じデータソースを使用するこ
とを推奨します。
以下の表にデータベースに用意するテーブルを示します。テーブル名は、「EJB__TIMER__TBL」にしてください。
- 47 -
カラム名
データ型の
JDBCタイプ
データの長さ(最大値)
制約
TIMERID
VARCHAR
46 + [サーバーインスタンス名の長さ] +
[IJServerクラスタ名の長さ]
PRIMA
RY
KEY
OWNERID
VARCHAR
[サーバーインスタンス名の長さ]
NULL
CREATIONTIMERA
W
BIGINT
19桁(9223372036854775807)
(Symfowareでは18桁)
NOT
NULL
BLOB
LONGVARBI
NARY
プライマリキーと情報オブジェクトのバイナ
リサイズによる
NULL
CONTAINERID
BIGINT
19桁(9223372036854775807)
(Symfowareでは18桁)
NOT
NULL
STATE
INTEGER
1桁
NOT
NULL
PKHASHCODE
INTEGER
10桁(2147483647)
NOT
NULL
INTERVALDURATI
ON
BIGINT
19桁(9223372036854775807)
(Symfowareでは18桁)
NOT
NULL
INITIALEXPIRATIO
NRAW
BIGINT
19桁(9223372036854775807)
(Symfowareでは18桁)
NOT
NULL
LASTEXPIRATIONR
AW
BIGINT
19桁(9223372036854775807)
(Symfowareでは18桁)
NOT
NULL
JDBCタイプとDBMSのSQLデータ型のマッピングについては、JDBCドライバのマニュアルを参照してください。
タイマーサービスの永続化は、以下のデータベースをサポートします。
アプリケーション開発時やサンプル動作のためにJava DBデータベースも使用できますが、動作保証されません。
・ Symfoware
・ Oracle
・ SQL Server
・ PowerGres Plus
Java EE共通ディレクトリのdatabasesディレクトリにタイマー用のテーブルを用意したJava DBデータベースが格納されてい
ます。IJServerクラスタを起動する前に、このデータベースをasadminコマンドのstart-databaseサブコマンドにより起動して
ください。
上記データベースを利用するためのデフォルトデータソースは、「jdbc/__TimerPool」です。また、デフォルトの接続プー
ルは「__TimerPool」です。EJBタイマーサービスで利用するデータベースやJDKのバージョンを変更する場合は、
__TimerPoolの設定を変更するか、デフォルトデータソース「jdbc/__TimerPool」に関連付けるJDBC接続プールを変更し
てください。JDBC接続プールの設定変更については「4.15 データベースの環境設定」を参照してください。
EJBタイマーサービス用のデータベースを使用するために、リソース(データソース)を運用するIJServerクラスタのターゲッ
トに指定し、リソースの状態を「有効」に設定してください。リソースのターゲットを変更する手順については「4.14.7 リソー
スを利用するターゲットを選択する場合の手順」を、リソースの状態を変更する手順については、「4.14.6 リソースの状態
を変更する場合の手順」を参照してください。
サーバーインスタンス名でレコードを区別するため、複数のサーバーインスタンスから同じテーブルを使用できます。た
だし、複数のマシンから同じテーブルを使用する場合には、サーバーインスタンス名が重複することがあるため、サーバー
インスタンス起動時に別のマシンのサーバーインスタンスで生成されたタイマーが実行される可能性があります。この場
合には、サーバーインスタンス名が重複しないように注意してください。
- 48 -
データベースごとのテーブル生成のDDLファイルが、以下に格納されています。DDLを参照しテーブルを生成してくだ
さい。
C:\Interstage\F3FMisjee\lib\install\databases
/opt/FJSVisjee/lib/install/databases
データベース
DDLファイル名
Symfoware
ejbtimer_symfoware.sql
Oracle
ejbtimer_oracle.sql
SQL Server
ejbtimer_mssqlserver.sql
PowerGres Plus
ejbtimer_postgre.sql
Java DB
ejbtimer_derby.sql
テーブルに格納するデータについて
以下に、タイマー用のテーブルにアクセスするタイミングについて説明します。
テーブルアクセスのタイミング
目的
タイマー登録時
当該タイマーのレコードを追加します。
コールバックメソッド実行直前
当該タイマーがキャンセルされていないかを確認しま
す。
コールバックメソッド実行直後
当該タイマーのコールバックメソッド実行日時を更新
します。
タイマーのgetInfoメソッドの初回実行時
当該タイマーの情報オブジェクトを読み込みます。
タイマーのcancelメソッド実行時
当該タイマーのレコードを削除します。
TimerServiceのgetTimersメソッド実行時
サーバーインスタンスに登録されているタイマーのレ
コードを読み込みます。
サーバーインスタンス起動時
登録済みのタイマーを読み込みます。また、サーバー
インスタンス停止状態で当該モジュールが再配備さ
れている場合には、タイマーをすべて削除します。
モジュールの配備解除 (注)
当該モジュールに関係するタイマーをすべて削除し
ます。
モジュールの再配備 (注)
当該モジュールに関係するタイマーをすべて削除し
ます。
モジュールの非活性 (注)
当該モジュールに関係するタイマーをすべて削除し
ます。
注) サーバーインスタンス停止中状態の場合は、テーブルにアクセスしません。サーバーインスタンス起動中状態の場合
だけテーブルにアクセスし、タイマーを削除します。
サーバーインスタンス起動時に、異常によりデータソースのアクセスに失敗した場合、サーバーログにISJEE_EJB5108警
告メッセージが出力され、タイマーサービスが無効になります。その場合、EJBタイマーサービスが取得できません。
テーブルに不整合が発生した場合、または不要になったタイマーが残っている場合、DBMSのツールを使用して不要な
タイマーの行を検索し削除してください。
- 49 -
以下に、テーブルに格納するデータについて説明します。
カラム名
データの値
データ内容の説明
TIMERID
文字列
サーバーインスタンス名を含む内部IDです。
OWNERID
文字列
サーバーインスタンス名です。
CREATIONTIMERA
W
ミリ秒 (注)
タイマーの生成日時です。
BLOB
バイナリ
タイマー生成時にcreateTimerメソッドの最終引数で渡す情報オブジェク
トです。
Entity Beanの場合は、プライマリキーだけです。
CONTAINERID
数値
TimedObjectを実装するBeanの内部IDです。
STATE
数値
タイマーの状態です。
・ 0 (起動状態)
・ 1 (キャンセル処理中)
PKHASHCODE
数値
内部コードです。
INTERVALDURATIO
N
ミリ秒
コールバック処理を繰り返し実行する場合の配信間隔です。
繰り返し実行しない場合、0となります。
INITIALEXPIRATION
RAW
ミリ秒 (注)
初回のコールバック処理実行の日時です。
LASTEXPIRATIONR
AW
ミリ秒 (注)
前回のコールバック処理実行の日時です。
まだ実行されていなかった場合、0となります。
注) 日時設定は、1970年1月1日 0:00:00からのミリ秒
タイマーサービスの設定について
配信間隔が短く指定されるとタイマー処理がサーバの負荷となるため、IJServerクラスタに対して配信間隔の最小値を指
定できます。タイマーの生成時に指定された配信間隔がIJServerクラスタに定義した最小配信間隔より小さい場合に、最
小配信間隔の値が使用されます。(注)
トランザクション内でロールバックされた場合、または例外が発生した場合、再配信間隔に指定された時間待機後にEJB
タイマーサービスはコールバック処理を再実行します。これを、EJBタイマーサービスの再配信と呼びます。
再配信に失敗した場合には、繰り返し再配信します。しかし、最大再配信回数分の再配信を実行してもコールバック処
理が成功しなかった場合、EJBタイマーサービスは再配信を終了して、該当のタイマーを削除します。
EJBタイマーサービスには、以下を指定できます。指定は、Interstage Java EE管理コンソール、またはasadminコマンドの
get/setサブコマンドを使用して、IJServerクラスタ単位に設定できます。詳細は、Interstage Java EE管理コンソールのヘル
プ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参照してください。
・ 最小配信間隔
・ 最大再配信回数
・ 再配信間隔
・ タイマーデータソース
注)EJBタイマーの実行予定時刻は指定された日時や配信間隔からコンテナ内部で算出して決定します。膨大な値を指
定された場合(例えばjava.lang.Long.MAX_VALUE値)、long値が桁あふれしてマイナス値となり、最小配信間隔より小
さくなるため、最小配信間隔の値が使用される場合があります。
タイマーの正確性と処理遅延時の動作
負荷が集中するとタイマーの開始時間がずれる場合があります。
タイマーの処理がすぐに完了せず、後続のタイマーの実行時間が来た場合、後続のタイマーは実行中のタイマーの完
了を待ちます。実行中のタイマーが完了後、実行予定時刻が超過しているタイマーは、ただちに実行されます。一定間
隔で実行するタイマーの場合、実行予定時刻を越えている処理分連続して実行されます。
- 50 -
IJServerクラスタを複数プロセス構成で運用する場合の注意事項
生成したタイマーは、そのサーバーインスタンスで動作し、そのサーバーインスタンス上でEnterprise Beanインスタンスの
タイマーコールバックメソッドを実行します。TimerServiceのgetTimersメソッドを実行すると、IJServerクラスタのすべての
サーバーインスタンスに存在するタイマーを取得できます。タイマーをキャンセルすると、データベースのテーブルから該
当のレコードが削除されるため、IJServerクラスタの他サーバーインスタンスで動作するタイマーもキャンセルできます。た
だし、タイマーの情報オブジェクトは、getInfoメソッドの初回実行時にテーブルから読み込まれるため、他サーバーインス
タンスのタイマーを削除すると、タイマーが動作しているサーバーインスタンス上でgetInfoメソッドを実行した際に失敗す
る可能性があります。その場合、getInfoメソッドがjavax.ejb.NoSuchObjectLocalException例外をスローします。
タイマーを生成する時、EJBタイマーサービスがタイマーの情報と合わせてサーバーインスタンス名をデータベースに格
納します。IJServerクラスタを再起動すると、IJServerクラスタの各サーバーインスタンスが同一のサーバーインスタンス名
ですでに登録されているタイマーの情報をデータベースから取得します。そのため、IJServerクラスタのサーバーインスタ
ンスを削減してIJServerクラスタを起動すると、登録されたタイマーが一部回復されない可能性があります。サーバーイン
スタンスを削減する場合、回復されないタイマーのレコードをデータベースから削除し、タイマーを再度登録してください。
2.9 EJB/JTAメソッドログ
EJB/JTAメソッドログ機能は以下の情報をサーバーログにロギングする機能です。本機能によりEJBアプリケーションメソッ
ドの呼び出しシーケンスが確認できます。本機能はEJBアプリケーションの開発時のデバッグに利用してください。
・ クライアントが呼び出したEJBアプリケーションのメソッドの情報
・ EJBコンテナが呼び出したメソッドの情報
・ javax.transaction.TransactionManagerのAPI情報
EJB/JTAメソッドログが出力する情報
1. クライアントが呼び出したEJBアプリケーションのメソッドの情報
クライアントアプリケーションから呼び出されたEJBアプリケーションの以下のメソッド情報を出力します。
- メソッド呼出し時の情報
- メソッド復帰時の情報
- メソッドで例外が発生したときの情報
出力される情報の詳細は「出力形式」を参照してください。
本情報が出力されるのは下記メソッド呼出し時です。
■クライアントが呼び出すEJBアプリケーションがEJB2.1以前のアプリケーションの場合
Session Bean
Entity Bean
Homeインタフェースメソッド
create
remove(handle)
remove(primarykey)
create
remove(handle)
remove(primarykey)
findByPrimaryKey
find<Enumeration型>
find<Collection型>
find<Object>
ejbHomeメソッド
Remoteインタフェースメソッド
ビジネスメソッド
remove
ビジネスメソッド
remove
LocalHomeインタフェースメソッド
create
remove
create
remove(primarykey)
findByPrimaryKey
find<Enumeration型>
- 51 -
Session Bean
Localインタフェースメソッド
ビジネスメソッド
remove
Entity Bean
ビジネスメソッド
remove
■クライアントが呼び出すEJBアプリケーションがEJB3.0のアプリケーションの場合
Session Bean
Remoteビジネスインタフェースメソッド
ビジネスメソッド
Localビジネスインタフェースメソッド
ビジネスメソッド
注意
- EJB3.0ではEntity Beanは非推奨です。
- EJB3.0のSession BeanではRemote Homeインターフェース、Local HomeインターフェースはEJBコンテナが自
動で作成します。EJB/JTAメソッドログ機能では以下のように”GenericEJBHome_”が付加されたインターフェー
ス名として出力されます。
com.sun.ejb.codegen.GenericEJBHome_Generat
ed
2. EJBコンテナが呼び出したメソッドの情報
EJBアプリケーションのメソッド呼出し時の以下の情報を出力します。
- メソッド呼出し時の情報
- メソッド復帰時の情報
- メソッドで例外が発生したときの情報
出力される情報の詳細は「出力形式」を参照してください。
3. javax.transaction.TransactionManagerのAPI情報
EJB コ ン テ ナ の ト ラ ン ザ ク シ ョ ン 制 御 や javax.transaction.UserTransaction の API で 呼 び 出 さ れ た 以 下 の
javax.transaction.TransactionManagerのAPI情報を出力します。
- トランザクションの開始(begin)
- トランザクションの完了(commit/rollback)
- トランザクションにロールバックを指定(setRollbackOnly)
- トランザクションの中断/再開(suspend/resume)
出力される情報の詳細は「出力形式」を参照してください。
注意
・ 本機能はアプリケーション開発時のデバッグに利用してください。
・ IJServerクラスタに配備されたすべてのJava EEアプリケーションのメソッドの呼び出し情報が、サーバーログへ出力さ
れます。
- 52 -
・ Java EEアプリケーションをスレッド多重で動作させた場合、メソッドの呼び出し情報がスレッドごとに交錯して出力さ
れますので、スレッド多重では使用しないでください。
出力形式
EJB/JTAメソッドログ機能でFINEを指定すると以下の情報が出力されます。
1. クライアントが呼び出したEJBアプリケーションのメソッドの情報の出力形式
- クライアントからのメソッド呼出し時
CLIENT ENTRY: アプリケーション名 EJB名 インターフェース名.メソッド名
- クライアントが呼び出したメソッド復帰時
CLIENT RETURN: アプリケーション名 EJB名 インターフェース名.メソッド名
- クライアントが呼び出したエラー復帰時
CLIENT THROW: アプリケーション名 EJB名 インターフェース名.メソッド名 例外クラス
名: 例外詳細文字列
以下に出力される項目と内容について示します。
出力項目
アプリケーション名
説明
EJBアプリケーション配備時に設定したアプリケーション名が
表示されます。デフォルト値はファイル拡張子を除いた値です。
EARモジュールで配備した場合、以下の形式で出力します。
アプリケーション名#モジュール名
EJB-JARモジュール単体で配備した場合、アプリケーション名
のみ出力します。
EJB名
EJB2.1以前のアプリケーションの場合、Deploymet Descriptor
ejb-jar.xmlのejb-nameタグの値が出力されます。
EJB3.0アプリケーションの場合、@Statefulまたは@Sessionの
nameの値が出力されます。
インターフェース名
クライアントアプリケーションが呼び出したインターフェース名
が出力されます。
メソッド名
メソッド名を出力します。
例外クラス名
メソッド呼出しで例外が発生した場合の例外クラス名を示します。
例外詳細文字列
メソッド呼出しで発生した例外に詳細文字列が含まれている
場合は、その詳細文字列を出力します。
出力例1(メソッド情報 正常系)
[25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0001: CLIENT ENTRY:
EJBapp SampleBean com.fujitsu.jccc.cbs.SampleRemoteIF.businessMethod:
ThreadID=15,ThreadName=httpWorkerThread-28090-5
[25/06/2010 08:49:27.546 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0002: CLIENT RETURN:
- 53 -
EJBapp SampleBean com.fujitsu.jccc.cbs.SampleRemoteIF.businessMethod:
ThreadID=15,ThreadName=httpWorkerThread-28090-5
出力例2(メソッド情報 異常系)
[25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0001: CLIENT ENTRY:
EJBapp SampleBean com.fujitsu.jccc.cbs.SampleRemoteIF.businessMethod:
ThreadID=15,ThreadName=httpWorkerThread-28090-5
[25/06/2010 08:49:27.546 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0003: CLIENT THROW:
EJBapp SampleBean com.fujitsu.jccc.cbs.SampleRemoteIF.businessMethod: java.rmi.RemoteException:
Attempt to invoke container with null invocation method:
ThreadID=15,ThreadName=httpWorkerThread-28090-5
2. EJBコンテナが呼び出したメソッドの情報の出力形式
- メソッド呼出し時
ENTRY: アプリケーション名 EJB名 クラス名.メソッド名
- メソッド復帰時
RETURN: アプリケーション名 EJB名 クラス名.メソッド名
- エラー復帰時
THROW: アプリケーション名 EJB名 クラス名.メソッド名 例外クラス名: 例外詳細文字列
以下に出力される項目と内容について示します。
出力項目
アプリケーション名
説明
EJBアプリケーション配備時に設定したアプリケーション名が
表示されます。デフォルト値はファイル拡張子を除いた値です。
EARモジュールで配備した場合、以下の形式で出力します。
アプリケーション名#モジュール名
EJB-JARモジュール単体で配備した場合、アプリケーション名
のみ出力します。
EJB名
EJB2.1以前のアプリケーションの場合、Deploymet Descriptor
ejb-jar.xmlのejb-nameタグの値です。
EJB3.0アプリケーションの場合、@Statefulまたは@Sessionの
nameの値です。
クラス名
EJBコンテナが呼び出したEJBアプリケーションのBeanクラス名
が出力されます。
メソッド名
メソッド名を出力します。
例外クラス名
メソッド呼出しで例外が発生した場合の例外クラス名を示します。
例外詳細文字列
メソッド呼出しで発生した例外に詳細文字列が含まれている
場合は、その詳細文字列を出力します。
- 54 -
出力例1(メソッド情報 正常系)
[25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0001: ENTRY: EJBapp
SampleBean com.fujitsu.jccc.cbs.SampleBean.businessMethod :
ThreadID=15,ThreadName=httpWorkerThread-28090-5
[25/06/2010 08:49:27.546 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0002: RETURN: EJBapp
SampleBean com.fujitsu.jccc.cbs.SampleBean.businessMethod:
ThreadID=15,ThreadName=httpWorkerThread-28090-5
出力例2(メソッド情報 異常系)
[25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0001: ENTRY: EJBapp
SampleBean com.fujitsu.jccc.cbs.SampleBean.businessMethod:
ThreadID=15,ThreadName=httpWorkerThread-28090-5
[25/06/2010 08:49:27.546 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0003: THROW: EJBapp
SampleBean com.fujitsu.jccc.cbs.SampleBean.businessMethod: java.rmi.RemoteException: Attempt to
invoke container with null invocation method: ThreadID=15,ThreadName=httpWorkerThread-28090-5
3. javax.transaction.TransactionManagerのAPI情報
- トランザクション制御開始時
ENTRY: javax.transaction.TransactionManager メソッド名
- トランザクション制御完了時
RETURN: javax.transaction.TransactionManager メソッド名
- エラー発生時
THROW: javax.transaction.TransactionManager メソッド名 例外クラス名: 例外詳細文字
列
以下に出力される項目と内容について示します。
出力項目
説明
メソッド名
メソッド名を示します。
例外クラス名
メソッド呼出しで例外が発生した場合の例外クラス
名を示します。
例外詳細文字列
メソッド呼出しで発生した例外に詳細文字列が含
まれている場合は、その詳細文字列を出力します。
出力例1(トランザクション制御情報 正常系)
[25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_JTA_METHODLOG0001: ENTRY:
javax.transaction.TransactionManager begin: ThreadID=15,ThreadName=httpWorkerThread-28090-5
- 55 -
[25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_JTA_METHODLOG0002: RETURN:
javax.transaction.TransactionManager begin: ThreadID=15,ThreadName=httpWorkerThread-28090-5
出力例2(トランザクション制御情報 異常系)
[25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_JTA_METHODLOG0001: ENTRY:
javax.transaction.TransactionManager begin:ThreadID=15,ThreadName=httpWorkerThread-28090-5
[25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_JTA_METHODLOG0003: THROW:
javax.transaction.TransactionManager begin: java.lang.Exception: Nested transaction not supported.:
ThreadID=15,ThreadName=httpWorkerThread-28090-5
注意
・ メソッドを呼び出したインスタンスがすでに削除されており、出力項目の情報を取得できない場合などは、取得できな
かった出力項目に"-"(ハイフン)を表示します。
・ EJBタイマーサービスを有効にした場合、以下のようにEJBタイマーサービスが呼び出すメソッドが「クライアントが呼
び出したEJBアプリケーションのメソッドの情報」または「EJBコンテナが呼び出したメソッドの情報」としてログに出力さ
れます。
[30/03/2011 13:19:03.140 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0001: CLIENT ENTRY:
__ejb_container_timer_app#ejb.jar TimerBean com.sun.ejb.containers.TimerLocalHome.create:
ThreadID=15,ThreadName=p: thread-pool-1; w: 6
[30/03/2011 13:19:03.140 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0001: ENTRY:
__ejb_container_timer_app#ejb.jar TimerBean com.sun.ejb.containers.TimerBean.ejbCreate:
ThreadID=15,ThreadName=p: thread-pool-1; w: 6
2.9.1 定義詳細
EJB/JTAメソッドログは以下のlog-serviceプロパティにより設定します。
プロパティ名
javax.enterprise.system.container.ejb.methodlog
値(太
字:省
略値)
説明
FINE
EJBコンテナやクライアントが呼び出したメ
ソッドをサーバーログに出力します。
INF
O
EJBコンテナやクライアントが呼び出したメ
ソッドをサーバーログに出力しません。
FINE
javax.transaction.UserTransactionのAPIの
呼出し情報をサーバーログに出力します。
INF
O
javax.transaction.UserTransactionのAPIの
呼出し情報をサーバーログに出力しません。
javax.enterprise.resource.jta.methodlog
上記プロパティをasadminコマンドのsetサブコマンドで指定してください。
設定方については「2.9.2 コマンド詳細」を参照してください。
この設定値の変更によるIJServerクラスタの再起動の必要はありません。
- 56 -
2.9.2 コマンド詳細
asadminコマンドのsetサブコマンドでEJB/JTAメソッドログを設定します。
プロパティ名
javax.enterprise.system.container.ejb.methodlog
または、
javax.enterprise.resource.jta.methodlog
入力値
INFO(デフォルト)
FINE
定義例
> asadmin set IJServer001.log-service.module-log-levels.property.javax\.enterprise\.system\.container\.ejb
\.methodlog=FINE
> asadmin set IJServer001.log-service.module-log-levels.property.javax\.enterprise\.resource\.jta\.methodlog=FINE
> asadmin set IJServer001.log-service.module-log-levels.propertyjavax\\.enterprise\\.system\\.container\\.ejb\
\.methodlog=FINE
> asadmin set IJServer001.log-service.module-log-levels.propertyjavax\\.enterprise\\.resource\\.jta\\.methodlog=FINE
注意
・ setコマンドでプロパティを設定後、getサブコマンドでEJB/JTAメソッドログの設定値が確認できます。
・ getやlistサブコマンドでワイルドカード(*)で指定して、EJB/JTAメソッドログの設定値は確認できません。EJB/JTAメ
ソッドログの設定値を確認する場合は、getコマンドで定義項目とプロパティを全て指定してください。
2.10 JPAの提供機能
Java Persistence API(JPA)は、EJB 3.0規約から派生したJavaオブジェクトの永続性と、リレーショナルデータベースとのO/
Rマッピングを行うJavaのAPIです。
Java EEアプリケーションで業務データをリレーショナルデータベースに永続する場合、Java Persistence APIの採用を推
奨します。業務データのオブジェクトは、Java Persistence EntityまたはEntityと呼びます。Entityは、Enterprise JavaBeanま
たはEntity Beanの種類の1つではありません。このオブジェクトは、普通のJavaオブジェクト(POJO)であり、特定のインタ
フェースを実装する必要がありません。Entityとテーブルのマッピング情報は、deployment descriptor (orm.xml)またはタ
グに相当するアノテーションを使用してEntityのソースで定義します。適切な省略値もあります。
JPAにおける定義は、deployment descriptor (orm.xml、persistence.xml)または相当するアノテーションと永続性ユニット
プロパティで指定します。両方に定義を指定した場合、定義ファイルの定義を優先します。
JPAの実装は、永続性プロバイダと呼びます。本製品では、Interstage永続性プロバイダを提供しています。
本節では、JPAの実行環境とデータベース連携について説明します。
・ JPAの実行環境
- 57 -
・ 永続性プロバイダの設定方法
・ サポートデータベースと設定方法
また、Interstage永続性プロバイダを使用する場合に利用できる以下の機能について説明します。
・ Entityで定義するJavaのデータ型とDBMSのSQLデータ型との対応
・ プライマリキー値の自動生成機能
・ データベーステーブル自動生成機能
・ 行のロック機能
・ SQLログ機能
なお、JPAのチューニングについては、以下に記載しています。
・ 「チューニングガイド」-「JPAのチューニング」
注意
JPAをInterstage上で使用する際の注意事項を、以下に記載しています。
・ 「使用上の注意」-「JPA機能における注意事項」
2.10.1 JPAの実行環境
以下にJPAを使用できる実行環境について説明します。JPAの実行環境は、Java PersistenceのAPIを実行しているコンテ
ナのことです。JPAを呼び出すアプリケーション(Servlet、EJBなど)と同コンテナ上で動作します。
実行環境
コンテナ管理のエンティ アプリケーション管理のエンティティマネージャ
ティマネージャ
JTAトランザクション
JTAトランザクション
リソース・ローカルトラン
ザクション
EJBコンテナ
○
○
○
Webコンテナ
○
○
○
アプリケーションクライ
アントコンテナ
-
-
○
Java SE(スタンドアロン
アプリケーション)
-
-
△ (注)
アプレットコンテナ
-
-
-
○:サポート -:未サポート △:開発だけに使用可能
注) アプリケーション開発時のテストのためJava SEスタンドアロンアプリケーションでもアプリケーション管理のエンティティ
マネージャは対応していますが、動作は保証外です。
2.10.2 永続性プロバイダの設定方法
本製品では、以下の永続性プロバイダを使用できます。
・ Interstage永続性プロバイダ
・ その他のJPA規約に準拠する永続性プロバイダ
使用する永続性プロバイダは、deployment descriptor (persistence.xml)に定義します。
- 58 -
Interstage永続性プロバイダ
Interstage永続性プロバイダを使用する場合、deployment descriptor (persistence.xml)の<provider>タグを記述しないでく
だ さ い 。 ま た 、 <provider> タ グ に 相 当 す る 永 続 性 ユ ニ ッ ト プ ロ パ テ ィ を javax.persistence.Persistence の
createEntityManagerFactory(String, Map)メソッドに指定しないでください。
Java SE環境で使用する場合、以下のモジュールをクラスパスに追加してください。
C:\Interstage\F3FMisjee\lib\toplink-essentials.jar
/opt/FJSVisjee/lib/toplink-essentials.jar
Java EE環境(Web、EJBまたはアプリケーションクライアントコンテナ)で使用する場合、上記モジュールは自動的にクラス
パスに設定されるので追加する必要はありません。
なお、Java SEスタンドアロンアプリケーションにおいて、1:1または多:1のrelationshipでFetchType.LAZYによりデータを
データベースからロードする場合、javaコマンドの-javaagentオプションに上記モジュールのパスを指定してください。
例
-javaagentの設定例
> java -javaagent:C:\Interstage\F3FMisjee\lib\toplink-essentials.jar com.example.MyApp
注意
Interstage永続性プロバイダの注意事項
JPAが返却する例外には、例外のcauseとして、oracle.toplink.essentialsで始まる例外をスローする場合があります。
oracle.toplink.essentialsで始まる例外クラスは、クラスパスに設定する上記モジュールに含まれています。このため、Java
SEスタンドアロンアプリケーションからJPAを使用するEJBアプリケーションを呼び出す場合、JPAで発生した例外をJava
SEスタンドアロンアプリケーションに返却する場合でも上記のクラスパスの設定が必要です。
クラスパスを設定しない場合、返却された例外をIIOP通信層で復元できずにIOP00810257のエラーが発生する場合があ
ります。
その他の永続性プロバイダ
その他の永続性プロバイダを使用する場合、deployment descriptor (persistence.xml)の<provider>タグに永続性プロバ
イダのプロバイダクラス名を定義します。または、javax.persistence.PersistenceのcreateEntityManagerFactory(String, Map)
メソッドにプロバイダクラス名を指定します。
その他の永続性プロバイダの利用については、動作を保証できません。問題が発生した場合は、永続性プロバイダ提供
元に問い合わせてください。
永続性プロバイダのクラスは、利用するスコープによりアプリケーションのモジュール、またはクラスローダのクラスパスに
追加してください。クラスローダのクラスパスの設定方法については、「2.22 クラスローダ」を参照してください。Java EEア
プリケーションクライアントのクラスパス設定方法については、「4.10.1 Java EEアプリケーションクライアントの環境設定」を
参照してください。
永続性プロバイダのプロバイダクラス名とクラスパスに必要なクラスまたはJarモジュールについては、その永続性プロバ
イダのマニュアルを参照してください。
例
その他の永続性プロバイダの定義例
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
- 59 -
version="1.0">
<persistence-unit name="com.company.my.pu">
<provider>com.example.jpa.PersistenceProviderImpl</provider>
<jta-data-source>jdbc/myDatasource</jta-data-source>
</persistence-unit>
</persistence>
2.10.3 サポートデータベースと設定方法
Interstage永続性プロバイダがサポートしているデータベースについては、「システム設計ガイド」の「ソフトウェア条件」-
「アプリケーション実行時に必要なソフトウェア」-「データベース関連(Java EE)」を参照してください。
その他の永続性プロバイダを使用する場合にも、本製品がサポートしているデータベースを使用してください。
データベースの設定方法は、実行環境により異なります。
Java EE環境でのデータベース設定
EJB、WebまたはアプリケーションクライアントコンテナでJPAを使用する場合、以下を行ってください。
データソースを用意します。データソースの作成方法などについては、「4.15 データベースの環境設定」を参照してください。
用意したデータソースのデータソース名をdeployment descriptor (persistence.xml)の<jta-data-source>または<non-jta-datasource>に定義します。
本製品では、以下の順番でデータソース名が定義箇所から取得されます。
・ JTAトランザクションを使用する操作の場合
1. <jta-data-source>
・ 非JTAトランザクション(リソースローカルトランザクション)を使用する操作の場合
1. <non-jta-data-source>
2. <jta-data-source>
EJBまたはWebコンテナでInterstage永続性プロバイダを使用しデータソース名を定義していない場合、デフォルトのデー
タソース名("jdbc/__default")が使用されます。
JDBC接続プールから取得される接続が必要な場合、自動的にトランザクションコンテキストに登録されます。接続プー
ルの非トランザクション接続設定が無視されます。
例
JTAトランザクションを使用する場合のデータソース定義例
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="com.company.my.pu" transaction-type="JTA">
<jta-data-source>jdbc/myDatasource</jta-data-source>
</persistence-unit>
</persistence>
Java SE環境でのデータベース設定
アプリケーション開発やテスト時に、Java SE環境でJavaスタンドアロンアプリケーションとしてInterstage永続性プロバイダ
を使用できます。その場合、以下のプロパティでデータベースの定義をdeployment descriptor (persistence.xml)、または
エンティティマネージャファクトリの取得時にjavax.persistence.PersistenceのcreateEntityManagerFactory(String, Map)メソッ
ドに指定します。両方に指定した場合、後者に定義した設定が優先されます。
- 60 -
永続性ユニットプロパティ
名
説明
toplink.jdbc.driver
JDBCドライバクラス名(java.sql.Driverの実装クラス)です。
toplink.jdbc.url
データベースへのアクセスでドライバが想定するJDBC URLです。
toplink.jdbc.user
データベースへの認証アクセスで使用されるユーザ名です。
toplink.jdbc.password
選択しているデータベースへのアクセスに使用されるパスワードです。
パスワードエイリアスは使用できません。
JDBCドライバの使用に必要なドライバクラス名、JDBC URL、ライブラリやクラスパス設定については、JDBCドライバのマ
ニュアルを参照してください。
例
Java SEスタンドアロンアプリケーションのデータベース定義例
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="com.company.my.pu"
transaction-type="RESOURCE_LOCAL">
<class>com.example.entity.Employee</class>
<class>com.example.entity.Department</class>
<properties>
<property name="toplink.jdbc.driver"
value="oracle.jdbc.OracleDriver"/>
<property name="toplink.jdbc.url"
value="jdbc:oracle:thin:@dbhost:1521:mysid"/>
<property name="toplink.jdbc.user"
value="user1"/>
<property name="toplink.jdbc.password"
value="pwd1"/>
</properties>
</persistence-unit>
</persistence>
2.10.4 Entityで定義するJavaのデータ型とDBMSのSQLデータ型との対応
Interstage永続性プロバイダは以下の処理を実行する場合、Entityの永続化フィールドのデータ型に対応するJDBCの
API(setメソッド、getメソッド)を実行します。
・ クエリメソッドの実行結果から値を取得する場合
(ResultSetのgetメソッドを実行する)
・ 永続化フィールドとクエリメソッドのパラメタをSQLクエリの条件に指定する場合
(PrepareStatementのsetメソッドを実行する)
・ Entityの作成と更新により永続化フィールドの値をSQL文に指定する場合
(PrepareStatementのsetメソッドを実行する)
Javaのデータ型とDBMSのSQLデータ型の組み合わせについては、JDBCドライバの仕様に依存するため、使用する
JDBCドライバのマニュアルを参照してください。
Javaのデータ型とInterstage永続性プロバイダが使用するJDBCドライバのAPIとの対応について、以下に説明します。
- 61 -
注意
SQLデータ型がCHAR型の場合の注意事項
ク エ リ メ ソ ッ ド の 実 行 結 果 に 、 CHAR 型 の デ ー タ (ResultSetMetaData の getColumnType メ ソ ッ ド の 返 却 値 が
java.sql.Types.CHARと一致するカラムから取得した値)が含まれる場合、文字列末尾の「\u0020」以下のコード値を持つ
連続した文字がすべて空白とみなされ取り除かれた後、Entityへセットされます。
標準データ型
以下のデータ型の場合は、JDBCのAPI(setメソッド、getメソッド)が使用されます。
・ boolean、java.lang.Boolean
・ byte、java.lang.Byte
・ short、java.lang.Short
・ int、java.lang.Integer
・ long、java.lang.Long
・ float、java.lang.Float
・ double、java.lang.Double
・ java.lang.String
・ java.math.BigDecimal
・ java.sql.Date
・ java.sql.Time
・ java.sql.Timestamp
・ byte[]
その他のデータ型
以下のデータ型は標準データ型に変換され、JDBCのAPI(setメソッド、getメソッド)が使用されます。
データ型
変換する標準データ型
char、java.lang.Character
java.lang.String
char[]、java.lang.Character[]
java.lang.String
java.math.BigInteger
java.math.BigDecimal
java.util.Date
定義したTemporalType
java.util.Calendar
定義したTemporalType
enum(ordinal)
java.lang.Integer
enum(String)
java.lang.String
その他
byte[]
注意
Interstage永続性プロバイダは、Entityに格納されているデータに変更がない場合はデータベースにUPDATE文を発行
しません。ユーザアプリケーションからEntityの永続化フィールドに対して変更があったかどうかを確認するために、Entity
の検索またはマージ時にデータのコピーを作成し、フラッシュまたはトランザクションのコミット時にデータを比較します。
byte[]に変換される「その他」のデータ型の場合は、直列化処理後のbyte配列を比較します。そのため、直列化と直列化
- 62 -
復元処理によりbyte配列が変わるデータ型(java.util.Hashtable、java.util.Propertiesなど)を使用すると、検索だけ行ったト
ランザクションでもUPDATE文が発行される場合があります。
その他の永続性プロバイダを使用する場合は、その永続性プロバイダのマニュアルを参照してください。
2.10.5 プライマリキー値の自動生成機能
プライマリキーをInterstage永続性プロバイダで管理する機能です。プライマリキーが未設定の新規Entityに対し永続化
操作(EntityManagerのpersistメソッド)を実行すると、永続性プロバイダがDBMSと連携し、自動的にEntityへプライマリキー
を割り当てます。本機能を使用する場合は、必ず同時にデータベーステーブル自動生成機能も使用してください。
Interstage永続性プロバイダは、JPA規約で規定された以下の生成パターンを提供しますが、サポートされている生成パ
ターンはDBMSに依存します。
生成パターン
プライマリキー値の生成方針
AUTO
永続性プロバイダが適切な生成方針を選択します。
TABLE
プライマリキー値生成用のテーブルを利用します。
SEQUENCE
データベースのシーケンス機能を利用します。
IDENTITY
データベースのIDENTITYカラムを利用します。
選択される方針と定義の省略値について以下に説明します。
以下は、アノテーションで定義する場合について記述しています。deployment descriptor (orm.xml)に指定する場合、ア
ノテーション定義をそのアノテーションと相当するdeployment descriptor (orm.xml)のタグの定義として読んでください。
・ @GeneratedValueを定義すると属性の省略値は、以下のとおりになります。
strategyの
定義値
使用する
DBMS
選択される方針
AUTO
Symfowar
e
Oracle
PowerGre
s Plus
generatorの値を省略した場合、Generatorの名前はSEQ_GENとなり
ます。このGeneratorが定義されていない場合、属性の省略値を使
用するTableGeneratorが使用されます。
SQL
Server
JavaDB
generatorの値を省略した場合、Generatorの名前はSEQ_GENとなり
ます。このGeneratorがSequenceGeneratorの場合、IDENTITYカラ
ムが利用されます。このGeneratorが定義されていない場合、属性の
省略値を使用するTableGeneratorが使用されます。
TABLE
すべて
generatorを省略した場合、TableGeneratorが使用されます。
TableGeneratorの名前はSEQ_GEN_TABLEとなります。この
Generatorを定義していない場合、属性の省略値を使用する
TableGeneratorが使用されます。
ただし、generatorにSequenceGeneratorの名前を指定した場合、
SequenceGeneratorが使用されます。
SEQUEN
CE
または
IDENTIT
Y
Symfowar
e
Oracle
PowerGre
s Plus
SequenceGeneratorが使用されます。
generatorを省略した場合、名前がSEQ_GEN_SEQUENCEとなり、
他の属性に省略値が使用されます。
ただし、generatorにTableGeneratorの名前を指定した場合、
TableGeneratorが使用されます。
SQL
Server
JavaDB
IDENTITYカラムが使用されます。
ただし、generatorにTableGeneratorの名前を指定した場合、
TableGeneratorが使用されます。
・ @SequenceGeneratorのsequenceName属性の省略値は@SequenceGeneratorのnameと同じ値です。
- 63 -
・ @TableGeneratorの属性の省略値は、以下のとおりです。
属性名
省略値
table
SEQUENCE
pkColumnName
SEQ_NAME
pkColumnValue
@TableGeneratorのnameと同じ値
valueColumnName
SEQ_COUNT
注意
プライマリキー値の自動生成機能に関する注意事項
・ TableGeneratorの名前に、省略値の「SEQ_GEN_TABLE」を指定することはできません。
・ SequenceGeneratorの名前に、省略値の「SEQ_GEN_SEQUENCE」を指定することはできません。
・ Generatorの名前は、Generatorの種類を問わず一意の値を指定してください。
・ その他のDBMS固有の注意事項は、「使用上の注意」-「JPA機能における注意事項」を参照してください。
・ テーブル自動生成機能により作成されたプライマリキー値用のテーブルは、複数のアプリケーションから参照される
可能性があるため、配備解除時に破棄されません。必要に応じて手動で削除してください。
2.10.6 データベーステーブル自動生成機能
開発時に、開発したEntityの動作を確認するために、以下のテーブル自動生成機能を提供しています。
・ テーブルの自動生成機能
モジュールの配備時にEntityに対応するテーブルを生成します。
・ テーブルの自動再生成機能
モジュールの再配備時にEntityに対応するテーブルを再生成します。
・ テーブルの自動削除機能
モジュールの配備解除時にEntityに対応するテーブルを削除します。
・ テーブル生成と削除のDDL(データ定義命令)をファイルに書き込む機能
モジュールの配備時にテーブル生成と削除のDDLをファイルに書き込みます。このファイルに書き込まれたDDLを
基にDBMSのツールによりユーザがテーブルを作成できます。
テーブル生成時と削除時にJDBCドライバ経由でテーブル作成命令(CREATE TABLE)、シーケンス作成命令(CREATE
SEQUENCE、INSERT INTO SEQUENCE)や外部キー制約追加命令(ALTER TABLE ADD CONSTRAINT)、または
制約削除命令(ALTER TABLE DROP CONSTRAINT)、シーケンス削除命令(DROP SEQUENCE)やテーブル削除命
令(DROP TABLE)をデータベースに発行します。データベースによるほかの準備がある場合、データベースとJDBCドラ
イバのマニュアルを参照して実施してください。
本機能を使用するには、Interstage Java EE DASサービスにJDBCドライバの環境設定を行い、deployment descriptor
(persistence.xml)のプロパティ定義またはasadminコマンドのdeployとundeployサブコマンドのテーブル生成オプションを
使用します。
JDBCドライバの環境設定方法については「4.15.1 JDBCドライバの環境設定」を参照し、asadminコマンドのdeployサブコ
マンドとundeployサブコマンドのオプションについては、「リファレンスマニュアル(コマンド編)」-「asadminコマンド」-「サ
ブコマンド-カテゴリ: アプリケーション配備」を参照してください。
deployment descriptor (persistence.xml)に指定するプロパティを以下に示します。
- 64 -
永続性ユニットプロパ 値(太字:省略値)
ティ名
toplink.ddlgeneration
toplink.ddlgeneration.outputmode
説明
create-tables
テーブル生成のDDLをデータベースへ発行します。
テーブルがすでに存在する場合、警告を出力し既存
テーブルを変更せずに配備を継続します。
drop-and-createtables
再配備の場合は、テーブル削除のDDLをデータベー
スへ発行してからテーブル生成のDDLを発行します。
新規配備の場合は、テーブル生成のDDLだけをデー
タベースへ発行します。
none
toplink.ddl-generation.output-modeを定義してもテーブ
ルとDDLを生成しません。
sql-script
テーブル生成と削除のDDLをファイルに書き込みます。
database
テーブル生成と削除のDDLをファイルに書き込んで
データベースへ発行します。
both(注1)
none
toplink.ddl-generationを定義してもテーブルとDDLを生
成しません。
toplink.applicationlocation
<パス>
DDLファイルの格納先です。発行されるDDLを確認し
たい場合は指定してください。 (注2)
toplink.create-ddljdbc-file-name
<ファイル名>
テーブル生成のDDLのファイル名です。 (注3)
toplink.drop-ddljdbc-file-name
<ファイル名>
テーブル削除のDDLのファイル名です。 (注4)
値に固定値を指定するプロパティの場合、値は大文字と小文字を区別しません。
注1)
toplink.ddl-generation.output-modeはsql-script、database、both、none以外の値を設定する場合、設定値が無視されて、
デフォルトのbothになります。
注2)
省略した場合は、以下のとおりになります。SolarisまたはLinuxの場合、「¥」を「/」に読み替えてください。
配備モジュール内の
persistence.xmlの格納場所
DDLファイルのデフォルトの格納先
EJB-JARまたはWARファイル内
[Java EE共通ディレクトリ]\domains\interstage\generated\ejb\j2eemodules\[アプリケーション名]
EARに含むEJB-JARまたはWAR
ファイル内
[Java EE共通ディレクトリ]\domains\interstage\generated\ejb\j2ee-apps
\[アプリケーション名]
EARに含むライブラリなど、その他
[Java EE共通ディレクトリ]\domains\interstage\generated\ejb\j2ee-apps
\[アプリケーション名]
注3)
省略した場合は、以下のとおりになります。 (注5)
- [モジュール名] + "_" + [永続性ユニット名] + "_createDDL.jdbc"
注4)
省略した場合は、以下のとおりになります。 (注5)
- [モジュール名] + "_" + [永続性ユニット名] + "_dropDDL.jdbc"
- 65 -
注5)
モジュール名は、以下のようにアプリケーションの配備時にdeployment descriptor (persistence.xml)が格納される場所
によります。永続性ユニット名は、deployment descriptor (persistence.xml)に指定したpersistence-unitの名前を指して
います。
配備モジュール内のpersistence.xmlの格納場
所
DDLファイル名に使用するモジュール名
EJB-JARまたはWARファイル内
EJB-JARまたはWARファイル名(拡張子を除
く)
EARに含むEJB-JARまたはWARファイル内
EARファイル名+[_]+EJB-JARまたはWAR
ファイル名(両方拡張子を除く)
EARに含むライブラリなど、その他
「default」
例
テーブル自動生成定義例
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="com.company.my.pu">
<jta-data-source>jdbc/myDatasource</jta-data-source>
<properties>
<property name="toplink.ddl-generation"
value="drop-and-create-tables"/>
<property name="toplink.ddl-generation.output-mode"
value="sql-script"/>
<property name="toplink.application-location"
value="/tmp/ddl"/>
<property name="toplink.create-ddl-jdbc-file-name"
value="myds-create-ddl.sql"/>
<property name="toplink.drop-ddl-jdbc-file-name"
value="myds-drop-ddl.sql"/>
</properties>
</persistence-unit>
</persistence>
注意
データベーステーブル自動生成機能に関する注意事項
・ テーブルの自動生成先は、デフォルトのデータベーススペース(Oracleでは表領域/SQL Serverではプライマリファイ
ルグループ)上となります。Symfowareの場合はデフォルトのデータベーススペースが存在しないため、データベース
名と同名のデータベーススペース(手動で作成が必要)上に作成されます。
・ 自動生成したテーブル、またはテーブルのDDLは開発環境用です。運用環境では、データベース管理者が用意し
たテーブルを使用してください。
・ Symfowareを使用する場合、自動生成されたプライマリキーのカラムに対してインデックスが自動的に作成されます。
また、その他の一意性制約キーのカラムに対してもインデックスが自動生成されます。
・ テーブル生成とテーブル削除のDDLファイル名として同じファイル名を指定しないでください。
・ 配備解除時のテーブル削除には、テーブル削除のDDLファイルに格納されているDDLが使用されるため、このファ
イルを削除すると配備解除時にテーブル削除が失敗しエラーが出力されます。
- 66 -
・ テーブル自動生成機能で作成されるテーブルのスキーマは接続先のデータベースで自動的に設定されます。設定
されるスキーマについては各データベースのマニュアルを参照してください。
ただし、SymfowareではJDBCドライバの環境設定でスキーマ名を指定することで、テーブル自動生成機能で作成さ
れるテーブルのスキーマを設定することが可能です。詳細は「4.15.6 Symfoware JDBCドライバ(Type2)」を参照して
ください。
・ データベーステーブル自動生成機能を使用して配備時にSymfowareのテーブルを生成する場合、Interstage Java
EE DASサービス上のJDBC接続プールの接続を利用してテーブルを生成します。しかし、Symfowareの仕様により
セッション中にアクセスした資源はセッションが終了するまで削除できません。このため、テーブルを生成した接続が
接続プールに存在する状態で配備解除によってテーブルを自動的に削除するとき、Symfowareからエラーメッセー
ジが出力されテーブルの削除に失敗する場合があります。この場合には、手動でテーブルを削除してください。セッ
ション中の資源の削除についてはSymfowareのマニュアルを参照してください。
・ Java SE環境、またはアプリケーションクライアントコンテナでアプリケーション管理のEntity Managerを取得する場合、
デ ー タ ベ ー ス テ ー ブ ル 自 動 生 成 機 能 は 、 配 備 時 で は な く Entity Manager 生 成 時 に 実 行 さ れ ま す 。 こ の 際、
toplink.application-locationプロパティを省略した場合のDDLの格納先はJVMのカレントディレクトリになります。また、
toplink.create-ddl-jdbc-file-name プロパティ、またはtoplink.drop-ddl-jdbc-file-name プロパティを省略した場合のDDL
ファイルのファイル名は以下になります。
- createDDL.jdbc
- dropDDL.jdbc
Entityの永続化フィールドに対応するDBMSカラムのSQLデータ型は、以下の例のように定義できます。
@Column(columnDefinition="VARCHAR(128) NOT NULL")
public String name ;
Entityの永続化フィールドに対応するDBMSカラムのSQLデータ型を定義しない場合は、DBMSによる以下のデフォルト
が使用されます。
Javaのデータ型
DBMSのSQLデータ型
Symfoware
Oracle
SQL Server
PowerGres Plus
Java DB
boolean
java.lang.Boolean
SMALLINT
default 0
NUMBER(1)
default 0
BIT
default 0
BOOLEAN
SMALLINT
DEFAULT 0
byte
java.lang.Byte
SMALLINT
NUMBER(3)
SMALLINT
SMALLINT
SMALLINT
char
java.lang.Character
CHARACTER(
1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
short
java.lang.Short
SMALLINT
NUMBER(5)
SMALLINT
SMALLINT
SMALLINT
int
java.lang.Integer
INTEGER
NUMBER(10)
INTEGER
INTEGER
INTEGER
long
java.lang.Long
NUMERIC(18)
NUMBER(19)
NUMERIC(19)
BIGINT
BIGINT
float
java.lang.Float
NUMERIC(18,
4)
NUMBER(19,4
)
FLOAT(16)
FLOAT
FLOAT
double
java.lang.Double
NUMERIC(18,
4)
NUMBER(19,4
)
FLOAT(32)
FLOAT
FLOAT
java.lang.String
VARCHAR(25
5)
VARCHAR2(2
55)
VARCHAR(25
5)
VARCHAR(25
5)
VARCHAR(25
5)
java.math.BigDecimal
DECIMAL(18)
NUMBER(38)
NUMERIC(28)
DECIMAL(38)
DECIMAL
- 67 -
Javaのデータ型
DBMSのSQLデータ型
Symfoware
Oracle
SQL Server
PowerGres Plus
Java DB
java.math.BigInteger
NUMERIC(18)
NUMBER(38)
NUMERIC(28)
BIGINT
BIGINT
java.sql.Date
DATE
DATE
DATETIME
DATE
DATE
java.sql.Time
TIME
TIMESTAMP
DATETIME
TIME
TIME
java.sql.Timestamp
TIMESTAMP
TIMESTAMP
DATETIME
TIMESTAMP
TIMESTAMP
java.util.Date
指定したTemporalTypeのマッピングを参照
java.util.Calendar
byte[]
BLOB(1024)
LONG RAW
IMAGE
BYTEA
BLOB(64000)
java.lang.Byte[]
BLOB(1024)
LONG RAW
IMAGE
BYTEA
BLOB(64000)
char[]
VARCHAR(25
5)
LONG
TEXT
TEXT
CLOB(255)
java.lang.Character[]
VARCHAR(25
5)
LONG
TEXT
TEXT
CLOB(255)
enum(ordinal)
java.lang.Integerのマッピングを参照
enum(String)
java.lang.Stringのマッピングを参照
Serializableオブジェクト
BLOB(1024)
LONG RAW
IMAGE
BYTEA
BLOB(64000)
(LOB)byte[]
BLOB(1024)
BLOB
IMAGE
BYTEA
BLOB(64000)
(LOB)java.lang.Byte[]
BLOB(1024)
BLOB
IMAGE
BYTEA
BLOB(64000)
(LOB)Serializableオブ
ジェクト
BLOB(1024)
BLOB
IMAGE
BYTEA
BLOB(64000)
(LOB)char[]
VARCHAR(32
000)
CLOB
TEXT
TEXT
CLOB(64000)
(LOB)java.lang.Charac
ter[]
VARCHAR(32
000)
CLOB
TEXT
TEXT
CLOB(64000)
(LOB)java.lang.String
VARCHAR(32
000)
CLOB
TEXT
TEXT
CLOB(64000)
JPAのデータベーステーブル自動生成機能でSymfowareを使用する場合、プライマリキーもしくは一意性制約キーのカ
ラムに対してインデックスが自動生成されます。インデックス名は以下となります。
IX_テーブル名_識別子
テーブル名にはJPAが対象とするテーブル名が指定され、識別子にはカラム名から生成した識別子が指定されます。ま
た、Symfowareのテーブル名には 空白、「"」、「`」 を含めることはできません。含めた場合、テーブル/インデックスの自動
生成に失敗します。
このルールで生成されたインデックス名が36文字を超過する場合には、36文字を超えないようにインデックス名が変換("IX_"
を付与しないなど)されます。Symfowareのインデックス名は通常は8文字以内ですが、システム用の動作環境ファイルで
DEFAULT_DSI_NAME=CODEを指定することで拡張できます。インデックス名の制限についてはSymfowareのマニュ
アルを参照してください。
使用されたインデックス名を確認する場合には、データベーステーブル自動生成機能により作成されるDDLファイルを
参照してください。
- 68 -
2.10.7 行のロック機能
複数トランザクションからDBMSの同一行に対して同時に検索処理から更新処理を実行すると、トランザクション内でデー
タの一貫性が保たれずにデッドロックなどのエラーが発生する場合があります。
この対策として、Optimistic Locking機能とPessimistic Locking機能が選択できます。
アイソレーションレベルにREAD_COMMITTEDを使用している場合、JPAのOptimistic Locking機能を指定することを
推奨します。Optimistic Locking機能は、テーブルの更新時に他トランザクションでレコードに更新がなかったか確認し、
更新された場合にはエラーを返却するため、データの一貫性を保ちます。本機能は、行をロックする期間が短いため、
同一レコードの更新頻度が少ない高負荷な環境で有効です。
アイソレーションレベルにREAD_COMMITTEDより高いレベル(REPEATABLE_READ、SERIALIZABLE)を使用する
場合、Pessimistic Locking機能を指定することを推奨します。Pessimistic Locking機能はデッドロックエラーを防ぐことが
できる場合があるため、同一のレコードの更新頻度が高い場合に効果的です。
Interstage永続性プロバイダが公開しているPessimistic Locking機能は、レコードの検索時にSELECT FOR UPDATE命
令を発行しています。SELECT FOR UPDATE文の発行によりDBMSは更新対象の行に排他ロックをかけ、トランザクショ
ンが終わるまで他トランザクションによる更新をブロックします。
Optimistic Locking機能の定義方法
Optimistic Locking機能の定義方法については、JPAの規約を参照してください。
Pessimistic Locking機能の定義方法
Pessimistic Locking機能はJPQLクエリのヒントに定義します。
クエリヒント名
toplink.pessimisticlock
値(太字:省略値)
説明
Lock
クエリの実行にSELECT FOR UPDATE命令を使用し
ます。
LockNoWait
クエリの実行にSELECT FOR UPDATE NOWAIT命令
を使用します。
NoLock
クエリの実行にSELECTを使用します。
値は、大文字と小文字を区別しません。
SELECT FOR UPDATE NOWAIT命令では、排他ロックをかけようとしている行が、他トランザクションによってすでにロッ
クされている場合、ただちにエラーを返却します。そのため、アプリケーションは排他ロックの解放までの不確定な期間、
アプリケーションが停止することがなくなります。
クエリヒントは、deployment descriptor (orm.xml)のquery-hintタグ、アノテーション(@QueryHint)、またはQuery.setHintメ
ソッドで指定します。
以下にアノテーションでPessimistic Locking機能を指定する方法を示します。
@NamedQuery(name="Order.findBigOrders",
query="SELECT o FROM Order o WHERE o.quantity > :minimum",
hints={@QueryHint(name="toplink.pessimistic-lock", value="Lock")})
以下にQuery.setHintメソッドを使用し、Pessimistic Locking機能を指定する方法を示します。上記の例との違いは、この
指定方法ではこの実行にしか本機能が利用されませんが、上記の指定方法ではOrder.findBigOrdersクエリを使用して
いるすべての箇所で本機能が利用されることです。
Collection bigOrders = em.createNamedQuery("Order.findBigOrders")
.setParameter("minimum", "1000")
.setHint("toplink.pessimistic-lock", "Lock")
.getResultList();
- 69 -
注意
行のロック機能に関する注意事項
・ SELECT FOR UPDATE (NOWAIT)命令は、DBMSの機能です。使用時の注意事項については、DBMSのマニュ
アルを参照してください。
・ 行のロック機能は、JPQLクエリの機能です。findメソッド、リレーションシップに対するgetアクセッサメソッドなどでは使
用できません。
・ 行のロック機能を使用してもDBMSの仕様によりデッドロックが発生する場合があります。この場合には、デッドロック
が発生した処理の再実行を試みてください。
・ データベースが提供するその他のロック機能を使用する場合、NamedQueryアノテーションで定義したJava Persistence
Query Language(JPQL)クエリをネイティブSQLのクエリに上書きし、データベースのロック機能を使用するSQLクエリ
を定義することを検討してください。
2.10.8 SQLログ機能
JPAの機能を使用しているアプリケーションの調査やチューニングでInterstage永続性プロバイダが発行しているSQL文
を確認するため、SQLログ機能を使用できます。SQLログを使用すると、Interstage永続性プロバイダはSQL文を発行す
る時に、またはSQL文の発行時に例外が発生するときに、SQL文と動的パラメタをログに出力します。
SQLログは、以下の永続性ユニットプロパティにより設定します。
永続性ユニットプロパ 値(太字:省略値)
ティ名
toplink.logging.leve
l.sql
説明
FINE
SQL文をサーバーログに出力します。
CONFIG
例外が発生する場合だけSQL文をサーバーログに出
力します。
INFO
SQL文をサーバーログに出力しません。
値は、大文字と小文字を区別しません。
永続性ユニットプロパティをdeployment descriptor (persistence.xml)、またはエンティティマネージャファクトリの取得時に
javax.persistence.PersistenceのcreateEntityManagerFactory(String, Map)メソッドに指定します。
例
SQLログの設定例を以下に示します。
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="com.company.my.pu">
<jta-data-source>jdbc/myDatasource</jta-data-source>
<properties>
<property name="toplink.logging.level.sql" value="FINE"/>
</properties>
</persistence-unit>
</persistence>
- 70 -
例
FINEを指定した場合のサーバーログへのSQLログ出力例を以下に示します。
[12/01/2011 11:20:31.296 +0800] ISJEE: INFO: ISJEE_JPA0021: SQL statement=INSERT INTO EJB_PERSON (NAME,
HOBBY) VALUES (?, ?)
bind => [Henrry_EJB_JPA, football]: ThreadID=63,ThreadName=p: thread-pool-1; w: 17
[12/01/2011 11:20:31.296 +0800] ISJEE: WARNING: ISJEE_JPA0020: caught throwable: ThreadID=63,ThreadName=p:
thread-pool-1; w: 17
Local Exception Stack:
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.1 (Build SNAPSHOT (12/31/2010))):
oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: [SymfoWARE ODBC Driver][SymfoWARE Server] JYP7203E 表“EJB_PERSON”
が存在しません.
Error Code: -7203
Call: INSERT INTO EJB_PERSON (NAME, HOBBY) VALUES (?, ?)
bind => [Henrry_EJB_JPA, football]
Query: InsertObjectQuery(com.fnst.jpa.entity.Person@1c42452)
本機能をJava SEスタンドアローンアプリケーションで使用する場合、本プロパティを、Java VMオプションとして設定でき
ます。Java VMオプションとcreateEntityManagerFactoryメソッドの両方に指定した場合、createEntityManagerFactoryメソッ
ドに指定した設定を優先します。
例
Java SE環境のSQLログ出力例を以下に示します。
[TopLink Fine]: 2008.01.14 05:24:49.125--ClientSession(25709120)--Connection(127
74933)--JPA0021: SQL statement=SELECT ID, NAME FROM CUSTOMER WHERE (NAME = ?)
bind => [Tarou]
2.11 ORB(Object Request Broker)/RMI-IIOP
Java EEは、異なるマシンに配置されているオブジェクト間で、IIOP(Internet Inter-ORB Protocol)を介してリクエストの呼出
しを行うORB(Object Request Broker)機能を提供します。
ORB
ORBは、リモートサーバ上のアプリケーションを呼び出すため、以下の処理を実行します。このため、アプリケーションは、
ネットワーク通信に関する処理を実装する必要がありません。
・ 呼出し側で指定した名前のオブジェクトをネットワーク上から検索
・ 通信コネクションの管理
・ リクエストデータを通信可能なデータ型に変換して、オブジェクトへ送信
・ サーバで運用するオブジェクトのメソッドを呼び出して結果をクライアントに返信
ORBの定義変更は、Interstage Java EE管理コンソールまたはasadminコマンドで編集できます。
ポイント
リクエストデータを通信可能なデータ型に変換する処理をマーシャリングと呼びます。
- 71 -
RMI-IIOP
RMI-IIOPを使用するアプリケーションは、RMI(Remote Method Invocation)形式でアプリケーションを作成することで、
IIOP通信してリモートサーバで運用されたEnterprise JavaBeanを呼び出すことができます。JNDIを使用してリモートサー
バのネーミングサービスにアクセスする場合も、IIOP通信で行います。
同一Java VM上のアプリケーションを呼び出す場合には、ORBが自動的にIIOP通信を介さずにアプリケーションを呼び
出し、不要なネットワーク通信が抑止されるため、性能が最適化されます。
IIOPリスナー
IIOPリスナーは、Enterprise JavaBeanのクライアントよりネットワーク接続を受信するリスナーソケットです。ドメインには、3
つのリスナーが用意されています。各リスナーには、リスナーポート番号、ネットワークアドレスを指定してください。
IIOPリスナーの定義変更は、Interstage Java EE管理コンソールまたはasadminコマンドで編集できます。
ファイアウォールの連携
ファイアウォールをまたがり安全にシステム構築を行う場合、HTTP(S)に準拠したファイアウォール/プロキシサーバを経
由してWebアプリケーションでリクエストを受信し、ファイアウォール内でIIOP通信するようにシステムを構築してください。
注意
ファイアウォールをまたがりIIOP通信でリモートサーバ上のアプリケーションを呼び出す場合、IIOPリスナーのリスナーポー
トへのアクセスが許可されるように、ファイアウォールの設定を行う必要があります。しかし、この設定は、セキュリティ上、
リスクが高いため、お勧めしません。(HTTP-IIOPゲートウェイを利用したHTTPトンネリング機能は、Java EE実行環境で
は使用できません。)
スタブ
RMI-IIOPでリモートサーバのアプリケーションを呼び出す場合、リモートインタフェースを実装するスタブを経由します。
スタブは、配備時に生成されます。スタブを経由することで、クライアントは、リモートサーバで運用されているアプリケー
ションを、あたかも同一マシン上で運用するアプリケーションのように呼び出すことができます。
Java EE実行環境では、スタブは運用時にメモリ上で動的に生成されます。これを、動的スタブと呼びます。動的スタブを
使用する場合、リモートインタフェースが呼出し側のクラスパスに設定されている必要があります。
オブジェクト管理
アプリケーションのオブジェクトと名前の管理は、ネーミングサービスで行われます。ネーミングサービスには、JNDI API
を使用してアクセスします。詳細は、「2.13.1 ネーミングサービス」を参照してください。
例外情報
IIOP通信でエラーが発生した場合に出力される例外情報については、「メッセージ集」の「Java EE使用時に出力される
例外情報」-「IIOP通信時の例外情報」を参照してください。
2.12 アプリケーションクライアントコンテナ
Java EE規約では、アプリケーションサーバのEJBアプリケーションやWebサービスにアクセスするクライアントマシン上で
実行されるアプリケーションのことを、Java EEアプリケーションクライアントと呼びます。
本製品では、このJava EEアプリケーションクライアントを実行する実行環境として、アプリケーションクライアントコンテナ
を提供します。WebコンテナやEJBコンテナとは違い、アプリケーションクライアントコンテナは軽量のコンテナで、クライア
ントマシンで動作します。
Java EEアプリケーションクライアントは、mainメソッドを持っているため、通常のJava SEスタンドアロンアプリケーションと同
様にjavaコマンドでも実行可能です。しかし、アプリケーションクライアントコンテナ上で動作させることで以下の利点があ
ります。
環境設定が容易
Java EEアプリケーションクライアントが動作する前に、アプリケーションクライアントコンテナが自動的にクラスパスを設
定します。また、アプリケーションクライアントコンテナ用のInterstage deployment descriptorファイル (sun-acc.xml)を使
用して、Java EEアプリケーションクライアントの動作をカスタマイズできます。
- 72 -
依存性の注入(Dependency Injection)の利用が可能
Java EEアプリケーションクライアントでは、依存性の注入(Dependency Injection)を利用できます。Java EEアプリケー
ションクライアントが動作する前に、アプリケーションクライアントコンテナはアプリケーション内のアノテーションを読み
込んでオブジェクトを注入します。アノテーションの利用については、「3.1.6 クライアントアプリケーションの作成方法」
を参照してください。
deployment descriptorファイル(application-client.xml)の利用が可能
Java EE規約では、deployment descriptorファイル (application-client.xml)にコールバックハンドラなどを指定できます。
アプリケーションクライアントコンテナは定義された情報を元に、指定された処理をコールバックします。
また、deployment descriptorファイルに定義された情報を元に、JNDIのjava:comp環境ネーミングコンテキストを利用
できます。
本説明では、アプリケーションクライアントコンテナ上で動作させるアプリケーションをJava EEアプリケーションクライアン
トと呼び、javaコマンドで実行するアプリケーションをJava SEスタンドアロンアプリケーションと呼びます。
注意
アプリケーションクライアントコンテナは、アプリケーションの処理に関わらずサーバのJNDIへの接続を必要とします。ファ
イアーウォールを跨り、サーバ上のアプリケーションを呼び出す場合、アプリケーションクライアントコンテナからサーバの
IIOPリスナーポートへアクセスが許可されるようにファイアウォールの設定をする必要があります。ただし、このような設定
はセキュリティ上のリスクが高く推奨しません。
2.13 JNDI
Java Naming and Directory Interface(以降、JNDI)は、各種ネーミングサービスおよびディレクトリサービスに標準のAPIを
使用してアクセスすることを可能とします。JNDIアーキテクチャは、API(Application Programming Interface)および
SPI(Service Provider Interface)で構成されます。
本製品では、IJServerクラスタの各種オブジェクトにアクセスするJNDI SPIの実装を提供しており、この実装をJNDIサービ
スプロバイダと呼びます。これにより、Java EEコンポーネントはJNDI APIを使用してJNDIサービスプロバイダが提供する
各種オブジェクトにアクセスできます。
以下にJNDIの構成を記載します。以下の図に記載されているNamingManagerとは、指定された環境プロパティを元に
JNDI SPIを実装するJNDIサービスプロバイダを呼び出し、指定された名前のオブジェクトを返却・管理するクラスです。
API、NamingManager、SPIは共にJava SEから提供されます。
- 73 -
以下について説明します。
・ Dependency Injectionの利用について
・ ネーミングサービスと環境ネーミングコンテキスト
・ オブジェクトの階層管理
Dependency Injectionの利用について
Java EE以降では、JNDIと同様にコンテナが管理するオブジェクトにアクセスする方法として、Dependency Injection(以降、
DI)という新たな方法が提供されています。JNDIを使用する場合には、アプリケーションサーバが管理するオブジェクトを
Java EEコンポーネントがlookupメソッドを実行して取得する必要があります。しかし、DIを使用した場合には、Java EEコ
ンポーネントにアノテーションを定義していれば、定義したアノテーションをコンテナが動的に読み込んで、必要に応じて
オブジェクトの情報を注入します。DIを使用すると以下の利点があります。
注意
コンテナは、Java EEコンポーネントのインスタンス生成時に対象のオブジェクトを取得してアノテーションに注入します。
インスタンス生成後はオブジェクトの再注入は行いませんので、オブジェクトを削除すると利用できなくなります。特に
Stateful Session Beanの注入は、Stateful Session Beanインスタンスの無通信時間監視機能によってインスタンスが削除さ
れる可能性があるため、推奨しません。
テスト工数の削減
JNDIを利用した場合、参照先のアプリケーションサーバの環境が構築されている必要がありますが、DIを使用した場
合には、通常のアプリケーションとして動作させることもできるため、単体テストが可能です。
アプリケーションのコード量の削減
DIを使用するとコンテナが動的にアノテーションを読み込んで必要に応じてオブジェクトを注入するため、アプリケー
ションのコード量が削減されます。また、従来のJava EEコンポーネントでは、アプリケーションの動作をXMLファイル
に定義する必要がありましたが、DIを使用するとアプリケーションの動作をアノテーションとして定義できるため、XML
ファイルの記述量が削減されます。
上記のようにDIを使用することで、アプリケーションの開発効率が向上します。DIの使用については、各Java EE規約を
参照してください。従来通りにJNDIを使用することも可能です。
ネーミングサービスと環境ネーミングコンテキスト
Java EEのJNDIはオブジェクトを管理する仕組みとして、以下の2つを提供します。
ネーミングサービス
IJServerクラスタ上のオブジェクトを一意のJNDI名で管理するネーミングサービスです。
環境ネーミングコンテキスト(Environment Naming Context)
Java EEコンポーネントのdeployment descriptorファイルの定義内容を元に、Java EEコンポーネントごとにjava:comp/
env環境ネーミングコンテキストでオブジェクトを管理するネーミングコンテキストです。
アプリケーションの汎用性が向上するため、環境ネーミングコンテキストの利用をお勧めします。
それぞれの特徴については、「2.13.1 ネーミングサービス」と「2.13.2 環境ネーミングコンテキスト(Environment Naming
Context)」を参照してください。また、仕様の違いについては、「2.13.3 ネーミングサービスと環境ネーミングコンテキストの
仕様差異」を参照してください。
オブジェクトの階層管理
JNDIサービスプロバイダは、オブジェクトを階層管理します。例えば、「jdbc/MyDS」というJNDI名でオブジェクトを登録し
た場合、「jdbc」の部分をサブコンテキストと呼び、サブコンテキスト内で「MyDS」という名前のオブジェクトを管理します。
「jdbc/MyCmp/MyDS」などのように複数階層のサブコンテキストを持つこともできます。
JNDI名は、サブコンテキスト内で一意となる必要があります。また、JNDI名が別名であってもサブコンテキストの名前と、
実際のオブジェクトの名前が重複するとオブジェクトの登録に失敗します。
- 74 -
アプリケーションでオブジェクトを参照する場合、一般的にはJNDI名を指定してオブジェクトの参照を取得します。別の
参照方法として、上記のようにオブジェクトが階層管理されているため、サブコンテキストから段階的にオブジェクトを参
照することもできます。例えばJNDI名が「jdbc/MyDS」の場合、JNDI APIのlookupメソッドを実行して「jdbc」という名前で
サブコンテキスト(javax.naming.Contextオブジェクト)を取得し、そのサブコンテキストに対して「MyDS」という名前でlookup
メソッドを実行しても登録されたオブジェクトを取得できます。
2.13.1 ネーミングサービス
IJServerクラスタを起動した際に、IJServerクラスタに定義されたリソースまたは配備されたEnterprise JavaBeanがネーミン
グサービスに登録されます。例えばJDBCリソースとして「jdbc/Symfo」というJNDI名でリソースを定義した場合、ネーミン
グサービスに「jdbc/Symfo」という名前でオブジェクトが登録されます。アプリケーションは、「jdbc/Symfo」という名前を指
定してJNDIのlookupメソッドを実行すると登録されたオブジェクトを取得できます。このため、IJServerクラスタに定義する
JNDI名は一意である必要があります。
ここでは、以下について説明します。
・ ネーミングサービスに登録されるオブジェクト
・ リモート呼出し用Enterprise JavaBeanのJNDI名
・ クライアントからリモートサーバのネーミングサービスへの接続
・ JNDI APIからネーミングサービスの更新
・ JNDIブラウズ
ネーミングサービスに登録されるオブジェクト
ネーミングサービスに登録されるオブジェクトは以下です。
参照オブジェクト
JNDIのlookupメソッドに指定する名前
リモート呼出し用Enterprise
JavaBean
「リモート呼出し用Enterprise JavaBeanのJNDI名」を参照
JDBCリソース
JDBCリソース定義時に指定したJNDI名
JMS接続ファクトリ
JMS接続ファクトリ定義時に指定したJNDI名
JMS送信先
JMS送信先定義時に指定したJNDI名
コネクタリソース
コネクタリソース定義時に指定したJNDI名
管理オブジェクトリソース
管理オブジェクトリソース定義時に指定したJNDI名
カスタムリソース
カスタムリソース定義時に指定したJNDI名
外部リソース
外部リソース定義時に指定したJNDI名
注意
・ ローカル呼出し用のEnterprise JavaBeanやWebサービス参照は、IJServerクラスタのネーミングサービスでは管理さ
れません。これらオブジェクトを利用する場合には、環境ネーミングコンテキストまたはDIを使用してください。
・ JavaMailセッションは、ネーミングサービスから参照しないでください。javax.mail.Sessionオブジェクトが返却されませ
ん。JavaMailセッションを使用する場合には、環境ネーミングコンテキストを使用してください。
リモート呼出し用Enterprise JavaBeanのJNDI名
リモート呼出し用Enterprise JavaBeanのJNDI名は、以下の優先順位で決定します。
リモート呼出し用のEnterprise JavaBeanには、Home/RemoteインタフェースまたはEJB3.0のリモートビジネスインタフェー
スが定義されます。クライアントからEnterprise JavaBeanを呼び出す場合には、以下で決定したJNDI名でオブジェクトを
取得し、そのオブジェクトに対してインタフェースのメソッドを呼び出します。
- 75 -
1. Interstage deployment descriptor (sun-ejb-jar.xml)ファイルの定義
2. deployment descriptor (ejb-jar.xml)ファイルの定義
3. @Stateless/@StatefulアノテーションのmappedName属性の指定
4. インタフェース名
上記で決定したJNDI名を元にネーミングサービスには、以下の名前のオブジェクトが登録されます。
名前
説明
JNDI名
EJB 3.0以降の場合は、ビジネスインタフェース用のオブジェクトが登録さ
れます。EJB 2.x以前の場合は、Homeインタフェース用のオブジェクトが登
録されます。通常は、この名前を使用します。
JNDI名#ビジネスイン
タフェース名
各ビジネスインタフェースのJNDI名です。
リモートビジネスインタフェースが複数存在した場合は、この名前で各イン
タフェースのメソッドを呼び分けます。詳細は、「リモートビジネスインタフェー
スが複数存在した場合のJNDI名」を参照してください。
JNDI名
__3_x_Internal_Rem
oteBusinessHome__
EJB3.0以降の場合は、登録されます。
内部制御用のため、アプリケーションからは使用しないでください。
以下にそれぞれの指定方法について説明します。
Interstage deployment descriptor (sun-ejb-jar.xml)ファイルの定義
対象となるEnterprise JavaBeanにおいてInterstage deployment descriptor(sun-ejb-jar.xml)ファイルのjndi-nameタグに
JNDI名を指定します。記述例を以下に示します。
<ejb>
<ejb-name>CartBean</ejb-name>
<jndi-name>Cart</jndi-name>
</ejb>
deployment descriptor (ejb-jar.xml)ファイルの定義
deployment descriptor(ejb-jar.xml)ファイルのmapped-nameタグにJNDI名を指定します。記述例を以下に示します。
EJB3.0以降のEnterprise JavaBeansの場合、利用できます。
<enterprise-beans>
<session>
<ejb-name>CartBean</ejb-name>
<mapped-name>Cart</mapped-name>
...
</session>
</enterprise-beans>
@Stateless/@StatefulアノテーションのmappedName属性の指定
対象となるEnterprise JavaBeanにおいて@Stateless/@StatefulアノテーションのmappedName属性にJNDI名を指定し
ます。記述例を以下に示します。
@Stateless(mappedName="Cart")
public class CartBean implements CartObject { ... }
インタフェース名
上記のいずれも設定しなかった場合、対象となるEnterprise JavaBeansのインタフェースの定義によって、以下の論理
でデフォルトJNDI名を決定します。
- 76 -
デフォルトJNDI名
Home/
EJB3.0以降のリ
Remoteインタ モートビジネスイン
フェースの定 タフェースの総数
義
例
なし
0
なし
なし
なし
1
リモートビジネスインタ
フェースのフルパッケージ
名
com.mycompany.CartBusin
ess
なし
2以上
なし (注1)
なし
あり
0
Homeインタフェースのフル
パッケージ名
com.mycompany.CartHome
あり
1以上
なし (注2)
なし
注1)
JNDI名を定義する必要があります。また、クライアントから実際にオブジェクトを取得する場合には、使用するイン
タフェースごとに使用するJNDI名が異なります。詳細は、「リモートビジネスインタフェースが複数存在した場合の
JNDI名」を参照してください。
注) JNDI名を定義しないとJNDI名が空文字(長さ0の文字列)と認識されます。このため、「#インタフェース名」や
「__3_x_Internal_RemoteBusinessHome__」というオブジェクトが登録され、他のJNDI名と重複する可能性がありま
す。必ずJNDI名を定義してください。
注2)
JNDI名を定義する必要があります。クライアントから実際にオブジェクトを取得する場合、定義したJNDI名を指定
するとHomeインタフェース用のオブジェクトが取得されます。リモートビジネスインタフェースを使用する場合には、
インタフェースごとに使用するJNDI名が異なります。詳細は、「リモートビジネスインタフェースが複数存在した場
合のJNDI名」を参照してください。
注) JNDI名を定義しないとアプリケーションの起動時にエラーが発生し、アプリケーションが呼び出せない状態と
なります。必ずJNDI名を定義してください。
リモートビジネスインタフェースが複数存在した場合のJNDI名
Enterprise JavaBeanのリモートビジネスインタフェースが複数存在した場合、使用するインタフェースごとに使用するJNDI
名が異なります。Enterprise JavaBeanに指定したJNDI名の後ろに#を付けて使用するインタフェース名を指定してください。
例えば、リモートビジネスインタフェースとしてcom.ejb.CartBusiness1とcom.ejb.CartBusiness2が定義されたEnterprise
JavaBeanに、JNDI名としてCartを指定したとします。この場合には、以下のようにJNDI名を指定してください。
InitialContext ic = new InitialContext();
CartBusiness1 bean1 = (CartBusiness1) ic.lookup("Cart#com.ejb.CartBusiness1");
CartBusiness2 bean2 = (CartBusiness2) ic.lookup("Cart#com.ejb.CartBusiness2");
Enterprise JavaBeanまたはServlet/JSPからリモートサーバのEnterprise JavaBeanにアクセスする場
合
Enterprise JavaBeanまたはServlet/JSPは、通常は同一プロセス上のネーミングサービスにアクセスします。他プロセスまた
はリモートサーバのネーミングサービスに登録されたEnterprise JavaBeanにアクセスする場合には、環境ネーミングコンテ
キストを使用してlookupする参照名にJNDI名を対応付けて使用する必要があります。詳細は、「2.13.2 環境ネーミングコ
ンテキスト(Environment Naming Context)」を参照してください。
クライアントからリモートサーバのネーミングサービスへの接続
クライアントからリモートサーバのネーミングサービスにIIOP通信でアクセスし、ネーミングサービスが管理するオブジェク
トを参照できます。ネーミングサービスにリモート接続する場合には、IIOP通信の環境設定やチューニングパラメタの設
定を行ってください。また、クライアントには接続先のホスト名とIIOPのポート番号を設定する必要があります。接続先の
設定方法については、「4.13 JNDIの環境設定」を参照してください。
- 77 -
JNDI APIからネーミングサービスの更新
JNDI APIのbindメソッドやunbindメソッドなどを実行してアプリケーションからネーミングサービスの情報を更新(任意のオ
ブジェクトの登録/削除)することもできます。しかし、以下に注意してください。
・ オブジェクトを登録した場合、登録したプロセスのネーミングサービスでだけ有効です。IJServerクラスタ内の他のプ
ロセスのネーミングサービスには登録されません。
・ オブジェクトを登録したプロセスが一度停止した場合、登録したオブジェクトは削除されます。プロセスを再起動した
際にオブジェクトの再登録が必要となります。
・ コンテナが登録したオブジェクトの削除や名前の変更は、誤動作する危険性があるため行わないでください。
JNDIブラウズ
ネーミングサービスに登録されたオブジェクトのJNDI名一覧は、Interstage Java EE管理コンソールのJNDIブラウズ、また
はasadminコマンドのlist-jndi-entriesサブコマンドで参照できます。
Interstage Java EE管理コンソールを使用した場合、ツリーの「IJServerクラスタ」ノードを展開し、目的のサーバーインスタ
ンスを選択した画面で[JNDIブラウズ]を選択してください。表示されるJNDIツリーのブラウズで、ネーミングサービスに登
録されているオブジェクトを選択すると、以下を確認できます。
項目
内容
名前
JNDI名が表示されます。
クラス名
登録されているオブジェクトのクラス名が表示されます。選択したオブジェクトにより
以下が表示されます。
・ サブコンテキストの場合、クラス名には以下が表示されます。
com.sun.enterprise.naming.TransientContext
・ オブジェクトのリファレンス情報の場合、以下が表示されます。このオブジェクト
は、リモートクライアントからJNDI APIを実行すると、JNDIサービスプロバイダは
サーバから取得したリファレンス情報から実際のオブジェクトを生成して返却し
ます。詳細は、javax.naming.ReferenceのJavadocを参照してください。
javax.naming.Reference
・ 上記以外の場合、実際のオブジェクトがネーミングサービスに登録されており、
オブジェクトのクラス名が表示されます。
ターゲット
リソースが有効なターゲット(IJServerクラスタ名または「server」)が表示されます。以
下を選択した場合は、表示されません。
・ サブコンテキスト
・ リモート呼出し用Enterprise JavaBeanのオブジェクト
・ コンテナが自動的に登録したオブジェクト
・ アプリケーションで登録したオブジェクト
注意
システムが利用するオブジェクト(UserTransactionなど)やアプリケーション(ejb/mgmt)、__pmを付加したリソースの名前も
表示されます。
2.13.2 環境ネーミングコンテキスト(Environment Naming Context)
ネーミングサービスはシステムで一意の名前でオブジェクトを一元管理する仕組みですが、Java EEではJava EEコンポー
ネントの汎用性を向上するため、Java EEコンポーネントのdeployment descriptorファイルの定義内容を元に、Java EEコ
ンポーネントごとにオブジェクトを管理するjava:comp/env環境ネーミングコンテキストを提供します。
ここでは、以下について説明します。
- 78 -
・ 環境ネーミングコンテキストの利点
・ ネーミングサービスと環境ネーミングコンテキストの関係
・ 環境ネーミングコンテキストで参照可能なオブジェクト
・ 参照名とJNDI名の対応付け
環境ネーミングコンテキストの利点
deployment descriptorファイルに定義した参照名(論理的な名前)は、JNDI名(物理的な名前)との対応をInterstage
deployment descriptorファイルに定義できます。この対応を定義したJava EEコンポーネントでは、参照名を指定してlookup
メソッドを実行することで、その参照名に対応するJNDI名のオブジェクトをlookupできます。Java EEコンポーネントごとに
参照名とJNDI名の対応関係が定義でき、環境ネーミングコンテキストが独立しているために以下の利点があります。
実際の環境を意識せずに開発可能
実際に運用する時のJNDI名を意識せずにJava EEコンポーネントを開発できます。このため、一度作成したJava EE
コンポーネントは、アプリケーションを修正せずに定義ファイルの変更だけで様々な環境に配布することもできます。
独立してアプリケーション開発可能
Java EEコンポーネント間で同一の参照名を使用していても、アプリケーションの修正を行わずに定義を編集するだけ
で各Java EEコンポーネントで別々のオブジェクトをlookupメソッドで取得できます。このため、互いのJava EEコンポー
ネントの名前の重複も意識せずに開発できます。
ネーミングサービスと環境ネーミングコンテキストの関係
以下に、ネーミングサービスと環境ネーミングコンテキストの関係を示します。
以下の図は、IJServerクラスタにJava EEコンポーネント1とJava EEコンポーネント2が存在した場合の例です。Java EEコン
ポーネント1とJava EEコンポーネント2で参照名「F」が双方に定義されていますが、Java EEコンポーネント1の参照名「F」
はJNDI名「X/A」に対応付け、Java EEコンポーネント2の参照名「F」はJNDI名「X/Y/D」に対応付けることで、各Java EEコ
ンポーネントは別々のオブジェクトを参照できます。
環境ネーミングコンテキストで参照可能なオブジェクト
環境ネーミングコンテキストで参照可能なオブジェクトは以下です。合わせて対応するアノテーションを記載します。
参照オブジェクト
JNDIのlookupメソッドに指定する名前
アノテーションに注入された
情報
「JNDIによるアノテーションに注入された情
報の参照」を参照してください。
-
アプリケーション環境エントリ
java:comp/env/[環境エントリ名]
-
- 79 -
アノテーション
参照オブジェクト
JNDIのlookupメソッドに指定する名前
アノテーション
リモート呼出し用Enterprise
JavaBean
java:comp/env/[EJB参照名]
@EJB
ローカル呼出し用Enterprise
JavaBean
java:comp/env/[EJBローカル参照名]
@EJB
JDBCリソース
java:comp/env/[リソース参照名]
@Resource
JMS送信先
java:comp/env/[Destination参照名]
@Resource
管理オブジェクトリソース
java:comp/env/[リソース環境参照名]
@Resource
JPAエンティティマネージャ
ファクトリ
java:comp/env/[永続性ユニット参照名]
@PersistenceUnit
コンテナ管理のJPAエンティ
ティマネージャ
java:comp/env/[永続性コンテキスト参照
名]
@PersistenceContext
UserTransaction
java:comp/UserTransaction
@Resource
TransactionSynchronization
Registry
java:comp/
TransactionSynchronizationRegistry
@Resource
ORB
java:comp/ORB
@Resource
HandleDelegate
java:comp/HandleDelegate
@Resource
EJBタイマーサービス
java:comp/TimerService
@Resource
EJBコンテキスト
java:comp/EJBContext
@Resource
JavaMailセッション
URL接続ファクトリ
JMS接続ファクトリ
コネクタリソース
カスタムリソース
外部リソース
上記の各参照名とdeployment descriptorファイルの定義項目の対応を以下に記載します。
環境エントリと各参照名
deployment descriptorファイルの定義項目
環境エントリ名
<env-entry>タグの<env-entry-name>タグ値
EJB参照名
<ejb-ref>タグの<ejb-ref-name>タグ値
EJBローカル参照名
<ejb-local-ref>タグの<ejb-ref-name>タグ値
リソース参照名
<resource-ref>タグの<res-ref-name>タグ値
Destination参照名
<message-destination-ref>タグの<message-destination-ref-name>
タグ値
リソース環境参照名
<resource-env-ref>タグの<resource-env-ref-name>タグ値
永続性ユニット参照名
<persistence-unit-ref>タグの<persistence-unit-ref-name>タグ値
永続性コンテキスト参照名
<persistence-context-ref>タグの<persistence-context-ref-name>タ
グ値
- 80 -
JNDIによるアノテーションに注入された情報の参照
アノテーションに注入された情報が登録されます。例えば、com.exampleというパッケージ名のMyAppというクラス名
のフィールドで、フィールド名がmyDatabaseというフィールドにJava EEのアノテーションが指定された場合、「java:comp/
env/com.example.MyApp/myDatabase」という名前でアノテーションに注入された値が取得できます。
参照名とJNDI名の対応付け
deployment descriptorファイルに定義した参照名(論理的な名前)は、JNDI名(物理的な名前)との対応をInterstage
deployment descriptorファイルに定義できます。この対応を定義したJava EEコンポーネントでは、参照名を指定してlookup
メソッドを実行することで、その参照名に対応するJNDI名のオブジェクトをlookupできます。deployment descriptorファイ
ルに定義する各参照名と、ネーミングサービスに登録された実際のJNDI名の対応について以下に説明します。
・ EJB参照名
・ EJBローカル参照名
・ 永続性ユニット参照名
・ 永続性コンテキスト参照名
・ リソース参照名
・ Destination参照名
・ リソース環境参照名
EJB参照名
以下の優先順位で参照名に対応するJNDI名を決定します。
1. EJB参照名に対して定義したInterstage deployment descriptorファイルのJNDI名
2. EJB参照名に対して定義したdeployment descriptorファイルのmapped-name
3. EJB参照名に対して定義したdeployment descriptorファイルのejb-link
4. EJB参照名に対して定義したdeployment descriptorファイルのインタフェース名
以下に各定義方法を説明します。
EJB参照名に対して定義したInterstage deployment descriptorファイルのJNDI名
Interstage deployment descriptorファイルに参照名とJNDI名を定義した場合、定義したJNDI名に対応付けます。
<ejb-ref>
<ejb-ref-name>ejb/MyEjb</ejb-ref-name>
<jndi-name>CartBean</jndi-name>
</ejb-ref>
他プロセスまたはリモートサーバのネーミングサービスに登録されたEnterprise JavaBeanにアクセスする場合には、
Interoperable Naming Service(以降、INS)の規則を使用して、他プロセスまたはリモートサーバのホスト名、IIOPリス
ナーのポート番号、JNDI名を指定する必要があります。ホスト名とポート番号は1つのみ指定できます。ロードバラン
スやフェイルオーバーは行われないため、他プロセスまたはリモートサーバのネーミングサービスに登録されたEnterprise
JavaBeanにアクセスする場合にはJ2EE実行環境を使用することをお勧めします。INSの詳細は、COS Naming規約を
参照してください。以下のフォーマットで名前を指定します。
corbaname:iiop:ホスト名:ポート番号#JNDI名
ポート番号の指定を省略した場合、CORBA規約で規定されたデフォルトのポート番号2809が使用されます。IIOPリ
スナーのポート番号のデフォルト値(23700)は使用されないため、ポート番号は必ず指定してください。
ポート番号は以下の定義項目から確認できます。Interstage Java EE管理コンソールでも確認できます。
- 81 -
- ${clusterName_instanceName_configName}.iiop-service.iiop-listener.${iiop-listener-id}.port
初期設定ではこの設定はシステムプロパティのIIOP_LISTENER_PORTを参照しているため、以下にポート番号が設
定されています。
- ${instanceName}.system-property.IIOP_LISTENER_PORT
例
以下はホスト名がmyHost、ポート番号が23700、JNDI名がCartBeanの例です。
corbaname:iiop:myHost:23700#CartBean
Interstage deployment descriptorファイルに以下のように定義します。
<ejb-ref>
<ejb-ref-name>ejb/MyEjb</ejb-ref-name>
<jndi-name>corbaname:iiop:myHost:23700#CartBean</jndi-name>
</ejb-ref>
注意
corbaname URLに指定したホスト名とIIOPリスナーのホスト名(ネットワークアドレス)が完全一致していない場合、それ
ぞれのホスト名に対してコネクションが作成されます。
このため、corbaname URLに指定したホスト名とIIOPリスナーのホスト名が完全一致している場合と比べ、使用するコ
ネクション数が2倍になります。
IIOPリスナーのホスト名は、Interstage Java EE管理コンソール、または以下の定義項目から確認できます。
${clusterName_instanceName_configName}.iiop-service.iiop-listener.${iiop-listener-id}.address
初期設定ではこの設定は「0.0.0.0」であり、IIOPリスナーのホスト名として、IPアドレスが設定されています。
EJB参照名に対して定義したdeployment descriptorファイルのmapped-name
deployment descriptorファイルのEJB参照(ejb-refタグ)にmapped-nameタグを指定すると指定したJNDI名に対応付け
ます。
EJB 3.0以降のEnterprise JavaBeansの場合、利用できます。
<ejb-ref>
<ejb-ref-name>ejb/MyEjb</ejb-ref-name>
<remote>com.ejb1.CartRemote</remote>
<mapped-name>CartBean</mapped-name>
</ejb-ref>
他プロセスまたはリモートサーバのネーミングサービスに登録されたEnterprise JavaBeanにアクセスする場合には、1.
と同様にInteroperable Naming Service(以降、INS)の規則を使用してJNDI名を指定する必要があります。
EJB参照名に対して定義したdeployment descriptorファイルのejb-link
Java EEコンポーネントから別のEnterprise JavaBeanを呼び出す場合、deployment descriptorファイルのEJB参照(ejbrefタグ)を定義する際にejb-linkを定義することで、参照名とJNDI名が異なっていても対応付けが不要となります。同
一のejb-jarファイルに含まれるEnterprise JavaBeanを呼び出す場合、以下のようにejb-linkに呼び出すEnterprise
JavaBeanのejb-nameを指定します。
<ejb-ref>
<ejb-ref-name>ejb/MyEjb</ejb-ref-name>
<remote>com.ejb1.CartRemote</remote>
<ejb-link>CartBean</ejb-link>
</ejb-ref>
- 82 -
また、同一ear内の異なるejb-jarに含まれるEnterprise JavaBeanを呼び出す場合には、以下のように定義します。呼び
出す側のejb-jarファイルに対する呼び出される側のejb-jarファイルの相対パス(以下の例では"ejb1.jar")を定義し、続
けて#を付けて呼び出すEnterprise JavaBeanのejb-name(以下の例では"CartBean")を定義します。
<ejb-ref>
<ejb-ref-name>ejb/MyEjb</ejb-ref-name>
<remote>com.acme.FooRemote</remote>
<ejb-link>ejb1.jar#CartBean</ejb-link>
</ejb-ref>
EJB参照名に対して定義したdeployment descriptorファイルのインタフェース名
deployment descriptorファイルの<ejb-ref><home>タグに指定するインタフェース名、<ejb-ref><remote>タグに指定す
るインタフェース名により、以下のようにJNDI名として扱います。
<ejb-ref><home>タグに指 <ejb-ref><remote>タグに
定するインタフェース名
指定するインタフェース名
JNDI名
なし
あり
Remoteインタフェース名 (注)
あり
あり
Homeインタフェース名
あり
なし
Homeインタフェース名
なし
なし
1.または2.の定義が必須
注) 参照するejb-jarがEJB3.0以降の場合です。EJB3.0以降では、Homeインタフェースを定義しないことが可能である
ため本条件となります。
EJBローカル参照名
EJBローカルインタフェースはネーミングサービスに登録されないため、JNDI名はありません。このため、以下の優先順
位で参照するオブジェクトを決定します。また、EJBローカル参照は同一Java VMプロセス上のEJBアプリケーションを参
照する場合だけ使用できます。
1. EJBローカル参照名に対して定義したdeployment descriptorファイルのejb-link
2. EJBローカル参照名に対して定義したdeployment descriptorファイルのインタフェース名
以下に各定義方法を説明します。
EJBローカル参照名に対して定義したdeployment descriptorファイルのejb-link
Java EEコンポーネントから別のEnterprise JavaBeanを呼び出す場合、EJBローカル参照(ejb-local-refタグ)を定義す
る際にdeployment descriptorファイルのejb-linkを定義することで、呼び出すEnterprise JavaBeanを指定できます。同
一のejb-jarファイルに含まれるEnterprise JavaBeanを呼び出す場合、以下のようにejb-linkに呼び出すEnterprise
JavaBeanのejb-nameを指定します。
<ejb-local-ref>
<ejb-ref-name>ejb/CartEJB</ejb-ref-name>
<local>com.mycompany.CartLocal</local>
<ejb-link>CartBean</ejb-link>
</ejb-local-ref>
また、異なるejb-jarに含まれるEnterprise JavaBeanを呼び出す場合には、以下のように呼び出す側のejb-jarファイル
から呼び出される側のejb-jarファイルの相対パスに、呼び出すEnterprise JavaBeanのejb-nameに#を付けて定義します。
<ejb-local-ref>
<ejb-ref-name>ejb/CartEJB</ejb-ref-name>
<local>com.mycompany.CartLocal</local>
<ejb-link>CartEjb.jar#CartBean</ejb-link>
</ejb-local-ref>
- 83 -
EJBローカル参照名に対して定義したdeployment descriptorファイルのインタフェース名
deployment descriptorファイルの<ejb-local-ref><local-home>タグに指定するLocalHomeインタフェース名、<ejb-localref><local>タグに指定するLocalインタフェース名により、以下のように参照するオブジェクトを決定します。参照する
Enterprise JavaBeansは、同一ejb-jarファイルに含まれている必要があります。異なるejb-jarに含まれるEnterprise
JavaBeansを呼び出す場合には、必ず1.の定義方法を使用してください。
LocalHomeインタフェース
Localインタフェース
参照するオブジェクト
なし
あり
指定したLocalインタフェースを持つ
Enterprise JavaBeans (注)
あり
あり
指定したLocalHomeインタフェース
を持つEnterprise JavaBeans
あり
なし
指定したLocalHomeインタフェース
を持つEnterprise JavaBeans
なし
なし
1.の定義が必須
注) 参照するejb-jarがEJB3.0以降の場合です。EJB3.0以降では、LocalHomeインタフェースを定義しないことが可能
であるため本条件となります。
永続性ユニット参照名
deployment descriptorファイルに定義したpersistence-unit-nameタグに指定したJNDI名のオブジェクトをlookupします。
persistence-unit-nameタグを省略した場合、デフォルト永続性ユニットをlookupしてエンティティマネージャファクトリを返却
します。
<persistence-unit-ref>
<description>
Persistence unit for the inventory management application.
</description>
<persistence-unit-ref-name>
persistence/InventoryAppDB
</persistence-unit-ref-name>
<persistence-unit-name>
InventoryManagement
</persistence-unit-name>
</persistence-unit-ref>
永続性コンテキスト参照名
deployment descriptorファイルに定義したpersistence-unit-nameタグに指定したJNDI名のオブジェクトをlookupします。
persistence-unit-nameタグを省略した場合、デフォルト永続性ユニットをlookupしてエンティティマネージャを返却します。
<persistence-context-ref>
<description>
Persistence context for the inventory management application.
</description>
<persistence-context-ref-name>
persistence/InventoryAppMgr
</persistence-context-ref-name>
<persistence-unit-name>
InventoryManagement
</persistence-unit-name>
</persistence-context-ref>
リソース参照名
以下の優先順位でJNDI名を決定します。以下を定義しなかった場合には、エラーとなります。
1. リソース参照名に対して定義したInterstage deployment descriptorファイルのJNDI名
- 84 -
2. リソース参照名に対して定義したdeployment descriptorファイルのmapped-nameの値
以下に各定義方法を説明します。
リソース参照名に対して定義したInterstage deployment descriptorファイルのJNDI名
Interstage deployment descriptorにリソース参照名とJNDI名を定義した場合、定義したJNDI名に対応付けます。参照
名(jdbc/symfo)を、JNDI名(myDS)に対応付ける場合には、Interstage deployment descriptorファイルに、以下のように
参照名とJNDI名を定義します。
<resource-ref>
<res-ref-name>jdbc/symfo</res-ref-name>
<jndi-name>myDS</jndi-name>
</resource-ref>
リソース参照名に対して定義したdeployment descriptorファイルのmapped-nameの値
deployment descriptorファイルのリソース参照(resource-refタグ)にmapped-nameタグを指定すると、指定したJNDI名の
オブジェクトをlookupメソッドで取得できます。
Java EE 5以降のアプリケーションの場合、利用できます。
<resource-ref>
<res-ref-name>jdbc/symfo</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<mapped-name>myDS</mapped-name>
</resource-ref>
注意
resource-refタグのres-typeタグの指定が「java.net.URL」の場合、Interstage deployment descriptorファイルの参照名に対
応付けるjndi-nameタグの値、またはdeployment descriptorファイルのmapped-nameタグには使用するURLを定義します。
この定義したURLを元に生成されたjava.net.URLオブジェクトを、lookupメソッドで取得できます。以下のようにURLを指
定します。
<resource-ref>
<res-ref-name>url/MyURL</res-ref-name>
<jndi-name>http://www.fujitsu.com/</jndi-name>
</resource-ref>
Destination参照名
以下の優先順位でJNDI名を決定します。
1. Destinationリンクのリンク先に対して定義したInterstage deployment descriptorファイルのJNDI名
2. Destinationリンクのリンク先に対して定義したdeployment descriptorファイルのmapped-nameの値
3. Destination参照名に対して定義したInterstage deployment descriptorファイルのJNDI名
4. Destination参照名に対して定義したdeployment descriptorファイルのmapped-nameの値
以下に各定義方法を説明します。
Destinationリンクのリンク先に対して定義したInterstage deployment descriptorファイルのJNDI名
Destination参照名を定義するmessage-destination-refタグには、以下のようにmessage-destination-linkタグを定義でき
ます。このタグに指定する値を、Destinationリンクと呼びます。
J2EE 1.4以降のアプリケーションの場合、利用できます。
- 85 -
<message-destination-ref>
<message-destination-ref-name>jms/myQueue</message-destination-ref-name>
<message-destination-type>javax.jms.Queue</message-destination-type>
<message-destination-usage>Produces</message-destination-usage>
<message-destination-link>myDestination</message-destination-link>
</message-destination-ref>
...
<message-destination>
<message-destination-name>myDestination</message-destination-name>
</message-destination>
このDestinationリンクを定義した場合、リンク先のmessage-destination-nameに対してInterstage deployment descriptor
ファイルで定義したJNDI名のDestinationをlookupメソッドで取得できます。
<message-destination>
<message-destination-name>myDestination</message-destination-name>
<jndi-name>myQueue</jndi-name>
</message-destination>
Destinationリンクのリンク先に対して定義したdeployment descriptorファイルのmapped-nameの値
deployment descriptorファイルのDestinationリンクを定義した場合、リンク先のmessage-destination-nameにmappednameタグを指定すると、指定したJNDI名のDestinationをlookupメソッドで取得できます。
Java EE 5以降のアプリケーションの場合、利用できます。
<message-destination-ref>
<message-destination-ref-name>jms/myQueue</message-destination-ref-name>
<message-destination-type>javax.jms.Queue</message-destination-type>
<message-destination-usage>Produces</message-destination-usage>
<message-destination-link>myDestination</message-destination-link>
</message-destination-ref>
...
<message-destination>
<message-destination-name>myDestination</message-destination-name>
<mapped-name>myQueue</mapped-name>
</message-destination>
Destination参照名に対して定義したInterstage deployment descriptorファイルのJNDI名
Destinationリンクを定義しなかった場合、Destination参照名に対して定義したInterstage deployment descriptorファイ
ルのJNDI名のDestinationをlookupメソッドで取得できます。
<message-destination-ref>
<message-destination-ref-name>jms/myQueue</message-destination-ref-name>
<jndi-name>myQueue</jndi-name>
</message-destination-ref>
Destination参照名に対して定義したdeployment descriptorファイルのmapped-nameの値
deployment descriptorファイルのDestinationリンクを定義しなかった場合、Destination参照(message-destination-refタ
グ)のmapped-nameタグを指定すると、指定したJNDI名のDestinationをlookupメソッドで取得できます。
Java EE 5以降のアプリケーションの場合、利用できます。
<message-destination-ref>
<message-destination-ref-name>jms/myQueue</message-destination-ref-name>
<message-destination-type>javax.jms.Queue</message-destination-type>
<message-destination-usage>Produces</message-destination-usage>
<mapped-name>myQueue</mapped-name>
</message-destination-ref>
リソース環境参照名
以下の優先順位でJNDI名を決定します。
- 86 -
1. リソース環境参照名に対して定義したInterstage deployment descriptorファイルのJNDI名
2. リソース環境参照名に対して定義したdeployment descriptorファイルのmapped-nameの値
以下に各定義方法を説明します。
リソース環境参照名に対して定義したInterstage deployment descriptorファイルのJNDI名
Interstage deployment descriptorファイルにリソース環境参照名とJNDI名を定義した場合、定義したJNDI名に対応付
けます。参照名(eis/myAO)を、JNDI名(myAO)に対応付ける場合には、Interstage deployment descriptorファイルに
以下のように参照名とJNDI名を定義します。
<resource-env-ref>
<resource-env-ref-name>eis/myAO</resource-env-ref-name>
<jndi-name>myAO</jndi-name>
</resource-env-ref>
リソース環境参照名に対して定義したdeployment descriptorファイルのmapped-nameの値
deployment descriptorファイルのリソース環境参照(resource-env-refタグ)にmapped-nameタグを指定すると、指定した
JNDI名のオブジェクトをlookupメソッドで取得できます。
Java EE 5以降のアプリケーションの場合、利用できます。
<resource-env-ref>
<resource-env-ref-name>eis/myAO</resource-env-ref-name>
<resource-env-ref-type>com.resource.AOType</resource-env-ref-type>
<mapped-name>myAO</mapped-name>
</resource-env-ref>
2.13.3 ネーミングサービスと環境ネーミングコンテキストの仕様差異
以下にネーミングサービスと環境ネーミングコンテキストの仕様の差異について記載します。
項目
ネーミングサービス
環境ネーミングコンテキスト
名前空間
JNDI名による名前空間でオブジェクト
を管理します。
例) lookupメソッドに指定する名前
lookup("jdbc/empDB")
java:comp/envというプレフィックスを持
つ論理的な名前空間でオブジェクトを
管理します。
例) lookupメソッドに指定する名前
lookup("java:comp/env/jdbc/
empDB")
名前の一意性
IJServerクラスタ内で一意の名前で管
理します。
EJBコンポーネントの場合には内包す
るEnterprise JavaBeanごとに、それ以外
のJava EEコンポーネントの場合にはコ
ンポーネントごとに一意の名前で管理
します。
参照するオブ
ジェクトの定義
JNDI APIにJNDI名を指定することでオ
ブジェクトを参照可能です。
JNDI APIでオブジェクトをlookupする
ためにはdeployment descriptorファイル
にlookupするオブジェクトの参照名を定
義する必要があります。
コンテキストの
操作
参照(lookupなど)、更新(bindなど)が可
能です。
参照(lookupなど)だけ可能です。
対応関係の定
義
対応関係を定義できません。JNDI API
に指定した名前のリソースがネーミング
サービスに存在しなければエラーとな
ります。
アプリケーションでlookupする時の名前
と、実際のJNDI名の対応関係を定義で
きます。
参照可能なオ
ブジェクト
・ リモート呼出し用
Enterprise
・ リモート呼出し用
JavaBean
JavaBean
- 87 -
Enterprise
項目
ネーミングサービス
環境ネーミングコンテキスト
・ JDBCリソース
・ JDBCリソース
・ JMS接続ファクトリ
・ JavaMailセッション
・ コネクタリソース
・ JMS接続ファクトリ
・ カスタムリソース
・ コネクタリソース
・ 外部リソース
・ カスタムリソース
・ JMS送信先
・ 外部リソース
・ 管理オブジェクトリソース
・ JMS送信先
・ 管理オブジェクトリソース
・ JPAエンティティマネージャファクト
リ
・ コンテナ管理のJPA エンティティマ
ネージャ
・ アノテーションに注入された情報
・ アプリケーション環境エントリ
・ ロ ー カ ル 呼 出 し 用 Enterprise
JavaBean
・ URL接続ファクトリ
・ UserTransaction
・ TransactionSynchronizationRegist
ry
・ ORB
・ HandleDelegate
・ EJBタイマーサービス
・ EJBコンテキスト
2.13.4 他ネーミングサービス連携機能
IJServerクラスタのJNDIサービスの設定に、外部ネーミングサービスURLとして他サーバーインスタンスのホスト名とIIOP
リスナーポート番号を指定できます。この指定により、他サーバーインスタンスで運用されているEnterprise JavaBeansを
呼び出す場合においてもJNDI名を指定するのみで呼び出すことが可能となります。この機能を他ネーミングサービス連
携機能と呼びます。外部ネーミングサービスURLに指定するホスト名とIIOPリスナーポート番号にEJBディスパッチャを運
用するサーバーインスタンスのIIOPリスナー情報を指定することで、別のサーバーインスタンスのEJBアプリケーションを
呼び出す場合においてもEJBディスパッチ機能によるロードバランスが可能となります。詳細な定義方法については、
「6.4.2 JNDIサービスの定義項目」を参照してください。
他ネーミングサービス連携機能利用して、Enterprise JavaBeans以外(JDBC、JMS、コネクタ等)のリソースも外部のネーミ
ングサービスから取得できます。
他ネーミングサービス連携機能を使用しない場合
・ クライアント環境からEnterprise JavaBeansを呼び出す場合
クライアント環境でJNDIを使用してEnterprise JavaBeansを呼び出す場合、エンドポイントに指定した接続先のサー
バーインスタンスのネーミングサービスからEnterprise JavaBeansのオブジェクトリファレンスを取得して呼び出します。
このため、クライアント環境では必ず他サーバーインスタンスで運用されているEnterprise JavaBeansを呼び出すため、
他ネーミングサービス連携機能を使用する必要がありません。
- 88 -
・ サーバーインスタンスからEnterprise JavaBeansを呼び出す場合
サーバーインスタンスでJNDIを使用してEnterprise JavaBeansを呼び出す場合、単にJNDI名を指定すると同一サー
バーインスタンスのネーミングサービスからオブジェクトリファレンスを取得してアクセスするため、同一サーバーイン
スタンスで運用されているEnterprise JavaBeansしかアクセスできません。他サーバーインスタンスのEnterprise JavaBeans
にアクセスする場合、deployment descriptorのEJB参照名に対してInterstage deployment descriptorファイルのJNDI名
を指定し、Enterprise JavaBeansが動作しているサーバーインスタンスのホスト名とポート番号をINS形式で指定する
方法があります。しかし、この場合にはサーバーインスタンスのホスト名やポート番号が変更になると、すべてのInterstage
deployment descriptorファイルの指定を変更して再配備する必要があります。
2.13.5 オブジェクトリファレンスのキャッシュ機能
他サーバーインスタンスから取得したオブジェクトリファレンスを、キャッシュして再利用する機能を提供します。同名の
JNDI名でJNDIネーミングサービスにアクセスされた場合には、他サーバーインスタンスにアクセスすることなくキャッシュ
されたオブジェクトリファレンスを返却することで、性能良くサーバーインスタンス間の連携を可能とします。キャッシュした
サーバーインスタンスが再起動されるまでキャッシュは保持されます。
IJServerクラスタにおいては、他ネーミングサービス連携機能と合わせて利用することで、他サーバーインスタンスと連携
する場合においても、性能良く処理することが可能となります。
また、本機能はクライアントアプリケーションにおいても利用可能です。
注意
・ Enterprise JavaBeans以外(JDBC、JMS、コネクタ等)のリソースもキャッシュされます。
・ 以下にサーバーインスタンスへの各接続方法と接続先のサーバーインスタンスに設定されたロードバランス方式に
よって、IJServerクラスタ内に複数サーバーインスタンスが存在した場合に各サーバーインスタンスにロードバランスさ
れるかどうかについて説明します。○の組み合わせはロードバランスされますが、×の組み合わせはロードバランス
されません。
接続方法
オブジェクトリファレ
ンスのキャッシュ
ロードバランス方式の指定
ロードバランス機能 EJBディスパッチャ グループ管理サー
を使用しない
によるロードバラン ビスによるロードバ
ランス
ス
クライアントにエンドポイント
を指定して接続する場合
無効
×
○
○
有効
×
○
×(※1)
Interstage deployment
descriptorのEJB参照名
(<ejb-ref>タグ)に対してINS
形式でサーバーインスタン
スのホスト名とIIOPリスナー
無効
×
○
×(※2)
有効
×
○
×(※2)
- 89 -
接続方法
オブジェクトリファレ
ンスのキャッシュ
ロードバランス方式の指定
ロードバランス機能 EJBディスパッチャ グループ管理サー
を使用しない
によるロードバラン ビスによるロードバ
ランス
ス
のポート番号と合わせて
JNDI名を指定する場合
他ネーミングサービス連携
機能を使用する場合
無効
×
○
×(※2)
有効
×
○
×(※2)
※1)グループ管理サービスによるロードバランスでは、lookupメソッドを実行するたびに接続先のサーバーインスタ
ンスを変更し、オブジェクトリファレンスを取得しなおすことでロードバランスを実現しています。このため、一度取得し
たオブジェクトリファレンスを再利用すると、ロードバランスされなくなるため、本機能は使用しないでください。
※2)グループ管理サービスに対する問い合わせは行われません。指定した接続先に先頭から順番にアクセスし、ア
クセスできたサーバーインスタンスのEnterprise JavaBeansを呼び出そうとします。このため、ロードバランスが行われ
ません。
・ オブジェクトリファレンスのキャッシュは以下の場合には利用しないでください。
条件
説明
参照するEnterprise
JavaBeansまたは各種リソース
を再配備もしくは配備解除す
る場合
オブジェクトリファレンスのキャッシュ機能を使用した場合、サー
バーインスタンスが停止するまでキャッシュが保持されます。こ
のため、参照するEnterprise JavaBeansまたは各種リソースが再
配備や配備解除されても、キャッシュが保持されるため不整合
が発生する場合があります。
外部ネーミングサービスの
URLを更新する場合
オブジェクトリファレンスのキャッシュ機能を使用した場合、サー
バーインスタンスが停止するまでキャッシュが保持されます。
外部ネーミングサービスのURLが別のURLに修正しても、以前
設定した外部ネーミングサービスのURLから取得してキャッシュ
されたORが返される不整合が発生する場合があります。
2.14 トランザクション制御
Java EEコンポーネントで使用できるトランザクションには以下の種類があります。
・ JTAを使用したトランザクション管理機能
- ローカルトランザクション
- グローバルトランザクション
・ リソースマネージャが提供するトランザクション管理機能
- リソースマネージャのトランザクション
JTAを使用して制御するトランザクションをJTAトランザクションと呼びます。JTAトランザクションは運用形態によりローカ
ルトランザクションとグローバルトランザクションに分かれます。詳細は、「2.14.1 ローカルトランザクションとグローバルトラ
ンザクション」を参照してください。
また、対象となるリソースマネージャが提供するトランザクション管理機能(例えばリソースマネージャがJDBCの場合、
java.sql.Connectionインタフェースのcommitメソッド)を直接使用することもできます。しかし、リソースマネージャのトランザ
クションを使用した場合には、本章で説明する機能は使用できません。
2.14.1 ローカルトランザクションとグローバルトランザクション
JTAトランザクションには、ローカルトランザクションとグローバルトランザクションが存在します。複数のリソースに対する処
理の一貫性を保証するには、グローバルトランザクションを使用する必要があります。しかし、2フェーズコミットプロトコル
- 90 -
による性能オーバーヘッドがかかるため、できる限り単一のリソースだけを使用するように設計して、ローカルトランザク
ションを使用することをお勧めします。
ローカルトランザクション
ローカルトランザクションには、1つのリソースだけが含まれます。トランザクションの有効範囲は、リソース自体でロー
カルに管理されます。ローカルトランザクションでは、1フェーズコミットプロトコルが使用されます。また、ローカルトラ
ンザクションの場合、1つのプロセス内でトランザクション制御されることを必要とします。
グローバルトランザクション
グローバルトランザクションでは、トランザクション内に複数のリソースが登録できます。例えば、グローバルトランザク
ションは、2つのデータベースを作業範囲とする場合に使用します。また、グローバルトランザクションの場合、複数の
プロセス間でトランザクション制御できます。
グローバルトランザクションでは、2フェーズコミットプロトコルが使用されます。
ローカルトランザクションで動作する条件
ローカルトランザクションは1つの非XAリソースだけを含んでおり、トランザクションに参加するJava EEコンポーネントがす
べて1つのプロセス内で実行されることを必要とします。1トランザクション範囲内で複数の非XAリソースが使用された場合、
トランザクションはエラーとなります。
JDBCリソースが非XAリソースとして扱われる条件は以下です。
・ JDBC接続プールの定義で、指定したDataSourceクラスがjavax.sql.XADataSourceインタフェースを実装していない
場合
・ JDBC接続プールの定義で、リソースタイプにjavax.sql.XADataSource以外が指定された場合、またはリソースタイプ
が定義されなかった場合
トランザクション内における非XAリソースの複数利用
トランザクション内で非XAリソースを複数利用可能とするmulti-nonXA-only-supportedプロパティオプションを提供し
ます。
ただし、本機能を使用した場合、トランザクション内で非XAリソースを複数利用した場合においても1フェーズコミット
で処理されます。このため、各リソースアクセスにおけるトランザクションの整合性(原子性)が保たれない場合がありま
す。(正常にコミットされるリソースと、異常が発生してロールバックされるリソースが混在する場合があります。)
本オプションは、以下の理由などによりトランザクション内で非XAリソースを複数利用していた既存システムをJava EE
機能に移行する場合のみ利用してください。
- XAリソースの利用がサポートされていないデータベースを利用している。
- XAリソースを使用すると性能が悪いため、非XAリソースを利用している。
- XAリソースを使用してもインダウト状態となる場合があり、リカバリ処理が煩雑であるため、非XAリソースを利用し
ている。
グローバルトランザクションで動作する条件
複数のリソースを管理するトランザクションまたは複数のプロセス間でトランザクションを管理する場合は、グローバルトラ
ンザクションとなります。グローバルトランザクションは、use-last-agent-optimizationプロパティがtrueの場合(デフォルトは
true)、1つだけ非XAリソースを実行できます。それ以外の場合は、すべてXAである必要があります。use-last-agentoptimizationプロパティについては、「2.14.3 2フェーズコミットプロトコル」を参照してください。
トランザクション内で1つのXAリソースだけ使用した場合、リソース間の一貫性を保証する必要がないため1フェーズコミッ
トプロトコルで処理されます。それ以外は、2フェーズコミットプロトコルで動作します。
グローバルトランザクションの制御が必要なケース
同一トランザクション範囲内で以下のようなリソースアクセスが発生した場合に、グローバルトランザクションでの制御が必
要となります。
・ ケース1:複数のリソースマネージャにアクセスする場合
・ ケース2:メッセージの受信とリソースマネージャにアクセスする場合
・ ケース3:複数プロセス間でリソースマネージャにアクセスする場合
- 91 -
・ ケース4:クライアントでトランザクション管理する場合
ケース1:複数のリソースマネージャにアクセスする場合
複数のリソースマネージャに同一トランザクション範囲内でアクセスする場合、グローバルトランザクションでの制御が必
要となります。以下の例は、複数のデータベース(database A、database B、database C)が存在し、同一トランザクション範
囲内でXとYというJava EEコンポーネントから各データベースにアクセスする例です。
以下の例のようにJMSのキュー(queue A)とデータベース(database B,database C)に、同一トランザクション範囲内でXとY
というJava EEコンポーネントからアクセスした場合も同様です。
ケース2:メッセージの受信とリソースマネージャにアクセスする場合
メッセージの受信とリソースマネージャへのアクセスを同一トランザクション範囲内で行う場合、グローバルトランザクション
での制御が必要となります。以下の例は、キュー(queue A)からメッセージを受信し、同一トランザクション範囲内でXとい
うJava EEコンポーネントからデータベース(database B、database C)にアクセスする例です。
- 92 -
ケース3:複数プロセス間でリソースマネージャにアクセスする場合
複数のプロセス(IJServerクラスタ)で連携して同一トランザクション範囲内でリソースマネージャにアクセスする場合、グロー
バルトランザクションでの制御が必要となります。複数のリソースマネージャにアクセスしない場合においてもトランザクショ
ンを開始した状態で呼び出して別のプロセスでリソースマネージャにアクセスする場合には、グローバルトランザクション
での制御が必要となります。以下の例は、IJServerクラスタ1のXというJava EEコンポーネントからデータベース(database
A)にアクセスし、同一トランザクション範囲内でIJServerクラスタ2のYというJava EEコンポーネントからデータベース(database
B)にアクセスする例です。
ケース4:クライアントでトランザクション管理する場合
IJServerクラスタにアクセスするクライアントでトランザクションを開始し、そのトランザクション範囲内でリソースマネージャ
にアクセスする場合、グローバルトランザクションでの制御が必要となります。以下の例は、クライアントでトランザクション
を開始(begin)して、IJServerクラスタ1のXというJava EEコンポーネントからデータベース(database A)にアクセスし、同一ト
ランザクション範囲内でIJServerクラスタ2のYというJava EEコンポーネントからデータベース(database B)にアクセスする例
です。
- 93 -
注意
・ トランザクション処理は非常に負荷のかかる制御が必要となるため、できる限りサーバ側でトランザクション処理する
ように設計してください。
・ 以下のケースの場合、トランザクションが開始された状態で呼び出されたプロセスでは、トランザクションを開始したプ
ロセスに対してトランザクションに参加したことをIIOP通信により通知します。これによりトランザクションマネージャに
対するトランザクションの完了要求(コミットもしくはロールバック)が実行されると、トランザクションに参加している各プ
ロセスにもトランザクションの完了要求が通知されます。
- 複数プロセス間でリソースマネージャにアクセスする場合
- クライアントでトランザクション管理する場合
このため、上記のケースではトランザクション制御を考慮してIIOP通信に関する各種設定をチューニングする必要が
あります。サーバーインスタンス間でトランザクションを連携する場合、トランザクションを開始して呼び出すサーバー
インスタンスのスレッドプールの最大プールサイズを、トランザクションを開始するサーバーインスタンスのスレッドプー
ルの最大プールサイズに加算して設定してください。最大プールサイズが不足していると、業務処理で利用するス
レッドがスレッドプールを占有し、トランザクションの通知が実行できずに無応答状態となる場合があります。
2.14.2 トランザクションの制御方法
Java EEコンポーネントは、JTAを使用してトランザクション制御を行うことができます。JTAを使用してトランザクション制御
する方法には、以下の2つがあります。
・ javax.transaction.UserTransactionインタフェース、またはjavax.transaction.TransactionSynchronizationRegistryインタ
フェースを使用して、Java EEコンポーネント自身がトランザクションの制御をする。
・ Container-Managed Transactionにより、EJBコンテナにトランザクション制御を任せる。
WebアプリケーションやクライアントアプリケーションでJTAトランザクションを制御するには、環境ネーミングコンテキストを
利 用 し て ト ラ ン ザ ク シ ョ ン マ ネ ー ジ ャ (javax.transaction.UserTransaction ま た は
javax.transaction.TransactionSynchronizationRegistry)を参照します。詳細は、「2.13.2 環境ネーミングコンテキスト
(Environment Naming Context)」を参照してください。トランザクションマネージャの利用方法については、JTS規約/JTA
規約を参照してください。
EJBアプリケーションでJTAトランザクションを制御するには、トランザクションの制御をコンテナで制御する方法とEJBアプ
リケーション自身で制御する方法があります。詳細は、EJB規約を参照してください。
・ コンテナで制御する場合
トランザクション種別にContainerを指定し、さらにトランザクションの制御方法をトランザクション属性に指定します。
・ EJBアプリケーションで制御する場合
トランザクション種別にBeanを指定し、javax.transaction.UserTransactionをjavax.ejb.EJBContextより取得してEJBアプ
リケーションで制御します。
- 94 -
2.14.3 2フェーズコミットプロトコル
2フェーズコミットプロトコルは、グローバルトランザクションに登録された複数のリソースの一貫性を保証するメカニズムで
す。2フェーズコミットプロトコルはコミット処理を2つのフェーズで実行して、一貫性を保証します。最初のフェーズは、準
備フェーズと呼ばれます。トランザクションマネージャは、各リソースマネージャに対してトランザクション作業をコミットする
準備ができているかどうかを確認します。作業をコミットできるリソースマネージャは、コミット可能であるということを通知し
ます。すべてのリソースマネージャがコミット可能であることを確認後に、リソースマネージャに対してコミット処理を行いま
す。準備フェーズでコミットできないリソースマネージャが存在する場合には、トランザクションをロールバックします。
トランザクションを要求するJava EEコンポーネントは、Interstageの2フェーズコミットメカニズムを意識する必要がありません。
Java EEコンポーネントは、ローカルトランザクションを使用する場合と同様のトランザクション制御を行うことで、2フェーズ
コミットの処理はコンテナが自動的に行います。
2フェーズコミットプロトコルでは、システム障害時に結果の原子性を保証するため、トランザクションマネージャはトランザ
クションの進捗状況を記録します。この進捗状況を記録するログをトランザクションログと呼びます。詳細は、「2.14.5 トラ
ンザクションログ」を参照してください。
Use Last Agent Optimization
トランザクションサービスでuse-last-agent-optimizationプロパティにtrueを指定した場合(デフォルトはtrue)、複数のリソー
スを使用した場合でも1つだけ非XAリソースを使用できます。トランザクションに登録されたXAリソースに対して準備フェー
ズを実行し、すべてのXAリソースからコミット可能であるという通知を受けると、トランザクションサービスは非XAリソース
に対して1フェーズコミットを実行します。非XAリソースに対する1フェーズコミットが成功した場合、XAリソースに対してコ
ミットフェーズを実行します。非XAリソースに対する1フェーズコミットが失敗した場合、XAリソースに対してロールバック
されます。
詳細は、「6.8.13 トランザクションサービスの定義項目」を参照してください。また、トランザクションサービスの設定はasadmin
コマンドでも設定できます。
注意
複数プロセス間でトランザクション連携する場合、Use Last Agent Optimizationは無効になりますので、すべてのリソース
はXAリソースを使用してください。
インダウトトランザクション
2フェーズコミットプロトコルでは、すべてのリソースマネージャがコミット可能であることを確認後に、リソースマネージャに
対してコミット処理を行うため、複数のリソースを使った場合の原子性が向上します。しかし、準備フェーズですべてのリ
ソースマネージャがコミット可能であることを通知した後に、以下の理由によりコミットフェーズが失敗する可能性があります。
この場合、コミットフェーズが失敗したトランザクションをインダウトトランザクションと呼びます。
・ サーバマシンがクラッシュした。
・ リソースマネージャとのネットワーク接続が切断された。
・ 使用している製品で予期せぬ異常が発生した。
インダウトトランザクションは、以下のどちらかで回復処理を行います。
自動回復
IJServerクラスタ起動時にインダウト状態のトランザクションに対して自動的に回復処理を実行します。自動的に回復
処理を実行する場合には、Interstage Java EE管理コンソールのトランザクションサービスの設定で[再起動時]の項目
をチェックしてください。次回IJServerクラスタ起動時から有効になります。
asadminコマンドを使用する場合は、setサブコマンドでautomatic-recoveryをtrueに設定します。
トランザクションサービス定義の詳細は、「6.8.13 トランザクションサービスの定義項目」を参照してください。
手動回復
「一般情報」の画面で、[トランザクションの回復]ボタンをクリックした場合、トランザクションマネージャが管理している
インダウトトランザクションの回復処理を実行します。asadminコマンドのrecover-transactionsサブコマンドでも回復処理
を実行できます。
- 95 -
また、グローバルトランザクションをサポートする各データベースでは、インダウトトランザクションを手動で回復する手
段について説明されています。使用するデータベースのマニュアルを参照してください。
注意
手動回復処理では、サーバーインスタンスが起動状態で発生したインダウトトランザクションを回復します。
サーバーインスタンスが再起動された場合、再起動前に発生したインダウトトランザクションは回復されません。再起
動前に発生したインダウトトランザクションを回復したい場合は、自動回復処理を使用してください。
回復処理が実行されると、トランザクションマネージャは登録されているXAリソースに対してrecoverメソッドを呼び出し、
インダウト状態のリソースに対してコミットまたはロールバック処理を実行してトランザクションを回復します。
2.14.4 トランザクションのリソース管理
グローバルトランザクションを使用して複数のプロセス間でトランザクション制御する場合、トランザクションを開始したプロ
セスでトランザクションIDや各サーバのリソースを管理します。リソースを管理するサーバは、アプリケーションからトランザ
クションのコミット要求を受け付けると各サーバにIIOP通信してコミット要求を送信します。
2.14.5 トランザクションログ
システム障害時に結果の原子性を保証するため、トランザクションマネージャはトランザクションの進捗状況をトランザク
ションログに記録します。システム異常が発生した場合、トランザクションマネージャはトランザクションログの情報を元に、
異常が発生したトランザクションの回復処理を行うことができます。
トランザクションログは、ファイルシステムまたはデータベースに格納できます(注)。デフォルトでは、ファイルシステムに格
納されます。トランザクションの情報には業務データの情報が格納される場合があるため、トランザクションログは暗号化
されます。このため、目視で内容を確認できません。
注)本バージョンでは、トランザクションログをデータベースに格納する方法はサポートしていません。
以下について説明します。
・ トランザクションログをファイルシステムに格納する場合
・ トランザクションログをデータベースに格納する場合(未サポート)
・ トランザクションログを無効にする場合
トランザクションログをファイルシステムに格納する場合
デフォルトでは、トランザクションログはファイルシステムに格納されます。トランザクションログは、任意のディレクトリへ出
力できます。トランザクションログの格納ディレクトリは、トランザクションサービス定義の「トランザクションログの位置(tx-logdir)」に定義します。トランザクションサービス定義の詳細は、「6.8.13 トランザクションサービスの定義項目」を参照してく
ださい。
トランザクションログをデータベースに格納する場合
本バージョンでは、トランザクションログをデータベースに格納する方法はサポートしていません。
トランザクションログを無効にする場合
トランザクションログを無効にする場合、トランザクションサービス定義に以下を設定してください。ただし、トランザクション
ログを無効にすると、システム障害の発生、または運用操作によりサーバーインスタンスが再起動された場合、再起動前
に発生したトランザクションの回復処理を行うことができません。このため、無効にすることは推奨しません。処理性能を
重視し、システム障害時には異常発生時の処理をリトライできる場合だけトランザクションログを無効にしてください。トラ
ンザクションサービス定義項目の詳細は、「6.8.13 トランザクションサービスの定義項目」を参照してください。
1. 追加プロパティでdisable-distributed-transaction-loggingプロパティにtrueを指定してください。
- 96 -
2. 「再起動時」の設定(asadminコマンドを使用する場合、automatic-recovery)を無効にしてください。
2.14.6 トランザクションの監視と凍結機能
トランザクションの監視機能を有効にした場合、現在実行中のトランザクションの状態を監視できます。Interstage Java EE
管理コンソールの「監視サービス」の画面で、トランザクションサービスの監視レベルをLOWまたはHIGHに設定します。
または、asadminコマンドのsetサブコマンドを使用してconfigs.config.monitoring-serviceの定義項目でトランザクションサー
ビスの監視レベルをLOWまたはHIGHに指定します。トランザクションの監視機能を無効にする場合は、OFFを指定します。
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadminコマンド」
-「setサブコマンド」を参照してください。
監視レベルを設定した場合、トランザクションの以下の状態を確認できます。
トランザクションID
トランザクションのトランザクションIDが表示されます。
状態
トランザクションの状態として以下のいずれかが表示されます。
- Active : 実行中の状態
- MarkedRollback : ロールバックにマークされている状態
- Prepared : 準備フェーズが完了した状態
- UnKnown : 状態が不明の状態
- Preparing : 準備フェーズ実行中の状態
- Committing : コミット実行中の状態
- RollingBack : ロールバック中の状態
経過時間
トランザクションが開始されてからの経過時間がミリ秒で表示されます。
コンポーネント名
トランザクションを開始したクラス名がフルパッケージ名で表示されます。
注意
トランザクションを開始したアプリケーションがStateful Session Beanでjava.io.Serializableを実装していない場合、コン
ポーネント名は「パッケージ名._クラス名_Serializable」の形式で出力されます。
リソース名
トランザクションに参加しているリソース名が表示されます。
トランザクションを監視している場合、異常が発生した実行中のトランザクションを以下の手順でロールバックにマークで
きます。ロールバックにマークされたトランザクションは、トランザクション終了時に必ずロールバックされます。
1. 凍結
2. ロールバックのマーク
3. 凍結解除
凍結/凍結解除は必須ではありませんが、操作中にトランザクションが終了することを防ぐため、凍結/凍結解除することを
お勧めします。以下にInterstage Java EE管理コンソールを使用した各操作を説明します。コマンドを使用した操作につ
いては、「リファレンスマニュアル(コマンド編)」-「asadmin」を参照してください。
- 97 -
1. 凍結
監視の[トランザクション]画面で、[凍結]をクリックします。凍結が実行されるとすべてのアクティブトランザクションが
一時的に停止します。また、トランザクションマネージャは、新しいトランザクションを開始しません。
2. ロールバックのマーク
トランザクションIDの横にあるチェックボックスにチェックマークを付け、「ロールバック」をクリックします。
3. 凍結解除
[凍結解除]をクリックして、一時的に停止していたトランザクションを続行します。
2.15 接続プール
接続プールとは、データベースなどに接続する場合に、要求されるたびに接続を作成するのではなく、接続をプーリング
(保持)して再利用するという機能です。このため、接続プールを使用することにより、同一ユーザからのアプリケーション
から接続する回数が軽減し、接続を確立するアプリケーションの負荷も軽減されます。
ネーミングサービスに登録された以下のリソースに対して接続要求した場合に接続がプーリングされます。
・ コネクタリソース
・ JDBCリソース
・ JMS接続ファクトリ
データベースなどから実際に獲得した接続のことを物理接続と呼び、接続プールで再利用される接続のことを論理接続
と呼びます。
接続プールを使用する場合、通常はInterstage側で接続がプーリングされます。接続プールは各サーバーインスタンス
上に生成されます。接続プールの管理はInterstageが行うため、接続プールのチューニング機能が使用できます。また、
接続の使用状況を監視できます。
アプリケーションが獲得したConnectionオブジェクトに対してcloseメソッドを実行すると、物理接続に対して削除要求(close
メソッドの実行)を行わずに接続プールに返却されて再利用されます。以下の図はJDBCリソースを使用してデータベー
スに接続した場合の例です。
JDB接続プールの無効化
JDBC接続プールの場合、使用するJDBCドライバ側で接続プールする機能を提供している場合があります。このため、
Interstage側のJDBC接続プールを無効とすることもできます。この場合、接続プールのチューニング機能や監視機能が
一部利用できません。詳細は各機能の説明を参照してください。
JDBC接続プールを無効とすると、アプリケーションが獲得したConnectionオブジェクトに対してcloseメソッドを実行すると、
すぐに物理接続に対して削除要求(closeメソッドの実行)を行います。削除要求された接続をどのように扱うかについては、
JDBCドライバ側の仕様に依存します。以下の図はJDBCリソースを使用してデータベースに接続した場合の例です。
- 98 -
接続プールの生成単位
接続プールは、各サーバーインスタンスにそれぞれ生成されます。以下の図はJDBCリソースを使用してデータベースに
接続した場合の例です。
- 99 -
アプリケーションがConnectionオブジェクトを使用していない間、接続プールにプーリングされている状態になります。プー
リングされているコネクションは、以下のタイミングで破棄されます。
・ アイドルタイムアウトが発生した時
・ 接続検証に失敗した時
・ サーバーインスタンスが停止した時
2.16 データベース連携/JDBC
Java EEコンポーネントはデータベースにアクセスする場合、JDBC APIを使用します。以下にデータベース連携の機能
について説明します。
JDBCリソース
アプリケーションからアクセスする各データベース用にJDBCリソース(データソースと呼ぶ場合もあります)を定義します。
一意のJNDI名を指定してJDBCリソースを定義し、アプリケーションはJNDI APIを使用してJDBCリソースを取得します。
JDBCリソースに対して、データベースへの処理要求を実行できます。
JDBC接続プール
JDBC接続プールは、再利用可能な接続を管理します。データベースに対して新規に接続を確立する場合、接続に時
間がかかります。このため、Interstageでは接続をプールして再利用することで性能を向上します。アプリケーションから接
続要求を行った場合、接続はプールから獲得します。アプリケーションから接続の解放要求を行った場合、接続はプー
ルに返却されます。
しかし、JDBCドライバ側もプーリング機能を提供する可能性があります。JDBCドライバ側のプーリング機能を有効にする
と、Interstage側のプーリング機能と冗長に動作します。JDBCドライバ側のプーリング機能を有効にする場合は、Interstage
側のプーリング機能を無効にしてください。
Interstage側のプーリング機能が無効の場合、アプリケーションから接続の解放要求を行うときに、接続はInterstage側の
接続プールにキャッシュされずに、直接削除されます。アプリケーションから接続要求を行うときに、必ずJDBCドライバを
利用して接続を再取得します。
JDBCリソースを定義する際にJDBC接続プールを指定します。複数のJDBCリソースが1つのJDBC接続プールを共有で
きます。
JDBCリソースとJDBC接続プールの動作
アプリケーションはデータベースにアクセスする場合、まずはJDBCリソースから接続を取得する必要があります。以下に
アプリケーションからデータベースにアクセスする方法と、JDBCリソースとJDBC接続プールの動作について説明します。
Interstage側のプーリング機能が有効・無効の場合でJDBC接続プールの動作が異なります。
1. JNDI APIを実行して、アクセスするデータベース用に定義されたJDBCリソース(データソース)を取得します。JDBC
リソースを取得する際には、JDBCリソース定義時に指定したJNDI名を指定します。
2. JDBCリソースからデータベースの接続(java.sql.Connectionオブジェクト)を獲得します。
a. Interstage側のプーリング機能が有効の場合
Interstageは、内部的に同一のユーザ名とパスワードでキャッシュされた物理接続を接続プールから検索し
て返却します。プールに接続が存在しなかった場合、データベースに対して新たに物理接続を獲得します。
最大プールサイズなどはチューニング可能です。チューニング方法については、「チューニングガイド」-
「データベース連携環境のチューニング」を参照してください。
b. Interstage側のプーリング機能が無効の場合
データベースに対して新たに物理接続を獲得します。
3. アプリケーションはJDBC APIを使用して、獲得された接続に対して検索、更新、挿入処理を実行します。JDBCド
ライバはアプリケーションの処理要求を受け付けて、データベースに処理を要求します。
- 100 -
4. データベースに対する処理が完了したら接続を解放します。Interstageは、アプリケーションで解放された接続を接
続プールに返却します。
a. Interstage側のプーリング機能が有効の場合
接続は接続プールにキャッシュされます。一度接続プールに返却された接続は、次のアプリケーションで利
用可能となります。
b. Interstage側のプーリング機能が無効の場合
接続は接続プールにキャッシュされずに、直接削除されます。
データベースと連携するアプリケーションの作成方法の詳細は、「3.1.8 データベース連携アプリケーションの作成方法」
を参照してください。
2.17 データベース連携時に使用できる時間監視機能
データベース連携時に使用できる時間監視機能には、以下の機能があります。各設定の定義方法については、「チュー
ニングガイド」-「データベース連携環境のチューニング」を参照してください。
時間監視機能のパラメタ
・ 最大待ち時間
・ アイドルタイムアウト
・ 文のタイムアウト
・ リークタイムアウト
Java EEコンポーネントがデータソースに対して接続要求(DataSourceオブジェクトに対するgetConnection()メソッド)を実
行して取得する接続を論理接続と呼びます。論理接続は、Interstage側のプーリング機能が有効の場合、Java EEコンポー
ネントが接続を解放(Connectionオブジェクトに対するclose()メソッドの実行)しても接続プールに返却されるだけで削除さ
れません。論理接続に対し、Interstageでは、JDBCドライバ側から取得した接続を物理接続と呼びます。
2.18 JMSの提供機能
Interstage JMSが提供している以下の機能について説明します。
・ メッセージングモデル
・ メッセージング機能
・ メッセージブローカ機能
メッセージングモデル
Interstage JMSでは、メッセージングモデルとして、以下のモデルをサポートしています。
Publish/Subscribeメッセージングモデル(1対nメッセージングモデル)
複数の受信者に対して同一のメッセージを配信する1対nのメッセージングモデルです。
- 複数の受信者に対して同一のメッセージを配信
メッセージブローカを介して、プロデューサとコンシューマが連携します。
- Durable Subscription
アプリケーションがアクティブではない間に送信されたメッセージを、アプリケーションがアクティブになった後に
受信できます。
- コンシューマの形態として、待機型とMessage Listenerを使用した起動型をサポート
- メッセージの優先度および生存時間の制御
- 101 -
Publish/Subscribeメッセージングモデルを使用した場合の効果を以下に示します。
- 複数のコンシューマに配信
プロデューサは、1つの宛先にメッセージを送信することにより、接続しているコンシューマの数を意識することなく、
複数のコンシューマに同一のメッセージを配信できます。
- 運用変更によるアプリケーションへの影響が少ない
コンシューマの増減に対して、プロデューサを変更する必要はありません。
Point-To-Pointメッセージングモデル(1対1メッセージングモデル)
特定の受信者に対してメッセージを配信する1対1のメッセージングモデルです。
- 1拠点から1拠点への非同期通信
メッセージブローカを介して、プロデューサとコンシューマが連携します。
複数のコンシューマが接続している場合、メッセージを受信できるのは1つのコンシューマだけです。メッセージは、
自動的に振り分けられます。
- コンシューマの形態として、待機型とMessage Listenerを使用した起動型をサポート
- メッセージの優先度および生存時間の制御
Point-To-Pointメッセージングモデルを使用した場合の効果を以下に示します。
- 運用性向上
Publish/Subscribeメッセージングモデルでは、コンシューマの生成前に配信されたメッセージは破棄されます。
しかし、Point-To-Pointメッセージングモデルでは、コンシューマの状態にかかわらず配信されたメッセージが物
理格納先に蓄積され、コンシューマを生成した後に蓄積されたメッセージを受信できます。
メッセージング機能
Interstage JMSのメッセージング機能として、以下の機能をサポートしています。
メッセージ保証
メッセージの不揮発化機能、およびローカルトランザクション機能により、メッセージの重複/欠落を防止します。グロー
バルトランザクション機能により、メッセージの送受信とDB更新などの処理と整合性を保証します。
メッセージセレクタ機能
メッセージセレクタ機能は、プロデューサから送られる多様なメッセージの中から、コンシューマが受信したいメッセー
ジを指定して受け取ることができる機能です。
プロデューサでは、メッセージを識別/分類するための情報をメッセージのプロパティフィールドに設定し、メッセージ
を送信します。
コンシューマでは、受信開始時に受信したいメッセージを特定するための条件式を指定します。以降、コンシューマは、
条件式に一致したプロパティを持つメッセージだけを受信します。
Publish/Subscribeメッセージングモデルでは、条件式に一致しないメッセージは破棄されます。Point-To-Pointメッセー
ジングモデルでは、条件式に一致しないメッセージは読み飛ばされます。
メッセージセレクタ機能を使用した場合の効果を以下に示します。
- コンシューマが興味のある情報だけを取得可能
プロデューサが送信したすべてのメッセージを受信することなく、コンシューマが興味のあるメッセージだけを受
信でき、運用性が向上します。
- 102 -
例
プロデューサが国際/社会/政治/経済/天気予報/スポーツ/芸能などのジャンルのニュースを送信する場合、ある
コンシューマは、天気予報/スポーツなどの特定の情報だけを受信できます。
キューブラウザ機能
キューブラウザ機能は、アプリケーションがキュー(物理格納先)に蓄積されているメッセージをブラウジングするため
の機能です。
ブラウジング中にキューからメッセージを取り出しても、メッセージは削除されません。
キューブラウザ機能を使用することにより、キューの内容を表示する機能を持ったアプリケーションの開発が容易にな
ります。
本機能は、Point-To-Pointメッセージングモデル(1対1メッセージングモデル)において使用できます。
メッセージブローカ機能
Interstage JMSでは、メッセージブローカを使用して、非同期メッセージ通信を実現しています。詳細については、「2.18.1
メッセージブローカ」以降の説明を参照してください。
2.18.1 メッセージブローカ
メッセージブローカは、1つ以上のメッセージ格納領域(以降、物理格納先)を管理します。物理格納先は、システム管理
者が事前に作成することも、初回アクセス時に自動作成することもできます。
その他の機能として、メッセージブローカには、JMSクライアントとのコネクションを管理する機能などもあります。メッセー
ジブローカの機能については、「2.18.2 メッセージブローカの機能」を参照してください。
システム管理者は、物理格納先の作成、JMSクライアントとのコネクション管理の動作定義、および起動/停止などのメッ
セージブローカの運用を行います。また、asadminコマンドを使用して、JMSクライアントがJNDI経由で獲得する
ConnectionFactory(JMS接続ファクトリ)やDestination(JMS送信先リソース)を作成します。asadminコマンドの詳細につい
ては、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「asadmin」を参照してください。
ConnectionFactory
メッセージブローカとのコネクション作成に必要な情報(動作ホスト、認証情報など)や接続情報を定義します。
Destination
メッセージブローカ内部で動作するQueueまたはTopicを特定するアドレス情報を定義します。
JMSクライアントアプリケーションは、JNDI経由で定義されたConnectionFactoryやDestinationを獲得し、メッセージブロー
カと接続した後、メッセージを送受信します。
メッセージブローカの運用形態
メッセージブローカとJMSクライアントは、同一システム(マシン)上でも、異なるシステム(マシン)上でも動作させることがで
きます。また、メッセージブローカは、1つのシステム(マシン)上で、複数動作させることもできます。
例
JMSクライアントと異なるシステム動作させる例を以下に示します。
- 103 -
2.18.2 メッセージブローカの機能
メッセージブローカには、以下の機能があります。
物理格納先の管理
メッセージブローカは、JMSクライアントからのメッセージ送信要求を受けて、メッセージを格納する領域(物理格納
先)を管理します。
接続サービス
接続サービスは、JMSクライアントからのコネクションを管理する機能です。
ポートマッパー
メッセージブローカは、JMSクライアントからのコネクション要求を代表ポートで受け付け、実際にメッセージ送受信す
るコネクションを、代表ポート番号とは異なるポート番号を使用して作成します。本機能を、ポートマッパーと呼びます。
ルーティングサービス
ルーティングサービスは、メッセージブローカのパフォーマンスと安定性を維持するため、メッセージの流量などを制
限する機能です。
持続サービス
メッセージブローカがなんらかの理由で停止した場合、メッセージブローカ復旧時にメッセージの配信処理の状態を
復旧する必要があります。この復旧を実行する機能を持続サービスと呼びます。
持続サービスは、メッセージの復元、永続サブスクリプション(Durable Subscription)の再作成、トランザクションのロー
ルバックを実行します。
事前配信
コンシューマがメッセージブローカに接続すると、メッセージ受信処理を開始する前にメッセージブローカがコンシュー
マにメッセージを配信する機能です。
2.18.3 物理格納先の管理
物理格納先は、JMSクライアントが送信したメッセージを格納する領域です。
物理格納先の種類には、Point-to-Point(1対1)形態のQueueと、Publish/Subscribe(1対多)形態のTopicの2種類が存在し
ます。
物理格納先では、以下の管理を行います。
- 104 -
・ 物理格納先の自動生成
・ 物理格納先の作成
・ 物理格納先の一覧表示
・ 物理格納先情報の表示
・ 物理格納先プロパティの更新
・ 物理格納先の停止/再開
・ 物理格納先の蓄積メッセージの破棄
・ 物理格納先の削除
物理格納先の動作は、生成時と運用中に設定できます。設定可能な項目と設定方法について以下に説明します。
物理格納先の自動生成
JMSクライアントが存在していない物理格納先にアクセスした場合、メッセージブローカは自動的に新しい物理格納先を
作成します。
物理格納先の自動生成は、imqbrokerdコマンドのオプション、またはimqcmdコマンドのupdate bkrサブコマンドを使用し
て行います。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqbrokerd」
/「imqcmd」を参照してください。
物理格納先の自動生成に関するプロパティの詳細については、「6.7.3 物理格納先自動生成に関するプロパティ」を参
照してください。
注意
・ 本機能は、定義ミスにより誤って意図しない物理格納先にメッセージが送受信される場合があります。このため、本
運用時には、物理格納先の自動作成プロパティにfalseを設定して運用してください。
・ 自動生成された物理格納先は、アクセスがなくなると自動削除されます。
物理格納先の自動作成は、imqbrokerdコマンドに、以下の例に示す2つのプロパティを指定してメッセージブローカを起
動することにより、QueueとTopicそれぞれに対して物理格納先の自動生成を抑止します。
例
物理格納先の自動生成を抑止する例
imqbrokerd -port 37676 -name brokertest -Dimq.autocreate.queue=false -Dimq.autocreate.topic=false
また、メッセージブローカ起動後も、imqcmdコマンドのupdate bkrサブコマンドを使用して、物理格納先の自動生成を抑
止するよう設定を変更します。
例
物理格納先の設定を変更する例
imqcmd update bkr -b localhost:37676 -o imq.autocreate.queue=false -o imq.autocreate.topic=false
- 105 -
物理格納先の作成
imqcmdコマンドのcreate dstサブコマンドを使用して、物理格納先を作成します。
例
ローカルホスト上で動作しているメッセージブローカに対して、JMSQueueという名前のQueueを作成する例
imqcmd create dst -b localhost:37676 -n JMSQueue -t q
デフォルトの設定を変更して作成するには、物理格納先の生成に関するプロパティを-oオプションで指定して作成します。
物理格納先の生成に関するプロパティの詳細については、「6.7.7 物理格納先の生成または更新に関するプロパティ」を
参照してください。
例
物理格納先の滞留メッセージの最大数を「100」に変更する例
imqcmd create dst -b localhost:37676 -n JMSQueue -t q -o maxNumMsgs=100
物理格納先の一覧表示
imqcmdコマンドのlist dstサブコマンドを使用して、物理格納先の一覧を表示します。
例
メッセージブローカの物理格納先の一覧を表示する例
imqcmd list dst -b localhost:37676
物理格納先情報の表示
imqcmdコマンドのquery dstサブコマンドを使用して、物理格納先に設定されているプロパティの情報を表示します。
例
物理格納先JMSQueueのプロパティの情報を表示する例
imqcmd query dst -b localhost:37676 -t q -n JMSQueue
物理格納先プロパティの更新
imqcmdコマンドのupdate dstサブコマンドを使用して、物理格納先に設定されているプロパティの情報を更新します。
物理格納先の更新に関するプロパティの詳細については、「6.7.7 物理格納先の生成または更新に関するプロパティ」を
参照してください。
例
物理格納先JMSQueueのプロパティ「maxNumMsgs」と「maxBytesPerMsg」を変更する例
imqcmd update dst -b localhost:37676 -t q -n JMSQueue -o maxNumMsgs=100 -o maxBytesPerMsg=100
- 106 -
物理格納先の停止/再開
imqcmdコマンドのpause dstサブコマンドを使用して、Producerから物理格納先JMSQueue、物理格納先JMSQueueから
Consumer、またはその両方のメッセージの配信を停止します。
例
物理格納先JMSQueueからConsumerへのメッセージの配信を停止する例
imqcmd pause dst -b localhost:37676 -t q -n JMSQueue -pst CONSUMERS
停止したメッセージの配信は、imqcmdコマンドのresume dstコマンドを使用して再開します。
例
物理格納先JMSQueueからConsumerへのメッセージ配信を再開する例
imqcmd resume dst -b localhost:37676 -t q -n JMSQueue
物理格納先の蓄積メッセージの破棄
imqcmdコマンドのpurge dstサブコマンドを使用して、物理格納先に格納されたすべてのメッセージを破棄します。
例
物理格納先JMSQueueに格納されたすべてのメッセージを破棄する例
imqcmd purge dst -b localhost:37676 -t q -n JMSQueue
物理格納先の削除
imqcmdコマンドのdestroy dstサブコマンドを使用して、物理格納先を削除します。
例
物理格納先JMSQueueを削除する例
imqcmd destroy dst -b localhost:37676 -t q -n JMSQueue
2.18.4 接続サービス
メッセージブローカは、接続サービスを使用してアプリケーションと、メッセージブローカの管理をサポートします。
メッセージブローカは、次に示す2つの接続サービスを提供します。
admin接続サービス
メッセージブローカの管理を実施します。
JMSが提供するコマンドからの要求を、TCPを介して受け付けます。
- 107 -
jms接続サービス
JMSのメッセージ配信処理を実施します。
クライアントアプリケーションからの送受信要求を、TCPを介して受け付けます。
スレッドプール管理
接続サービスは、複数のコネクションをサポートするため、マルチスレッドで動作します。これらの接続に必要なスレッドは、
ブローカにより、サービスごとに個別のスレッドプールに保存されます。
接続にスレッドが必要な場合に、その接続をサポートするサービスのスレッドプールにスレッドを追加します。
メッセージブローカ上でのスレッドプール管理のモデルには、以下の2種類があります。
専用モデル
メッセージブローカへのコネクションごとに、2つのスレッド(受付用と配信用)を作成します。これにより、JMSクライアン
ト数に対するコネクション数は、共有モデルよりも多く作成されるため、JMSクライアント数が制限されますが、パフォー
マンスは向上します。
共有モデル
メッセージ送受信は、共有スレッドによって処理されます。コネクションごとに専用スレッドが必要ないため、専用モデ
ルと比較してJMSクライアント数が増加しますが、スレッド管理に追加のオーバーヘッドが必要であるため、パフォー
マンスは低下します。
スレッドプール管理のモデルは、メッセージブローカ起動時に、接続サービスに関するプロパティのthreadpool_modelプ
ロパティで設定します。
スレッドプールでは、管理するスレッドの最小スレッド数と最大スレッド数を、接続サービスに関するプロパティのmin_threads
とmax_threadsプロパティで設定します。使用可能なスレッド数が設定した最小値を下回った場合、そのスレッドの解放と
同時にスレッドを終了してメモリリソースを節約します。最大数に達した場合は、スレッドが利用可能になるまで、新しい要
求は拒否されます。
参照
スレッドプールに関するプロパティの詳細については、「6.7.1 接続サービスに関するプロパティ」を参照してください。
2.18.5 ポートマッパー
ポートマッパーは、ポート番号を管理する機能です。クライアントは、利用可能なポート番号を知らなくても、ポートマッ
パーが動作する代表ポート番号へコネクション要求を発行することで、メッセージブローカとのコネクションを獲得できます。
ポートマッパーは、デフォルトで動的にポート番号を割り当てます。
メッセージブローカ起動時にポート番号を指定して割り当てることができます。
注意
静的にポート番号を割り当てた場合でも、各接続サービスを利用する場合は、ポートマッパーの代表ポート番号を使用
してください。
参照
ポートマッパーに関するプロパティの詳細については、「6.7.1 接続サービスに関するプロパティ」を参照してください。
2.18.6 ルーティングサービス
ルーティングサービスでは、メッセージブローカのパフォーマンスと安定性を向上させるために、以下の制御を行います。
- 108 -
システム全体のメッセージ制限
システム全体のメッセージは、以下を指定することで、メッセージブローカ全体の制限値を設定します。以下の値が制
限に達した場合、メッセージブローカは、保留メッセージが制限を下回るまで、新しいメッセージを拒否します。
- メッセージブローカが保持するメッセージの最大数(imq.system.max_count)
- メッセージが占有する最大合計バイト数(imq.system.max_size)
また、以下にも制限があります。
- 各メッセージの最大サイズ(imq.message.max_size)
- 期限切れメッセージの検出間隔(imq.message.expiration.interval)
特定の物理格納先へのメッセージ制限
特定の物理格納先へのメッセージには、以下の制限があります。
- 物理格納先で保持するメッセージの数とサイズ
- 作成可能なProducerとConsumerの数
- Consumerに単一の処理で配信可能なメッセージ数
メッセージブローカは、以下により、メモリ制限に対処するように設定できます。
- Producerによるメッセージの配信速度を遅くする。
- 新しい受信メッセージを拒否する。
- 最も古い既存のメッセージを破棄する。
- 優先度が最も低い既存のメッセージを破棄する。
これらの方法で破棄されるメッセージは、完全に破棄するのではなく、オプションでデッドメッセージキューに移動で
きます。
参照
これらのルーティングサービスに関するプロパティの詳細については、「6.7.2 ルーティングサービスに関するプロパティ」、
「6.7.3 物理格納先自動生成に関するプロパティ」、および「6.7.7 物理格納先の生成または更新に関するプロパティ」を
参照してください。
2.18.7 持続サービス
持続サービスは、メッセージや永続サブスクリプション(Durable Subscription)の情報などを、データストア(ファイル)に格
納し、システムダウン、アプリケーション異常、ネットワーク異常などのトラブルによりメッセージが消失することを防止する
サービスです。
ここでは、持続サービスの設定方法を説明します。
データストアの設定
デフォルトでは、パフォーマンスを高めるため、データストアに対して非同期の書込み操作を行っています。より高い信頼
性が必要な場合、メッセージブローカの起動時に、接続サービスに関するプロパティのimq.persist.file.sync.enabledプロ
パティを設定して、データストアへの書込みを同期的に行ってください。
データストアに関するプロパティの詳細については、「6.7.4 持続サービスに関するプロパティ」を参照してください。
また、メッセージブローカの起動時に、データストアを初期化(永続域に格納されているメッセージやDurable Subscription
の情報のクリア)してから起動することもできます。
詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqbrokerd」を参照してください。
- 109 -
2.18.8 高信頼機能
Interstage JMSは、以下の高信頼な機能を提供します。
・ 異常時のメッセージ退避
異常時のメッセージ退避
通常の処理または明示的な管理者による操作以外で、以下などの理由により、システムから破棄されるメッセージが存
在します。
・ 有効期限が切れた。
・ 保持可能なメッセージ上限を超えたため、物理格納先から破棄された。
・ 配信処理に失敗した。
上記のような理由でシステムから破棄されたメッセージをデッドメッセージと呼びます。
メッセージブローカは、起動時に自動的にデッドメッセージを配置するデッドメッセージキューを作成します。メッセージ
ブローカは、デッドメッセージをデッドメッセージキューに配置します。デッドメッセージキューには、「mq.sys.dmq」という
固有の物理格納先の名前が設定され、削除できません。また、デッドメッセージキューに明示的にメッセージを送信する
こともできません。
異常時のメッセージ退避機能の使用
異常時のメッセージ退避機能は、デフォルトで有効になっています。メッセージ退避機能の使用有無は、物理格納先プ
ロパティuseDMQで設定します。
物理格納先プロパティuseDMQの詳細については、「6.7.7 物理格納先の生成または更新に関するプロパティ」を参照し
てください。
例
異常時のメッセージ退避機能を使用しないように変更するコマンド実行例
imqcmd update dst -b localhost:37676 -n JMSQueue -t q -o useDMQ=false
デッドメッセージキューの管理
imqcmdコマンドを使用して、デッドメッセージキューを他の物理格納先と同じように管理できますが、以下の相違点があ
ります。
・ デッドメッセージキューの作成/削除を行うことはできません。
・ デッドメッセージキューのプロパティ省略値は、通常の物理格納先と異なります。
プロパティ
通常の物理格納先との差異
デッドメッセージ
キューの省略値
その他の物理格納先
の省略値
limitBehavior
FLOW_CONTROLは、サ
ポートされません。
REMOVE_OLDES
T
REJECT_NEWES
T
maxNumMsgs
-
1000
-1(無制限)
maxNumProduce
rs
変更できません。
0
100
maxTotalMsgByt
es
-
10M
-1(無制限)
useDMQ
trueは、サポートされません。 false
- 110 -
true
メッセージの内容
メッセージブローカは、メッセージ全体をデッドメッセージキューに配置できます。または、ヘッダーとプロパティデータだ
けを残して、メッセージ本体の内容を破棄できます。デフォルトでは、デッドメッセージキューはメッセージ全体を格納します。
デッドメッセージを復元する予定がない場合は、imq.destination.DMQ.truncateBodyメッセージブローカプロパティをtrue
に設定してください。これにより、メッセージ本文が破棄され、ヘッダーとプロパティデータだけが残され、デッドメッセー
ジキューのサイズを減らすことができます。
imq.destination.DMQ.truncateBodyの詳細については、「6.7.2 ルーティングサービスに関するプロパティ」を参照してくだ
さい。
例
メッセージ本文を破棄してデッドメッセージキューに退避するように設定するコマンド実行例
imqcmd update bkr -b localhost:37676 -o imq.destination.DMQ.truncateBody=true
デッドメッセージのロギング
デッドメッセージのロギングとは、以下の事象が発生した場合、メッセージブローカがログ情報を記録する機能です。
・ メッセージブローカがデッドメッセージキューにメッセージを移動する。
・ メッセージブローカがデッドメッセージキューとデッドメッセージキューを使用していない物理格納先からメッセージを
破棄する。
・ 物理格納先が制限に達する。
デ ッ ド メ ッ セ ー ジ の ロ ギ ン グ は 、 デ フ ォ ル ト で は 無 効 に な っ て い ま す 。 デ ッ ド メ ッ セ ー ジ の ロ ギ ン グ は、
imq.destination.logDeadMsgsプロパティで設定します。デッドメッセージのロギングは、デッドメッセージキューを使用する
すべての物理格納先に適用されます。物理格納先ごとに、ロギングの有効/無効を設定することはできません。
imq.destination.logDeadMsgsプロパティの詳細については、「6.7.6 ログ機能に関するプロパティ」を参照してください。
例
デッドメッセージのロギングを有効にするコマンド実行例
imqcmd update bkr -b localhost:37676 -o imq.destination.logDeadMsgs=true
デッドメッセージキューからのメッセージの復元
デッドメッセージキューに移動されたメッセージは、Interstage JMSのキューブラウザ機能を使用して参照します。
デッドメッセージキューをJMSアプリケーション内で使用する場合は、SessionクラスのcreateQueueメソッドを使用して、デッ
ドメッセージキューを取得してください。
例
デッドメッセージキューを取得する場合のcreateQueueメソッドの例
Queue deadMessageQueue = session.createQueue("mq.sys.dmq") ;
デッドメッセージキューからのメッセージの破棄
デッドメッセージキューに移動されたメッセージが不要となった場合は、imqcmdコマンドでデッドメッセージキューに移動
されたメッセージを破棄します。詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-
「imqcmd」-「purge dstサブコマンド」/「purge durサブコマンド」を参照してください。
- 111 -
例
imqcmd purge dst -b localhost:37676 -t q -n mq.sys.dmq
2.18.9 事前配信
メッセージブローカは、事前配信機能を使用してコンシューマにメッセージを配信します。
以下に事前配信処理を説明します。
・ 単一コンシューマの事前配信処理
・ 複数コンシューマの事前配信処理(蓄積メッセージあり)
・ 複数コンシューマの事前配信処理(蓄積メッセージなし)
注意
メッセージに設定されている有効期間は、メッセージが事前配信されると、無効となります。このため、メッセージ送信時
に設定した有効期間を超過したメッセージが、コンシューマに配信される場合があります。
有効期間を設定したメッセージを使用する場合は、consumerFlowLimitの値を小さく設定することを推奨します。
consumerFlowLimitの詳細については、「6.7.3 物理格納先自動生成に関するプロパティ」/「6.7.7 物理格納先の生成
または更新に関するプロパティ」を参照してください。
単一コンシューマの事前配信処理
物理格納先から1つのコンシューマに事前配信される処理概要を、以下の図に示します。
Message-driven Beanの場合も同様に事前配信処理が行われます。
以下の図のコンシューマを、Message-driven Beanと読み替えてください。
[処理の流れ]
(1) コネクション開始
コンシューマがコネクションを開始すると、メッセージブローカに対して事前配信を要求します。
- 112 -
(2) 事前配信
物理格納先に設定されたconsumerFlowLimitを上限として、コンシューマに配信可能なメッセージを事前配信します。
上記の図の場合、メッセージブローカは、メッセージ3件(A,B,C)を事前配信します。
(3) 受信要求
コンシューマがメッセージの受信要求を行うと、事前配信されたメッセージが格納されている一時格納域に対してメッ
セージの配信を要求します。
(4) 配信
コンシューマは、メッセージ(A)を受信します。
複数コンシューマの事前配信処理(蓄積メッセージあり)
メッセージが蓄積されている物理格納先から複数のコンシューマに事前配信される処理概要を、以下の図に示します。
Message-driven Beanの場合も同様に事前配信処理が行われます。
以下の図のコンシューマを、Message-driven Beanと読み替えてください。
[処理の流れ]
(1) JMSクライアント3がメッセージ送信
プロデューサが物理格納先にメッセージを5件(A,B,C,D,E)送信します。
(2) JMSクライアント1がコネクション開始
コンシューマがコネクションを開始すると、メッセージブローカに対して事前配信を要求します。
(3) JMSクライアント1に事前配信
物理格納先に設定されたconsumerFlowLimitを上限として、コンシューマに配信可能なメッセージを事前配信します。
上記の図の場合、メッセージブローカは、メッセージ3件(A,B,C)を配信します。
- 113 -
(4) JMSクライアント2がコネクション開始
コンシューマがコネクションを開始すると、メッセージブローカに対して事前配信を要求します。
(5) JMSクライアント2に事前配信
物理格納先に設定されたconsumerFlowLimitを上限として、コンシューマに配信可能なメッセージを事前配信します。
上記の図の場合、メッセージブローカはメッセージ2件(D,E)を配信します。
(6) JMSクライアント1が受信要求
コンシューマは、メッセージ(A,B,C)の順番に受信します。
メッセージ(D,E)は、JMSクライアント2に事前配信済であるため、受信できません。
(7) JMSクライアント2が受信要求
コンシューマは、メッセージ(D,E)の順番に受信します。
メッセージ(A,B,C)は、JMSクライアント1に事前配信済であるため、受信できません。
複数コンシューマの事前配信処理(蓄積メッセージなし)
メッセージが蓄積されていない物理格納先から複数のコンシューマに事前配信される概要を、以下の図に示します。
Message-driven Beanの場合も同様に事前配信処理が行われます。
以下の図のコンシューマを、Message-driven Beanと読み替えてください。
[処理の流れ]
(1) JMSクライアント1がコネクション開始
コンシューマがコネクションを開始すると、メッセージブローカに対して事前配信を要求します。
しかし、物理格納先にメッセージが蓄積されていないため、事前配信が実施されません。
(2) JMSクライアント2がコネクション開始
コンシューマがコネクションを開始すると、メッセージブローカに対して事前配信を要求します。
しかし、物理格納先にメッセージが蓄積されていないため、事前配信が実施されません。
- 114 -
(3) JMSクライアント3がメッセージ送信
プロデューサが物理格納先にメッセージを5件(A,B,C,D,E)送信します。
(4) JMSクライアント1および2に事前配信
メッセージブローカは、物理格納先に設定されたconsumerFlowLimitを上限として、物理格納先に蓄積されたメッセー
ジをランダムに振り分けます。
上記の図の場合は、以下を行います。
1. JMSクライアント1にメッセージ3件(A,C,D)を事前配信します。
2. JMSクライアント2にメッセージ2件(B,E)を事前配信します。
(5) JMSクライアント1が受信要求
コンシューマは、メッセージ(A,C,D)の順番に受信します。
メッセージ(B,E)は、JMSクライアント2に事前配信済であるため、受信できません。
(6) JMSクライアント2が受信要求
コンシューマは、メッセージ(B,E)の順番に受信します。
メッセージ(A,C,D)は、JMSクライアント1に事前配信済であるため、受信できません。
JMSクライアントのメモリ見積もり
メッセージブローカは事前配信処理を行うため、以下の式で使用するメモリを見積もってJMSクライアントを起動する必要
があります。
(コンシューマの数 ×コンシューマが接続する物理格納先に設定されているconsumerFlowLimitの値 ×コンシューマが受
信するメッセージサイズ) × 2 以上
2.19 コネクタの提供機能
ここでは、本製品のコネクタサービスで提供するJava EE Connector Architecture規約以外の機能について説明します。
リソースアダプタの種別に応じて、アウトバウンド/インバウンド固有の機能、双方向で共通の機能があります。
・ アウトバウンド・リソースアダプタの機能
- コネクタ接続プールとコネクタリソースの定義
- アウトバウンド・リソースアダプタのトランザクション制御
- セキュリティ管理
「5.6 リソースアクセス時の認証情報」を参照してください。
・ インバウンド・リソースアダプタの機能
- Message-driven Beanとの連携
・ 双方向で共通の機能
- 管理オブジェクトリソースの定義
- JavaBeanのコンフィギュレーション
- スレッドプールを利用したWorkの実行
- シャットダウンタイムアウト
「チューニングガイド」-「シャットダウンタイムアウト」を参照してください。
本製品のコネクタサービスでは、上記とともに時間監視機能をサポートします。詳細は、「2.20 コネクタで使用できる時間
監視機能」を参照してください。
2.19.1 コネクタ接続プールとコネクタリソースの定義
コネクタ接続プールとコネクタリソースについて説明します。
- 115 -
コネクタ接続プール、コネクタリソース、管理オブジェクトリソースの関係を以下に示します。赤線は、コネクタ接続プール、
およびコネクタリソースの複数定義を示します。管理オブジェクトリソースについては、「2.19.4 管理オブジェクトリソースの
定義」を参照してください。
コネクタ接続プール
接続プールは、EISとの間で確立した接続を管理し、クライアントからの要求時にプール内の接続を返却することで性能
を向上させます。また、プール内の接続の異常を検出して自動的に再接続処理を行ったり、クライアントの認証情報を検
証するセキュリティの機能なども備えます。
connector規約に準拠したアプリケーションでは、1つのリソースアダプタに複数のConnectionFactoryを記述できます。本
製品のコネクタサービスでは、さらに個々のConnectionFactoryに複数の接続プールの設定を定義できます。接続プール
を定義したリソースをコネクタ接続プール(Connector Connection Pool)と呼びます。コネクタ接続プールのチューニング
情報は、「チューニングガイド」-「コネクタのチューニング」を参照してください。
アウトバウンド・リソースアダプタを利用する場合、コネクタモジュールの配備後にコネクタ接続プールを登録する必要が
あります。
コネクタリソース
ConnectionFactoryをJNDIでlookupするためのJDNI名をコネクタ接続プールの単位で設定します。1つのコネクタ接続
プールに対し複数のJDNI名を定義することも可能です。コネクタ接続プールにJDNI名を定義したリソースをコネクタリ
ソース(Connector Resource)と呼びます。
2.19.2 アウトバウンド・リソースアダプタのトランザクション制御
本製品のコネクタサービスでは、トランザクション機能をサポートします。
トランザクションサポート
コネクタ接続プールの定義項目には、ra.xmlに記載したトランザクションサポートレベルを上書きするオプションがあります。
ra.xmlでは、リソースアダプタのすべてのConnectionFactoryに対し単一のトランザクションサポートレベルだけ記述可能
ですが、本機能を利用することによりConnectionFactory単位でレベルを調整できます。
XAトランザクションをサポートするリソースアダプタであっても、分散トランザクションは必ず2フェーズコミットプロトコルを
強要する高価な処理のため、必要ない場合はローカルトランザクションの利用、またはトランザクション連携しないなどの
選択を行いたい場合に有効です。
トランザクションサポートレベルには、ra.xmlに記載したレベルと同等か、より低いレベルを指定した場合のみ有効となり
ます。ra.xmlに記載したレベルよりも高いレベルを指定した場合は、IJServerクラスタまたはInterstage Java EE DASサー
ビスの起動時にサーバーログへエラーが出力されます。レベルは高い順にXAトランザクションサポート(XATransaction)、
ローカルトランザクションサポート(LocalTransaction)、トランザクション非サポート(NoTransaction)となります。
- 116 -
2.19.3 Message-driven Beanとの連携
インバウンド・リソースアダプタは、アプリケーションと非同期で動作し、リソースアダプタが必要に応じてアプリケーション
に処理を要求します。リソースアダプタは、EISからの処理要求を受けて必要なタイミングでMessage-driven Beanを呼び
出し、アプリケーションサーバに処理要求を配信します。配信されたメッセージは、Message-driven Beanの各種定義に
従ってEJBコンテナによって管理されます。
インバウンド・リソースアダプタの受信アプリケーションは、Message-driven Beanを使用します。どのリソースアダプタから
のメッセージを受信するかは、リソースアダプタ名で指定します。リソースアダプタ名を指定しない場合、または空の文字
列か「jmsra」を指定した場合は、Message-driven Beanのメッセージを受信する対象としてJMSが選択されます。リソース
アダプタ名については「4.17.1 コネクタモジュールの配備とリソース定義の作成」を、Message-deriven Beanについては
「2.7.2 Message-driven Beanの実行環境」を参照してください。
2.19.4 管理オブジェクトリソースの定義
Java EE Connector Architecture規約に準拠したリソースアダプタでは、リソースアダプタ固有の情報を管理するAdministered
Object(以降、管理対象オブジェクトと呼びます)を定義してアプリケーションで利用できます。アプリケーションは、JNDIの
lookup処理を通して管理対象オブジェクトを取得し、処理を実行します。1つのコネクタモジュールに複数の管理対象オ
ブジェクトを含めることができ、管理対象オブジェクトのインタフェースごとにシステムで一意のJNDI名を割り当てます。
JNDI名を割り当てた管理対象オブジェクトのリソースを、管理オブジェクトリソース(Admin Object Resource)と呼びます。
2.19.5 JavaBeanのコンフィギュレーション
Java EE Connector Architecture規約に準じたリソースアダプタでは、リソースアダプタの種別に応じてJavaBeanインスタン
スを生成し処理に利用します。JavaBeanの生成時には、deployment descriptor(またはアノテーション)、Interstage Java EE
管理コンソール、asadminコマンドで指定したconfigプロパティの値が設定されます。JavaBeanの種類には、リソースアダ
プタ、ManagedConnectionFactory、ActivationSpec、管理対象オブジェクトがあります。コンフィギュレーションは、次の3つ
のステップで実行されます。
1. JavaBeanインスタンスの生成
2. タイプA、Bのconfigプロパティの足し合わせ (注1)
- タイプA:deployment descriptor(ra.xml、ejb-jar.xml(注2))/アノテーション(注2)のconfigプロパティ
- タイプB:Interstage Java EE管理コンソール/asadminコマンド/ sun-ejb-jar.xml(注2)から指定したconfigプロパ
ティ
注1) タイプAのプロパティにタイプBのプロパティを追加します。ただし、共通するプロパティ名の場合、タイプBの
プロパティ値でタイプAを上書きします。
注2) ActivationSpec JavaBeanの場合だけ該当します。sun-ejb-jar.xmlの詳細は、「3.2.3.3 Interstage EJB application
deployment descriptor (sun-ejb-jar.xml)」を参照してください。
3. 2.実行後のconfigプロパティを用いたJavaBeanのsetter呼出し
各JavaBeanで使用されるプロパティは以下のとおりです。
JavaBeanの種
類
タイプA
タイプB
リソースアダプタ
ra.xmlの
<connector><resourceadapter><confi
g-property>
ManagedConne
ctionFactory
ra.xmlの
<connector><resourceadapter><outb
ound-resourceadapter><connectiondefinition><config-property>
なし
・ Interstage Java EE管理コンソール
[コネクタ接続プール] > [追加プロ
パティ]
・ asadminコマンド
create-connector-connection-pool
サブコマンドの--propertyオプショ
ン
- 117 -
タイプA
JavaBeanの種
類
タイプB
・ コネクタ接続プールの定義項目の
追加プロパティ
・ ejb-jar.xml
の
<ejbjar><enterprise-beans><messagedriven><activationconfig><activation-configproperty>
ActivationSpec
sun-ejb-jar.xmlの<sun-ejbjar><enterprise-beans><ejb><mdbresource-adapter><activationconfig><activation-config-property>
・ javax.ejb.ActivationConfigProper
ty(javax.ejb.MessageDriven ア ノ
テーションのactivationConfig属性
値)
管理対象オブ
ジェクト
ra.xmlの
<connector><resourceadapter><admi
nobject><config-property>
・ Interstage Java EE管理コンソール
[管理オブジェクトリソース] > [追加
プロパティ]
・ asadminコマンド
create-admin-objectサブコマンド
の--propertyオプション
・ 管理オブジェクトリソースの定義項
目の追加プロパティ
2.19.6 スレッドプールを利用したWorkの実行
本製品は、javax.resource.spi.work.Work(アプリケーションの呼出し、ネットワーク・エンドポイントの監視、入力データの
処理など)を同期/非同期に実行するためのWork管理機能をサポートします。Work管理機能の使用により、本製品の提
供するスレッド制御機構を利用したアプリケーションの構築が可能となります。リソースアダプタは、IJServerクラスタが提
供するjavax.resource.spi.work.WorkManagerクラスの実装に対して、scheduleWork()メソッドなどを使用してWorkの実行
要求を行います。
コネクタモジュールの配備時にスレッドプールIDを指定することで、あらかじめ定義した特定のスレッドプールの設定がリ
ソースアダプタ単位で設定されます。特定のスレッドプールを指定しない場合は、本製品のデフォルトのスレッドプール
が使用されます。スレッドプールの設定方法は、「チューニングガイド」-「スレッドプーリング」を参照してください。
Work制御用スレッド
1つのWork実行要求に対して、1つのWork制御用スレッドがスレッドプールから取り出され割り当てられます。Workの実
行が完了すると、Work制御用スレッドはプールに戻されます。Work制御用スレッドの数は、Workの実行要求に応じてス
レッドプールで指定した最大値に達するまで増えていきますが、Work制御用スレッドの数が最大値に到達し全スレッド
がWorkを実行中の場合、新たに送られてきたWorkの実行要求はFIFOのキューで管理されます。Workの割り当てを解
放されたスレッドがプールへ戻ると、キューで管理されているWorkが順次空いたスレッドに割り当てられます。Work実行
要求時に指定したスタートタイムアウト値だけ時間が経過してもWorkへ制御用スレッドが割り当てられなかった場合、
javax.resource.spi.work.WorkRejectedExceptionがリソースアダプタへ返却されます。
2.20 コネクタで使用できる時間監視機能
コネクタで使用できる時間監視機能には、以下の機能があります。各設定の定義方法については、「チューニングガイ
ド」-「コネクタのチューニング」を参照してください。
時間監視機能のパラメタ
・ 最大待ち時間
・ アイドルタイムアウト
・ シャットダウンタイムアウト
- 118 -
2.21 グループ管理サービス
グループ管理サービス(GMS)は、IJServerクラスタに属するサーバーインスタンスが互いに起動状態を監視する機能を提
供します。例えばサーバーインスタンスが異常に停止した場合、停止したことを各サーバーインスタンスに通知することに
より、IIOP通信のリクエスト振り分け対象のサーバーインスタンスから除外できます。グループ管理サービスは、以下の機
能で使用できます。
RMI-IIOPロードバランスおよびフェイルオーバー
RMI-IIOPロードバランスおよびフェイルオーバーについては、「4.23 IIOP通信におけるリクエストの振り分け制御」を
参照してください。
各サーバーインスタンスは、正常に動作していることを示すために定期的に信号を送信します。これをハートビートと呼
びます。各IJServerクラスタにはハートビートを有効にする定義があり(デフォルトは有効)、以下の定義項目にハートビー
トの信号を送信するアドレスとポート番号を指定します。ハートビートを無効にすると、IJServerクラスタに属するサーバー
インスタンスはすべて起動状態であると認識します。
・ ハートビートアドレス
・ ハートビートポート
ハートビートアドレスには、マルチキャストのアドレスを指定してください。各サーバーインスタンスは、ハートビートの信号
をマルチキャストアドレスに送信し、そのマルチキャストアドレスから配信されるハートビートの信号を受信して各サーバー
インスタンスが正常に動作していることを認識します。
また、以下の定義によりハートビートの信号を送信する時間間隔や、異常を認識するまでに試行するハートビートの信号
の送信回数などをチューニングできます。指定した時間や回数だけハートビートの信号が送信されないと、該当のサー
バーインスタンスに対してping要求を送信し、それでも反応がなければそのサーバーインスタンスが停止したと判断します。
・ プロトコル最大試行
・ プロトコルタイムアウト
・ 検証済みタイムアウト
・ pingタイムアウト
ハートビートアドレスおよびハートビートポートの設定は、Interstage Java EE管理コンソール、およびasadminコマンドを使
用して変更できます。詳細については、以下のマニュアルを参照してください。
・ Interstage Java EE管理コンソールヘルプ
・ 「リファレンスマニュアル(コマンド編)」-「clustersの定義項目」
また、プロトコルタイムアウトなどのグループ管理サービスのチューニング項目の設定は、Interstage Java EE管理コンソー
ル、およびasadminコマンドを使用して変更できます。詳細については、以下のマニュアルを参照してください。
・ Interstage Java EE管理コンソールヘルプ
・ 「リファレンスマニュアル(コマンド編)」-「configs.config.group-management-serviceの定義項目」
2.22 クラスローダ
Javaのクラスローダはクラスファイルを検索し、クラスをメモリにロードする機能を提供します。
Java EEアプリケーションを作成する際は、クラスがどのクラスローダでロードされるかを理解してJava EEアプリケーション
を構築してください。
クラスローダの階層
Javaのクラスローダは、親クラスローダと子クラスローダからなる階層構造を持っています。親クラスローダと子クラスロー
ダの関係は、オブジェクトのスーパークラスとサブクラスの関係に似ています。
- 119 -
子クラスローダでロードされたクラスから親クラスローダでロードされたクラスを参照することはできますが、親クラスローダ
でロードされたクラスから子クラスローダでロードされたクラスを参照することはできません。
JNI(Java Native Interface)を利用している場合はさらに注意が必要です。JNIを利用する場合は、Nativeモジュールをク
ラスローダがロードしますが、Javaのクラスローダでは同じNativeモジュールは同じクラスローダ上からだけ利用可能とな
ります。
(1)と(2)で同じNativeモジュールを使用していますが、先にNativeモジュールを読み込んだ側からだけ利用可能となります。
クラスBが先に動作した場合はクラスAには「java.lang.UnsatisfiedLinkError」がスローされます。
上記は、本製品の場合にも当てはまります。
クラスのロード
クラスローダは、委譲モデルを使ってクラスをロードします。クラスローダは関連する親クラスローダを持ち、クラスをロード
するために呼び出されると、クラスローダはそれ自体でクラスのロードを試みる前に、該当クラスのロードを親クラスローダ
に委譲します。
2.22.1 クラスローダの構成
ここでは、IJServerクラスタのクラスローダの階層構造について説明します。
IJServerクラスタで使用するクラスローダは、親クラスローダおよび子クラスローダからなる階層構造を持っています。この
ようにクラスローダが階層構造を持つことによりシステムとアプリケーションおよびアプリケーション間の独立性が向上します。
各クラスローダは下表の資源をロードします。本製品のデフォルトの設定では、クラスローダは表の上から順にクラスを
ロードします。同一クラスローダでロードされるリソースの検索順番は不定です。
クラスローダ
システムクラス
ローダ
ロードする資源
なし
設定方法
設定不可能
- 120 -
クラスローダ
ロードする資源
Shared Chain
クラスローダ
アプリケーションサーバのク
ラス
設定不可能
IJServerクラスタ内で共通に
使用するクラス
クラスパスのサフィックス
詳細は、「2.22.4 IJServerクラスタで使用するクラス
の設定について」を参照。
共通クラス
ローダ
すべてのIJServerクラスタで
共通に使用するクラス
共通ディレクトリ
詳細は、「2.22.4 IJServerクラスタで使用するクラス
の設定について」を参照。
Connectorクラ
スローダ
コネクタアプリケーション
RARファイル
Applicationク
ラスローダ
アプリケーション内で共通
に使用するクラス
アプリケーションライブラリ
詳細は、「2.22.4 IJServerクラスタで使用するクラス
の設定について」を参照。
エンタープライズアプリケー
ション内で共通に使用する
クラス(JARファイル)
application.xmlのlibrary-directoryタグで指定した
ディレクトリ
library-directoryタグを省略した場合は、EARファイ
ルのlibディレクトリ
モジュール(EARファイル内
の各モジュールまたは単体
配備されたEJBアプリケー
ション)が使用するクラス
モジュール内のマニフェストファイルのクラスパス。
および、モジュール内のクラス
Webアプリケーション内で共
通に使用するクラス
アプリケーションライブラリ(WARファイル単体配備
時)
詳細は、「2.22.4 IJServerクラスタで使用するクラス
の設定について」を参照。
Webアプリケーションのクラ
ス(classファイル)
WARファイル内のWEB-INF/classesディレクトリ
デフォルトの設定の場合、EARファイルで配備する
とApplicationクラスローダでロードされます。
詳細は、「2.22.3 Webクラスローダの委譲モデルの
変更」を参照。
Webアプリケーションのクラ
ス(JARファイル)
WARファイル内のWEB-INF/libディレクトリ
デフォルトの設定の場合、EARファイルで配備する
とApplicationクラスローダでロードされます。
詳細は、「2.22.3 Webクラスローダの委譲モデルの
変更」を参照。
Webクラス
ローダ
設定方法
Connectorクラスローダの子クラスローダにはConnectorクラスローダとは別に、ライフサイクルモジュールをロードするライ
フサイクルモジュールクラスローダがあります。
クラスローダ
システムクラス
ローダ
ロードする資源
設定方法
上表と同じ
Shared Chain
クラスローダ
共通クラス
ローダ
Connectorクラ
スローダ
- 121 -
クラスローダ
ロードする資源
ライフサイクル
モジュールク
ラスローダ
ライフサイクルモジュール
設定方法
ライフサイクルモジュール設定
詳細は、「2.23 ライフサイクルモジュール」を参照。
2.22.2 クラスローダの分離
IJServerクラスタのクラスローダは下記表の単位で作成されます。
クラスローダ
作成単位
システムクラスローダ
サーバーインスタンスで1つ作成されます。
Shared Chainクラスローダ
サーバーインスタンスで1つ作成されます。
共通クラスローダ
サーバーインスタンスで1つ作成されます。
Connectorクラスローダ
サーバーインスタンスで1つ作成されます。
ライフサイクルモジュールクラスローダ
ライフサイクルモジュールが作成されている場合、ライ
フサイクルモジュールごとに作成されます。
Applicationクラスローダ
EARファイル、またはEJB-JARファイルが配備されて
いる場合、配備されているEARファイル/EJB-JARファ
イルごとに作成されます。
Webクラスローダ
WARファイル、またはWebモジュールを含んだEAR
ファイルが配備されている場合、配備されているWAR
ファイル/EARファイル内のWebモジュールごとに作成
されます。
下図は、委譲モデルがデフォルトの場合のクラスローダ構成です。
点線で表した配備単位ごとにクラスローダを作成して独立にクラスをロードするため、配備単位ごとに同一名称のファイ
ルやパッケージ名、クラス名の使用が可能です。
デフォルトの委譲モデルの場合は、EARファイル内のWebモジュールはApplicationクラスローダでロードされます。
そのため、WebモジュールとEJBモジュールの相互参照が可能です。Webクラスローダの委譲モデルについては、「2.22.3
Webクラスローダの委譲モデルの変更」を参照してください。
- 122 -
また、下図のようにWebクラスローダの委譲モデルを変更することでEARファイル配備時でもWebクラスローダでWebモ
ジュールのクラスをロードできます。この設定では、親クラスローダよりも先にWebクラスローダでクラスがロードされます。
Webクラスローダの委譲モデルについては、「2.22.3 Webクラスローダの委譲モデルの変更」を参照してください。
- 123 -
2.22.3 Webクラスローダの委譲モデルの変更
本製品のデフォルト設定では、Webクラスローダは親のクラスローダにクラスの検索を委譲します。この場合には、EAR
ファイルで配備するとWebモジュール内のクラスは、Applicationクラスローダでロードされます。
また、Webクラスローダが親クラスローダより先にクラスの検索を行うように設定することもできます。
注意
Webクラスローダの委譲モデルを親クラスローダへの委譲を後に設定しても、WARファイルのマニフェストクラスパスに指
定したクラスがApplicationクラスローダでロードされます。
WARファイルのマニフェストクラスパスに指定したクラスを、WEB-INF/classesまたはWEB-INF/lib配下に保管してください。
親クラスローダへの委譲を先にする場合
Webクラスローダで検索する前に親クラスローダに委譲します。WebアプリケーションがEJBコンポーネントにアクセス
する場合、またはWebアプリケーションがWebサービスクライアントやエンドポイントである場合は、この設定にする必
要があります。
親クラスローダへの委譲を後にする場合
親クラスローダで検索する前にWebクラスローダで検索します。Webモジュールが他のモジュールとの連携を行わな
い場合にだけ設定することをお勧めします。
設定方法
sun-web.xmlのclass-loader要素のdelegate属性で設定します。
- 124 -
設定値
意味
true(デフォルト値)
親クラスローダへの委譲を先に行います。
false
親クラスローダへの委譲を後に行います。
sun-web.xmlの設定方法は、「3.2.3.2 Interstage Web application deployment descriptor (sun-web.xml)」を参照してください。
委譲の例外
Webクラスローダの委譲については、以下の2つの例外があります。
JDKのクラス
JDKのクラスは常に最初にロードされますので、このクラスはユーザが置き換えることはできません。
特定パッケージ名で始まるクラス
以下のパッケージ名で始まるクラスは常に最初に親クラスローダにロードが委譲されます。
親クラスローダに以下のパッケージ名で始まるクラスが存在する場合は、子クラスローダでクラスを置き換えることはで
きません。
パッケージ名
種類
javax
Java extensions
sun
GFコアアプリケーションサーバクラス
org.xml.sax
SAX 1 & 2
org.w3c.dom
DOM 1 & 2
org.apache.taglibs.standard
taglibs
com.sun.faces
faces
org.apache.commons.logging
commons logging
2.22.4 IJServerクラスタで使用するクラスの設定について
共通ディレクトリ
すべてのIJServerクラスタで共通に使用するクラスを保管します。設定を有効にするためには、IJServerクラスタの再起動
が必要です。
共通ディレクトリには、JDBCドライバなどユーザがアプリケーションで使用するライブラリを自由に設定できます。
jar: [Java EE共通ディレクトリ]\domains\interstage\lib
クラス: [Java EE共通ディレクトリ]\domains\interstage\lib\classes
jar: [Java EE共通ディレクトリ]/domains/interstage/lib
クラス: [Java EE共通ディレクトリ]/domains/interstage/lib/classes
クラスパスのサフィックス
IJServerクラスタ内で共通に使用するクラスを設定します。設定を有効にするためには、IJServerクラスタを再起動してくだ
さい。
クラスパスのサフィックスは、Interstage Java EE管理コンソール、またはasadminコマンドで設定します。
・ Interstage Java EE管理コンソールの
[設定] > [クラスタ名-config] > [JVM設定] > [パス設定]タブ
・ asadminコマンドのsetサブコマンド
「configs.config.java-configの定義項目」のクラスパスのサフィックス
- 125 -
アプリケーションライブラリ
配備時にアプリケーション内で共通に使用するクラスを、JARファイルの絶対パスで指定します。クラスファイルが保管さ
れているディレクトリの指定はできません。
アプリケーションライブラリを変更する場合は、絶対パスで指定しているJARファイルを同名のJARファイルで置き換えるか、
再配備します。
配備は、Interstage Java EE管理コンソール、またはasadminコマンドで行います。
詳細は、「4.6 アプリケーションの配備」を参照してください。
アプリケーションライブラリから他のApplicationクラスローダでロードされるクラス/Connectorクラスローダでロードされるク
ラス/共通クラスローダでロードされるクラスを参照することはできません。また、アプリケーションライブラリ間の参照もでき
ません。
2.22.5 XMLパーサの設定
ここでは、IJServerクラスタで使用するXMLパーサの設定方法について説明します。
IJServerクラスタが使用するXMLパーサの実装は、サービスAPIを使用して決定されます。IJServerクラスタが使用する
XMLパーサの実装を変更する場合は、サービスプロバイダの構成ファイルを含んだXMLパーサ実装のJARファイルを
IJServerに設定します。設定方法については、「2.22.4 IJServerクラスタで使用するクラスの設定について」を参照してくだ
さい。
設定しない場合は、JDKに含まれるXMLパーサのXercesを使用します。
サービスAPIの詳細については、JAXPの仕様を参照してください。
サービスプロバイダの構成ファイルについては、Javaの仕様を参照してください。
JAXPインタフェースのレベルを上書きする場合は、JAXPインタフェースのJARライブラリが設置されているディレクトリを
システムプロパティの「java.endorsed.dirs」に追加します。詳細は、Javaドキュメント「Java 承認済みの標準オーバーライド
機構」を参照してください。
指定可能なXMLパーサはJDK5.0に含まれるXMLパーサのバージョン(JAXP1.3)より新しいバージョンのXMLパーサで
す。JAXP1.3より古いバージョンのXMLパーサを指定した場合、アプリケーションの起動に失敗する場合があります。
Interstage Java EE DASサービスにJAXP1.3より古いバージョンのXMLパーサを設定した場合は、Interstage Java EE管
理コンソールを使用することができません。この場合は、asadminコマンドを使用してJAXP1.3より新しいバージョンのXML
パーサに設定しなおしてください。
2.22.6 クラスローダ使用時の注意事項
ここでは、クラスローダを使用する際の注意事項について説明します。
コネクタを使用する際の注意事項
ネイティブライブラリを使用したコネクタを運用する場合、配備したIJServerクラスタ、またはInterstage Java EE DASサービ
スから参照可能にするために、ネイティブライブラリへのパスをパス/ライブラリパスに設定します。
Interstage Java EE管理コンソールを利用して設定する場合は、以下の手順で実行します。
1. ツリービューから「設定」を選択し、設定名を選択してください。
2. 「JVM 設定」タブをクリックします。
3. 「パス設定」タブをクリックします。
4. 「ネイティブライブラリパスのサフィックス」フィールドで、ネイティブライブラリパスに追加するエントリを指定します。
ポイント
エントリの指定方法
ネイティブライブラリが格納されたディレクトリのパスを指定してください。また、コネクタモジュール内に含まれたネ
イティブライブラリを参照する場合は、コネクタモジュールの展開先ディレクトリ配下のネイティブライブラリが格納さ
れたディレクトリを指定してください。コネクタモジュールの展開先ディレクトリは、「2.2.1 Interstage Java EE DASサー
ビスのファイル構成」を参照してください。
5. 「保存」をクリックします。
- 126 -
6. 環境設定の対象に応じて、IJServerクラスタ、またはInterstage Java EE DASサービスを再起動します。
コマンドから指定する場合は、asadminコマンドのsetサブコマンドでネイティブライブラリパスのサフィックスに設定後、
IJServerクラスタ、またはInterstage Java EE DASサービスを再起動してください。詳細は、「6.8.15 Java VMの定義項目」
を参照してください。
Java EEアプリケーションでJNIを使用する場合の注意事項
同じNativeモジュールは、別々のクラスローダでロードすることはできません。JNIを使用するクラスがアプリケーション
(EAR、ejb-jar、WAR、RAR)に含まれている場合、同じNativeモジュールを別々のクラスローダでロードした場合、
java.lang.UnsatisfiedLinkErrorがスローされます。
java.lang.UnsatisfiedLinkErrorがスローされた場合は、JNIを使用するクラス(nativeメソッドを実装しているクラス)をアプリ
ケーションに含めずに、JNIを使用するクラスを共通ディレクトリに保管、またはクラスパスのサフィックスに設定してください。
また、JNIを使用するクラスがアプリケーション(EAR、ejb-jar、WAR、RAR)に含まれている場合、そのアプリケーションは
HotDeployを使用できません。
使 用 し た 場 合 は 、 java.lang.UnsatisfiedLinkError が ス ロ ー さ れ 、 HotDeploy に 失 敗 す る 可 能 性 が あ り ま す。
java.lang.UnsatisfiedLinkErrorがスローされ、HotDeployに失敗した場合は、IJServerクラスタを再起動してください。
JNIを使用するアプリケーションでHotDeployを使用する場合は、JNIを使用するクラスを共通ディレクトリに保管、または
クラスパスのサフィックスに設定してください。なお、JNIを使用するクラスを入れ替える場合はIJServerクラスタを再起動し
てください。
WEB-INF/lib配下に保管したJARファイル内のリソースへアクセスする場合の注意事項
WEB-INF/lib配下に保管したJARファイル内のリソースにWebクラスローダのgetResoruce/getResourceAsStreamを呼び出
してアクセスした場合、初回アクセス時にJARファイルがIJServerクラスタの管理するディレクトリに展開されます。そのため、
JARファイル内に多くのリソースが存在すると、初回アクセス時の性能が劣化する場合があります。
本問題は該当するJARファイルをWEB-INF/lib以外に保管し、IJServerクラスタで使用するクラスに設定することで回避可
能です。
設定方法は「2.22.4 IJServerクラスタで使用するクラスの設定について」を参照してください。
2.23 ライフサイクルモジュール
ライフサイクルモジュールは、IJServerクラスタの起動・通常停止時のライフサイクルイベント発生時に呼び出されるJavaア
プリケーションです。
ライフサイクルモジュールは、IJServerクラスタの起動時に初期化され、ライフサイクルの各フェーズでイベント通知を受け
取ります。ライフサイクルモジュールを作成、設定することで、データベースの初期化/回収処理やEJB呼出しなどの処理
が行えます。
注意
強制停止時にはライフサイクルモジュールは呼び出されません。
IJServerクラスタとライフサイクルモジュールの関係
IJServerクラスタ多重時の場合、ライフサイクルモジュールはすべてのVMで実行されます。
ライフサイクルイベント
ライフサイクルイベントは、IJServerクラスタの起動・通常停止処理(ライフサイクル)の状態が変化する時に発生します。
IJServerクラスタのライフサイクルイベントとライフサイクルモジュールで実装するhandleメソッドの処理タイミングを下表に
記載します。表の上から下に順に実行されます。
起動処理
イベント
INIT_EVENT
handleEventメソッドの処理タイミング
WebコンテナとEJBコンテナの起動前に処理されます。
- 127 -
イベント
handleEventメソッドの処理タイミング
STARTUP_EVEN
T
デプロイされたアプリケーションのロード前、初期化前に処理されます。
READY_EVENT
デプロイされたアプリケーションのロード後、初期化後、ServletやEJBアプリ
ケーションへのアクセス受付開始後に処理されます。
停止処理
イベント
handleEventメソッドの処理タイミング
SHUTDOWN_EVE
NT
Webサーバコネクタからのアクセス受付停止後、アプリケーションの廃棄後
に処理されます。
TERMINATION_E
VENT
WebコンテナとEJBコンテナの停止後に処理されます。
2.23.1 ライフサイクルモジュールの設計方法
javax.naming.InitialContextの取得
以下のイベント通知時にJNDI naming Contextの取得が可能です。
・ STARTUP_EVENT
・ READY_EVENT
・ SHUTDOWN_EVENT
上記以外のイベントの通知時にもInitialContextを取得できる場合がありますが、取得したInitialContextを用いた処理の
動作は保証されません。
リソースのlookup
以下のイベントの通知時にリソースのlookupが可能です。
・ JDBCリソース
- STARTUP_EVENT
- READY_EVENT
- SHUTDOWN_EVENT
・ ライフサイクルモジュールが動作するサーバーインスタンスで運用されているEJBアプリケーション
- READY_EVENT
・ 他サーバーインスタンスで運用されているEJBアプリケーション
- STARTUP_EVENT
- READY_EVENT
- SHUTDOWN_EVENT
上記以外のイベントの通知時にもリソースを取得できる場合がありますが、取得したリソースを用いた処理の動作は保証
されません。
取得したリソースに対する操作の成否は、リソースの設定内容や操作対象のサービスの起動状態に依存します。
- 128 -
注意
・ ライフサイクルモジュールからEJBアプリケーションをlookupする場合は、ネーミングサービスから直接オブジェクトを
参照してください。ライフサイクルモジュールはdeployment descriptorを含まないので、環境ネーミングコンテキスト
(Environment Naming Context)を利用できません。ネーミングサービスの詳細は、「2.13.1 ネーミングサービス」を参
照してください。
2.23.2 ライフサイクルモジュールの運用方法
ライフサイクルモジュールの設定
Interstage Java EE管理コンソール、またはasadminコマンドによりライフサイクルモジュールの設定を行います。
・ 設定画面
[アプリケーション] > [ライフサイクルモジュール]
・ コマンド
作成:create-lifecycle-moduleサブコマンド
定義:setサブコマンドの「applications.lifecycle-moduleの定義項目」
注意
・ 設定を有効にするためにIJServerクラスタの再起動が必要です。
・ ライフサイクルモジュールの登録時に指定したクラスパスは、ライフサイクルモジュールクラスローダの構築時に使用
されます。ライフサイクルモジュールクラスローダは、ライフサイクルモジュールをロードするクラスローダです。ライフ
サイクルモジュールやライフサイクルモジュールが使用するユーザ作成クラスは、ライフサイクルモジュールの登録時
に指定したクラスパスに設置する必要があります。
2.24 J2EE/Java EE連携機能
ここでは、J2EE/Java EE連携機能について説明します。
2.24.1 J2EE実行環境からJava EE実行環境のアプリケーションを呼び出す
J2EE実行環境のIJServer上のJ2EEアプリケーションから、Java EE実行環境のIJServerクラスタ上のEJBアプリケーション
の呼び出しができます。
Java EE実行環境のIJServerクラスタ上のEJBアプリケーションの呼び出しは、Interstage Java EEのJNDI機能を利用します。
- 129 -
注意
・ 上記形式で呼び出せるのはEJB2.1以前のようなHomeインタフェース、Remoteインタフェースを実装したEJBアプリ
ケーションだけです。EJB 3.0のビジネスインタフェースのみを実装したEJBアプリケーションやJDBC、JMSなどのリ
ソースは呼び出せません。
・ J2EE実行環境の起動時実行クラス、停止時実行クラスからJava EE実行環境のIJServerクラスタ上のアプリケーション
の呼び出しはできません。
・ J2EE実行環境のV6、V8互換IJServerからJava EE実行環境のIJServerクラスタ上のアプリケーションの呼び出しはで
きません。
・ J2EE実行環境のIJServer上のJ2EEアプリケーションは、Java EEのスタンドアロンクライアントとして動作します。アプリ
ケーションクライアントコンテナは使用されません。そのため、スタンドアロンクライアントで利用できない機能(IIOP通
信の認証やSSL通信など)は利用できません。
2.24.2 Java EE実行環境からJ2EE実行環境のアプリケーションを呼び出す
Java EE実行環境のIJServerクラスタ上で運用するアプリケーションから、J2EE実行環境のIJServer上で運用するEJBアプ
リケーションをIIOP通信で呼び出すことができます。J2EE実行環境のIJServer上のEJBアプリケーションの呼び出しは、
Interstage Java EEのJNDI機能を利用します。
注意
・ J2EE実行環境とJava EE実行環境はともにInterstage V10以降の環境で構築されている必要があります。
・ 異なるJavaバージョン間での呼び出し(JDK6で動作するJava EE実行環境からJDK5で動作するJ2EE実行環境のEJB
アプリケーションの呼び出し)は可能ですが、この場合には低いJavaバージョンの機能範囲で利用してください。
・ 呼び出し可能なEJBアプリケーションはSession Beanです。Entity BeanやMessage-driven Beanは直接呼び出すこと
ができませんので、Session Beanを経由して各アプリケーションを呼び出してください。
・ J2EE実行環境のIJServerの設定で、"分散トランザクションを使用する"は"使用しない"(デフォルト設定)としてください。
・ EJB規約のセキュリティ機能(メソッドパーミッション、セキュリティ関連のメソッド、リソース接続者管理機能、run-as
security機能)は利用しないでください。
2.25 CORBAサービスアプリケーション呼出し
Java EE実行環境上のCORBAクライアントアプリケーションから、マルチ言語サービスのCORBAサービス環境上で運用
するCORBAサーバアプリケーションをIIOP通信で呼び出すことができます。
- 130 -
Java EE実行環境上のCORBクライアントアプリケーションで利用可能な機能を以下の表に示します。
機能名
マルチ言語サービスのCORBAサー
ビス
Java EEのCORBA
静的起動インタフェース
○
○
コード変換機能 (注1)
○
○
GSとのORB接続を行うための業務
アプリケーション開発
○
○
GSとのORB接続(運用) (注2)
○
○
Javaアプレット
○
-
動的起動インタフェース
○
-
CORBAサーバ機能
○
(CORBAクライアント→CORBAサー
バ)
-
(CORBAクライアント→Java EEサー
バ)
HTTPトンネリング
○
-
SSL通信
○
-
ロードバランス機能
○
-
インタフェースリポジトリサービス
○
-
○:サポート -:未サポート
注1)詳細は、「利用可能なコード系」を参照してください。
注2)JDK6だけサポートします。
- 131 -
注意
・ 接続対象となるCORBAサーバアプリケーションは、Interstage V9.2以降またはInterstage for GSの環境で構築されて
いる必要があります。
・ any型および共用体(union)は、利用できません。
利用可能なコード系
接続対象となるCORBAサーバアプリケーションのコード系とコード変換可能な組み合わせは、以下のとおりです。
なお、外字は未サポートです。
CORBAサーバ UNICO
DE
アプリケーショ
ンのコード系
UNICO
DE
クライ
アント
UNI
COD
E
-
UTF8 EUC(S90 EUC(U90
)
)
UTF8
○
EUC
○(注1)
ShiftJIS
ShiftJIS
MS
JEF ASCII
SJIS
SJISMS
JEF_ASCI JEF_L JEF_KAN
I
OWER
A
○(注1)
○(注1)
○(注2)
U90
×
JEF英
小文字
○(注
2)
JEFカナ
○(注2)
○:コード変換対象 -:コード変換非対象(変換しない) ×:コード変換不可
注1)string型だけEUC、SJIS、およびSJISMSをサポートします。wstring型、wchar型ではEUC、SJIS、およびSJISMSは未
サポートです。
注2)Java EEでは、以下のいずれかを使用する必要があります。なお、Interstage Studioのバージョン・レベルについては、
「システム設計ガイド」の「ソフトウェア条件」-「アプリケーション実行時に必要なクライアント側のソフトウェア」-「その他」
を参照してください。
・ Interstage Application Serverに同梱されているJDK/JRE6以降
・ Interstage Studioに添付されているJDK/JRE6以降
利用可能なシステムプロパティ(JVMオプション)
Java EE実行環境で指定可能な以下のシステムプロパティが利用可能です。
・ IIOP接続の待機時間監視機能
・ IIOP通信時のサーバメソッド復帰時間監視機能
・ IIOP通信ソケットの送受信待機時間監視機能
・ IIOP通信クライアントの無通信監視機能
・ 非フラグメントモード
・ 最大メッセージ分割サイズ
・ 最大受信バッファサイズ
2.26 IIOP通信で使用できる時間監視機能
IIOP通信では、以下の時間監視機能が使用できます。
・ IIOP接続の待機時間監視機能
・ IIOP通信時のサーバメソッド復帰時間監視機能
・ IIOP通信ソケットの送受信待機時間監視機能
・ IIOP通信クライアントの無通信監視機能
- 132 -
2.26.1 IIOP接続の待機時間監視機能
IJServerクラスタ未起動やネットワーク異常でクライアントからRMI-IIOPによるサーバへの接続に失敗した場合、接続のリ
トライが行われます。この接続に失敗した場合のリトライ間隔などを指定し、クライアントにタイムアウトが通知される時間を
制御できます。
本監視機能の設定は、クライアントのJava VMでJava VMオプション(システムプロパティ)として指定します。
なお、本監視機能では、プロパティのelapsedの値で以下の2つの時間監視方法を選択することができます。
・ elapsed = false
maxの判定時にコネクションの接続処理時間を含めません。
デフォルト値になります。
・ elapsed = true
maxの判定時にコネクションの接続処理時間を含めます。
プロパティ名:
com.sun.corba.ee.transport.ORBTCPConnectTimeouts
設定値:
設定構文
initial:max:backoff:maxsingle:elapsed
項目
設定内容
値の範囲
initial
初期リトライ間隔(ミリ秒)を設定します。
1~
2147483647
max
全体待ち時間超過判定値(ミリ秒)を設定します。
なお、コネクションの接続処理時間は含みません。
1~
2147483647
backoff
バックオフ値(整数値)を設定します。通常は、10~100の値を設
定します。
リトライ間隔は、リトライごとに(backoff+100)/100を掛けた値に増
加します。
1~
2147483647
例
backoffが20の場合、リトライ間隔は1.2倍、backoffが100の場合、
リトライ間隔は2倍となります。
maxsingl
e
一回あたりの最大リトライ間隔(ミリ秒)を設定します。
elapsed
maxの判定時に、コネクションの接続処理時間を含めるか否かを
設定します。
・ true
maxの判定時にコネクションの接続処理時間を含めます。
・ false
maxの判定時にコネクションの接続処理時間を含めません。
本プロパティは省略可能であり、省略時はデフォルト値のfalseが
使用されます。
デフォルト値:
250:60000:100:5000:false
設定方法:
- 133 -
1~
2147483647
・ true
・ false
・ IJServerクラスタをクライアントとして使用する場合
Java VMオプションに設定します。
-Dcom.sun.corba.ee.transport.ORBTCPConnectTimeouts=設定値
・ アプリケーションクライアントコンテナの場合
VMARGS環境変数に設定します。
set VMARGS=-Dcom.sun.corba.ee.transport.ORBTCPConnectTimeouts=設定値
VMARGS=-Dcom.sun.corba.ee.transport.ORBTCPConnectTimeouts=設定値
export VMARGS
・ スタンドアロンクライアントの場合
Java VMオプションに設定します。
-Dcom.sun.corba.ee.transport.ORBTCPConnectTimeouts=設定値
elapsedの値をfalseに設定した場合
maxの判定時にコネクションの接続処理時間を含めない場合の処理を以下の図に示します。
1. 保持する接続先リストA, B, Cのすべてに接続を試みた後、(1)の時間待機します。
2. 接続をリトライします。
3. 保持する接続先リストA, B, Cのすべてに接続を試みた後、(2)の時間待機します。
4. 接続をリトライします。
5. 保持する接続先リストA, B, Cのすべてに接続を試みた後、(3)の時間待機します。
6. 接続リトライから待機までを繰り返します。
注意
・ (1)、(2)、(3)の時間はリトライの回数と「backoff」の数値により長くなりますが、「maxsingle」の間隔を超えません。
・ 全体待ち時間[max]の超過判定は、接続先リストの最後の接続(C)が失敗するたびに行われます。
・ 接続処理中や待機処理中に全体待ち時間[max]を超過した場合でも、クライアントにタイムアウトが通知されるのは
接続リストの最後の接続が失敗した直後となり、設定値との間に誤差が生じます。
- 134 -
例
以下の場合の動作例を示します。
・ 接続先が複数(接続先A、接続先B、接続先C)である。
・ プロパティの設定が「itial:max:backoff:maxsingle:elapsed=100:250:100:200:false」である。
・ コネクション接続のエラー検出まで50ミリ秒かかる。
経過時間
(ミリ秒)
待ち時間の合計
(ミリ秒)
コネクション接続に関するリトライ動作
0
0
コネクション接続試行(接続先A)。
50
0
コネクション接続失敗を検出し、次の接続先へコネクション
接続試行(接続先B)。
100
0
コネクション接続失敗を検出し、次の接続先へコネクション
接続試行(接続先C)。
150
0
コネクション接続失敗を検出し、リトライ待ち(100ミリ秒)。
250
100
コネクション接続試行のリトライ(接続先A)。
300
100
コネクション接続失敗を検出し、次の接続先へコネクション
接続試行のリトライ(接続先B)。
350
100
コネクション接続失敗を検出し、次の接続先へコネクション
接続試行のリトライ(接続先C)。
400
100
コネクション接続失敗を検出し、リトライ待ち(200ミリ秒)。
600
300
コネクション接続試行のリトライ(接続先A)。
650
300
コネクション接続失敗を検出し、次の接続先へコネクション
接続試行のリトライ(接続先B)。
700
300
コネクション接続失敗を検出し、次の接続先へコネクション
接続試行のリトライ(接続先C)。
750
300
コネクション接続失敗を検出し、待ち時間の合計がmaxを
超過しているので、アプリケーションに例外を通知。
elapsedの値をtrueに設定した場合
maxの判定時にコネクションの接続処理時間を含める場合の処理を以下の図に示します。
接続処理開始からの経過時間が全体待ち時間[max]を過ぎている場合
- 135 -
接続処理開始からの経過時間が待機中に全体待ち時間[max]を過ぎる場合
1. 保持する接続先リストA, B, Cのすべてに接続を試みた後、(1)の時間待機します。
2. 接続をリトライします。
3. 保持する接続先リストA, B, Cのすべてに接続を試みた後、(2)の時間待機します。
4. 接続をリトライします。
5. 保持する接続先リストA, B, Cのすべてに接続を試みた後、(3)の時間待機します。
6. 接続リトライから待機までを繰り返します。
注意
・ (1)、(2)、(3)の時間はリトライの回数と「backoff」の数値により長くなりますが、「maxsingle」の間隔を超えません。
・ 全体待ち時間[max]の超過判定は、接続先リスト(A、B、C)それぞれへの接続が失敗するたびに行われます。
・ 接続処理開始からの経過時間が全体待ち時間[max]を過ぎている場合
接続処理中に全体待ち時間[max]を超過した場合でも、クライアントにタイムアウトが通知されるのは、各接続が失敗
してからとなり、設定値との間に誤差が生じます。
- 136 -
・ 接続処理開始からの経過時間が待機中に全体待ち時間[max]を過ぎる場合
接続先リストの最後の超過判定時点(C)で次の待機処理中に全体待ち時間[max]を超過するものと判断された場合、
次の待機処理を行わずにクライアントにタイムアウトを通知します。
この場合、設定時間よりも前に超過判定されることとなり、設定値との間に誤差が生じます。
例
・ 接続処理開始からの経過時間が全体待ち時間[max]を過ぎている場合
以下の場合の動作例を示します。
- 接続先が複数(接続先A、接続先B、接続先C)である。
- プロパティの設定が「initial:max:backoff:maxsingle:elapsed=100:350:100:200:true」である。
- コネクション接続のエラー検出まで50ミリ秒かかる。
経過時間
(ミリ秒)
待ち時間の合計
(ミリ秒)
コネクション接続に関するリトライ
動作
コネクション接続試行(接続先
A)。
0
0
50
0
コネクション接続失敗を検出し、
次の接続先へコネクション接続
試行(接続先B)。
100
0
コネクション接続失敗を検出し、
次の接続先へコネクション接続
試行(接続先C)。
150
0
コネクション接続失敗を検出し、
リトライ待ち(100ミリ秒)。
250
100
コネクション接続試行のリトライ
(接続先A)。
300
100
コネクション接続失敗を検出し、
次の接続先へコネクション接続
試行のリトライ(接続先B)。
100
コネクション接続失敗を検出し、
経過時間がmaxを超過している
ので、アプリケーションに例外を
通知。
350
・ 接続処理開始からの経過時間が待機中に全体待ち時間[max]を過ぎる場合
以下の場合の動作例を示します。
- 接続先が複数(接続先A、接続先B、接続先C)である。
- プロパティの設定が「initial:max:backoff:maxsingle:elapsed=100:500:100:200:true」である。
- コネクション接続のエラー検出まで50ミリ秒かかる。
経過時間
(ミリ秒)
0
待ち時間の合計
(ミリ秒)
コネクション接続に関するリトライ
動作
コネクション接続試行(接続先
A)。
0
- 137 -
経過時間
(ミリ秒)
待ち時間の合計
(ミリ秒)
コネクション接続に関するリトライ
動作
50
0
コネクション接続失敗を検出し、
次の接続先へコネクション接続
試行(接続先B)。
100
0
コネクション接続失敗を検出し、
次の接続先へコネクション接続
試行(接続先C)。
150
0
コネクション接続失敗を検出し、
リトライ待ち(100ミリ秒)。
250
100
コネクション接続試行のリトライ
(接続先A)。
300
100
コネクション接続失敗を検出し、
次の接続先へコネクション接続
試行のリトライ(接続先B)。
350
100
コネクション接続失敗を検出し、
次の接続先へコネクション接続
試行のリトライ(接続先C)。
100
コネクション接続失敗を検出し、
経過時間+次の待ち時間(200
ミリ秒)がmaxを超過しているので、
アプリケーションに例外を通知。
400
全体待ち時間[max]の超過を検知した後、クライアントに以下の例外を内包する例外が通知されます。
org.omg.CORBA.COMM_FAILURE:
vmcid: SUN
minor code: 220
completed: No
また、アプリケーションクライアントコンテナを使用する場合には、依存性の注入などを行うために起動時にコンテナが
サーバに通信するため、以下の例外によりアプリケーションクライアントコンテナの起動に失敗します。この場合には、起
動時のログに以下の例外情報が出力されているか確認してください。
javax.naming.CommunicationException: Can't find SerialContextProvider [Root exception is
org.omg.CORBA.COMM_FAILURE:
vmcid: SUN minor code: 220 completed: No]
注意
IJServerクラスタプロセス内の呼出しの場合は、RMI-IIOPが使用されませんので監視が行われません。
2.26.2 IIOP通信時のサーバメソッド復帰時間監視機能
IIOPサービスでは、アプリケーションの稼働状況を監視するためのタイムアウト監視機能を備えており、クライアント/サー
バアプリケーションの動作中に、クライアントでサーバメソッドが発行されてから、そのメソッドがクライアントに復帰するま
での時間を監視します。
本監視機能の設定は、クライアントのJava VMでJava VMオプション(システムプロパティ)として指定します。
プロパティ名:
com.sun.corba.ee.transport.ORBWaitForResponseTimeout
- 138 -
設定値:
タイムアウト時間(ミリ秒)
値の範囲:
1~2147483647
注意
1未満の値を設定してもパラメタチェックでエラーとなりませんが、実際の疎通時に即時タイムアウトとなるので1以上の
値を設定してください。
デフォルト値:
1800000 (30分)
設定方法:
・ IJServerクラスタをクライアントとして使用する場合
Java VMオプションに設定します。
-Dcom.sun.corba.ee.transport.ORBWaitForResponseTimeout=設定値
・ アプリケーションクライアントコンテナの場合
VMARGS環境変数に設定します。
set VMARGS=-Dcom.sun.corba.ee.transport.ORBWaitForResponseTimeout=設定値
VMARGS=-Dcom.sun.corba.ee.transport.ORBWaitForResponseTimeout=設定値
export VMARGS
・ スタンドアロンクライアントの場合
Java VMオプションに設定します。
-Dcom.sun.corba.ee.transport.ORBWaitForResponseTimeout=設定値
クライアントにサーバメソッドが復帰するまでの待機時間が設定値を超えた場合、クライアントに以下の例外を内包する例
外が通知されます。
org.omg.CORBA.COMM_FAILURE:
vmcid: SUN
minor code: 219
completed: Maybe
EJBのビジネスインタフェースを使用している場合には、以下の例外メッセージを持つjavax.ejb.EJBException例外が通
知されます。
この時、サーバで処理中のリクエストはキャンセルされません。また、クライアントとサーバ間のコネクションは接続された
ままとなります。
java.rmi.MarshalException: CORBA COMM_FAILURE 1398079707 Maybe; nested exception is:
org.omg.CORBA.COMM_FAILURE:
vmcid: SUN minor code: 219 completed: Maybe
注意
IJServerクラスタプロセス内の呼出しの場合は、RMI-IIOPが使用されませんので監視が行われません。
- 139 -
2.26.3 IIOP通信ソケットの送受信待機時間監視機能
ネットワーク異常や遅延でクライアントからのリクエスト受信(送信)中、またはサーバからのレスポンス受信(送信)中に一度
にデータを受信(送信)できなかった場合、受信(送信)できなかった残りのデータの読込み(書込み)がリトライされます。
この送受信処理に失敗した場合のリトライ間隔などを指定し、クライアントにタイムアウトが通知される時間を制御できます。
本監視機能の設定は、クライアントのJava VMまたはIJServerクラスタでJava VMオプションとして指定します。
プロパティ名:
com.sun.corba.ee.transport.ORBTCPTimeouts
設定値:
設定構文
initial:max:backoff:maxsingle
項目
設定内容
値の範囲
initial
初期リトライ間隔(ミリ秒)を設定します。
1~
2147483647
max
全体待ち時間超過判定値(ミリ秒)を設定します。
1~
2147483647
backoff
バックオフ値(整数値)を設定します。通常は、10~100の値を設
定します。
リトライ間隔は、リトライごとに(backoff+100)/100を掛けた値に増
加します。
1~
2147483647
例
backoffが20の場合、リトライ間隔は1.2倍、backoffが100の場合、
リトライ間隔は2倍となります。
maxsingl
e
一回あたりの最大リトライ間隔(ミリ秒)を設定します。
デフォルト値:
2000:6000:20:2147483647
設定方法:
・ IJServerクラスタの場合
Java VMオプションに設定します。
-Dcom.sun.corba.ee.transport.ORBTCPTimeouts=設定値
・ アプリケーションクライアントコンテナの場合
VMARGS環境変数に設定します。
set VMARGS=-Dcom.sun.corba.ee.transport.ORBTCPTimeouts=設定値
VMARGS=-Dcom.sun.corba.ee.transport.ORBTCPTimeouts=設定値
export VMARGS
- 140 -
1~
2147483647
・ スタンドアロンクライアントの場合
Java VMオプションに設定します。
-Dcom.sun.corba.ee.transport.ORBTCPTimeouts=設定値
以下の図に各リトライ間の待機時間と最大の待機時間を説明します。
RMI-IIOPによりEJBクライアントからIJServerクラスタに配備されているEnterprise Beanに要求を発行すると、クライアント
はリクエストデータをソケットに書き込み、サーバはリクエストデータをソケットから読み込みます。また、サーバがクライア
ントにレスポンスを返す際には、サーバはレスポンスデータをソケットに書き込み、クライアントはレスポンスデータをソケッ
トから読み込みます。
このソケットへの書込み/読込み処理の途中で、書込み/読込み不可状態が「initial」の時間を超過した場合、残りのデー
タの書込み/読込み処理をリトライします。
次のリトライまでの間隔は、リトライの回数と「backoff」の数値により長くなりますが「maxsingle」の間隔を超えません。「max」
の全体待ち時間を過ぎても、書込み/読込み処理が完了しなければ、警告メッセージを通知し、コネクションを切断します。
なお、サーバ側でのリクエスト受信時およびクライアント側でのリクエスト送信時に「max」の全体待ち時間を超過した場合
など、クライアント側のリクエスト送信処理中に異常を検出した場合は、すでにサーバ側に送信済であるリクエストデータ
のキャンセル処理を行います。キャンセル処理が正しく行われた場合は、リトライ可能であると判断し、リクエストデータを
先頭から再送します。
アプリケーションに例外が通知されなかった場合は、リクエストの再送処理に成功したと判断してください。
以下に、処理中にソケットに対する読込み/書込み待機時間を超過した場合の処理について説明します。
クライアントからのリクエスト送受信中に待機時間を超過した場合と、サーバからのレスポンス送受信中に待機時間を超
過した場合で処理内容が異なります。
サーバでリクエスト受信中に待機時間(max)を超過した場合
要求の実行はできません。サーバのサーバーログには、メッセージが出力されません。
クライアントでは、送信中のリクエストのキャンセル処理を行います。キャンセル処理が正しく行われた場合、リトライ可
能と判断し、リクエストデータを再送します。リトライ不可と判断した場合は、例外が通知されます。
EJBのビジネスインタフェースを使用している場合には、以下の例外メッセージを持つjavax.ejb.EJBException例外が
通知されます。
java.rmi.MarshalException: CORBA COMM_FAILURE 1398080289 Maybe; nested exception is:
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 801 completed: Maybe
または
java.rmi.MarshalException: CORBA COMM_FAILURE 1398079696 Maybe; nested exception is:
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 208 completed: Maybe
または
java.rmi.MarshalException: CORBA COMM_FAILURE 1398079691 No; nested exception is:
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 203 completed: No
- 141 -
対処として本監視機能の設定を変更する場合は、サーバ側で実施します。
クライアントでレスポンス受信中に待機時間(max)を超過した場合
サーバのサーバーログには、メッセージが出力されません。
クライアントとサーバの通信が切断され、クライアントにアクセスするインタフェースによりjavax.ejb.EJBExceptionまた
はjava.rmi.RemoteExceptionの例外が通知されます。例外メッセージにIOP00410229メッセージが含まれています。
対処として本監視機能の設定を変更する場合は、クライアント側で実施します。
クライアントでリクエスト送信中に待機時間(max)を超過した場合
要求の実行はできません。クライアントには、IOP00410225メッセージを出力し、リクエストのキャンセル処理を行います。
キャンセル処理が正しく行われた場合、リトライ可能と判断し、リクエストデータが正しく送信できるまでリクエストの再
送が繰り返されます。
キャンセル処理が正しく行われなかった場合、リトライ不可と判断し、例外が通知されます。EJBのビジネスインタフェー
スを使用している場合には、以下の例外メッセージを持つjavax.ejb.EJBException例外が通知されます。
java.rmi.MarshalException: CORBA COMM_FAILURE 1398079713 No; nestedexception is:
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 225 completed: No
このとき、接続先のサーバーログには、IOP00810211メッセージが出力されます。
対処として本監視機能の設定を変更する場合は、クライアント側で実施します。
サーバでレスポンス送信中に待機時間(max)を超過した場合
サーバのサーバーログにIOP00410225メッセージが出力されます。
クライアントとサーバの通信が切断され、クライアントにアクセスするインタフェースによりjavax.ejb.EJBExceptionまた
はjava.rmi.RemoteExceptionの例外が通知されます。
例外メッセージにIOP00410229メッセージが含まれています。
対処として本監視機能の設定を変更する場合は、サーバ側で実施します。
注意
・ IJServerクラスタプロセス内の呼出しの場合は、RMI-IIOPが使用されませんので監視が行われません。
・ 待機時間(max)の超過を検出した場合、待機時間(max)の値を増やしてください。
・ サーバ側で複数のリクエストを同時に処理している際に、待機時間(max)を超えた場合、後続の通信データの異常
により、IOP01000001、IOP00710220、IOP00810202、IOP00810240などが通知される場合があります。
2.26.4 IIOP通信クライアントの無通信監視機能
IIOPサービスでは、クライアントからリクエスト送信する際に、サーバへの無通信状態を監視して一定時間通信が行われ
ていなければ、コネクションを切断後、再接続することができます。
本監視機能の設定は、クライアントのJava VMまたはIJServerクラスタでJava VMオプションとして指定します。
プロパティ名:
com.sun.corba.ee.transport.ORBClientIdleConnectTimeouts
設定値:
タイムアウト時間(ミリ秒)
値の範囲:
0~2147483647
0を設定した場合、クライアント側無通信監視は行いません。
範囲外の値を指定した場合、アプリケーションにUTIL6009メッセージが通知されます。
IJServerクラスタに範囲外の値を指定した場合、IJServerクラスタの起動時にUTIL6009メッセージが通知され、IJServer
クラスタの起動に失敗します。
デフォルト値:
480000 (8分)
- 142 -
設定方法:
・ IJServerクラスタをクライアントとして使用する場合
Java VMオプションに設定します。
-Dcom.sun.corba.ee.transport.ORBClientIdleConnectTimeouts=設定値
・ アプリケーションクライアントコンテナの場合
VMARGS環境変数に設定します。
set VMARGS=-Dcom.sun.corba.ee.transport.ORBClientIdleConnectTimeouts=設定値
VMARGS=-Dcom.sun.corba.ee.transport.ORBClientIdleConnectTimeouts=設定値
export VMARGS
・ スタンドアロンクライアントの場合
Java VMオプションに設定します。
-Dcom.sun.corba.ee.transport.ORBClientIdleConnectTimeouts=設定値
本監視機能を使用した場合、負荷分散装置(IPCOM)やファイアウォールの無通信監視時間などにより、サーバからコネ
クション切断が行われていた時に、クライアント側で新しくコネクションが作成されるため、クライアントからの接続が正常
に実施されます。
- 143 -
第3章 Java EEアプリケーションの開発
ここでは、Java EEアプリケーションの開発方法やdeployment descriptorについて説明します。
3.1 アプリケーションの作成方法
アプリケーションの作成方法について説明します。
3.1.1 Java EEアプリケーションの準備
Java EE規約、およびそのサブ規約を参照して、規約に合ったアプリケーションを作成してください。
また、deployment descriptorについても、Java EE規約、およびそのサブ規約を参照してください。なお、Java EE規約より、
アノテーションがサポートされ、deployment descriptorで定義する内容がソースコード上に記載可能となりました。そのため、
deployment descriptorは、配備時に設定を上書きするために利用されます。
Interstage deployment descriptorの設定
本製品の動作を定義するdeployment descriptor(以降、Interstage deployment descriptor)を、配備モジュールに含めるこ
とができます。詳細は、「3.2.3 Interstage deployment descriptor」を参照してください。
クラスファイルのパッケージ化
プログラムとして作成したクラスファイルをパッケージ化します。
Java EE規約に準じた方法でパッケージ化してください。
・ J2EEアプリケーションクライアントは、jarファイルに格納しパッケージ化します。
・ Webアプリケーションは、WARファイルに格納しパッケージ化します。
・ EJBアプリケーションは、jarファイルに格納しパッケージ化します。
・ リソースアダプタは、rarファイルに格納してパッケージ化します。
アプリケーションごとに作成された上記のパッケージを、さらにEnterprise ARchive(EAR)ファイルとしてパッケージ化でき
ます。それによって運用で使用するアプリケーションすべてを1つのパッケージとして流通できるようになります。
3.1.2 Webサービスアプリケーションの開発
Webサービスアプリケーションは、APIにJAX-WSを使用し、Web Services for Java EEに従ったJava EEアプリケーション
モジュール(WARまたはejb-jar、またはこれらのいずれかまたは両方を含んだEARモジュール)として開発します。
Webサービスアプリケーションのクラスを作成およびコンパイルし、JAX-WSエンドポイントの場合はServlet 2.5のWARモ
ジュールに、Stateless Session Beanの場合はEJB 3.0のejb-jarモジュールにパッケージングします。
参考
本項で使用しているXMLのネームスペースのprefixは以下のとおりです。
ネームスペース
prefix
wsdl
http://schemas.xmlsoap.org/wsdl/
xs
http://www.w3.org/2001/XMLSchema
Webサービスアプリケーションの開発手順例
1. エンドポイントの実装クラスの作成
Webサービスアプリケーションの実装は、以下のいずれかクラスとして作成します。これらのクラスのpublicメソッドが、Web
サービスのオペレーションとして公開対象となります。公開対象のメソッドで利用できるデータ型については、「3.1.4 Web
サービスの通信で利用できるデータ型」を参照してください。
- 144 -
・ JAX-WSエンドポイント
- 任意のpublicクラスにjavax.jws.WebServiceアノテーションを付加したものです。
- 引数なしのpublicなコンストラクタが必要です。
- 公開対象のメソッドの引数および返り値には、「3.1.4 Webサービスの通信で利用できるデータ型」で説明してい
るデータ型が利用できます。
- 詳細については、JAX-WS仕様、Web services for Java EE仕様に従ってください。
・ Stateless Session Bean
- Stateless Session Beanのクラスにjavax.jws.WebServiceアノテーションを付加したものです。
- 公開対象のメソッドの引数および返り値には、「3.1.4 Webサービスの通信で利用できるデータ型」で説明してい
るデータ型が利用できます。
- 詳細については、EJB仕様、JAX-WS仕様、およびWeb services for Java EE仕様に従ってください。
例
以下では、エンドポイントの実装クラスにJAX-WSエンドポイントを使用する場合の例について説明します。
JAX-WSエンドポイントの場合
package stock.server;
@javax.jws.WebService
public class StockQuoteProvider {
public StockQuoteProvider () {}
public float getLastTradePrice (String tickerSymbol) {
return "abc".equals(tickerSymbol)? 1234.0f : 0.0f;
}
}
注意
・ Java識別子(メソッド、変数、Beanプロパティなど)、@javax.jws.WebParamアノテーション、および@javax.jws.WebResult
アノテーションのname要素などには、大文字小文字問わず"xml"または"xml"で始まる値を使用しないでください。
・ Webサービスに付与するアノテーションやWSDLファイル内で使用している要素のname属性などには、Javaの予約
語を指定しないでください。
・ document/literal形式の場合、parameterStyle属性の値にBAREを指定することは推奨しません。
・ document/literal 形 式 か つ parameterStyle 属 性 に BARE を 指 定 し た 場 合 、 out/inout パ ラ メ ー タ ー に は
@javax.jws.WebParamアノテーションのname属性を必ず指定してください。@javax.jws.WebParamアノテーションの
name属性を指定しない場合、正しいWSDLを生成できません。
・ エンドポイントの実装クラスを複数配備する場合、パッケージ名が同じ実装クラス間で同名のメソッドは定義しないで
ください。
・ パッケージ名の一部に「.jaxws」を含むクラスは、Webサービスアプリケーション、およびその公開メソッドのパラメタ、
復帰値、例外として使用しないでください。
・ javax.jws.WebServiceアノテーションのwsdlLocation属性またはwebservices.xmlの<wsdl- file>タグに既存のWSDL
ファイルを指定する場合は、対象のWSDLファイルを配備するモジュール内に含め、モジュールのルートからの相対
URLを指定してください。
・ エンドポイントのURLを構成する文字(例えば、@javax.jws.WebServiceアノテーションのserviceName属性値)やWSDL
のanyURI型の属性に変換される文字には、ASCIIコード範囲の利用可能な文字だけを使用してください。
- 145 -
2. エンドポイントの実装クラスのコンパイル
エンドポイントの実装クラスをコンパイルします。コンパイルには、以下のJARファイルが必要です。
C:\Interstage\F3FMisjee\lib\endorsed\webservices-api.jar
/opt/FJSVisjee/lib/endorsed/webservices-api.jar
javacコマンドの-classpathオプションで上記JARファイルを指定します。
例
javac -classpath C:\Interstage\F3FMisjee\lib\endorsed\webservices-api.jar;. WEB-INF\classes WEB-INF\classes\stock
\server\StockQuoteProvider.java
3. パッケージング
WARモジュール/ejb-jarモジュールにパッケージングします。
例
>jar cvf StockQuote.war .
注意
・ パッケージ名がjava.やjavaxで始まるAPIを除き、Webサービスの実装クラスから直接利用しているクラス、およびサー
ビスエンドポイントインタフェースが存在する場合は、サービスエンドポイントインタフェースとその関連クラスはすべて
モジュール内に含めてください。
・ WARモジュール/ejb-jarモジュールにソースファイルを含めることは推奨しません。WARモジュール/ejb-jarモジュー
ルにソースファイルを含める場合は、クラスファイルを生成したときのソースファイルを入れてください。
・ Web サ ー ビ ス ア プ リ ケ ー シ ョ ン の み を モ ジ ュ ー ル に パ ッ ケ ー ジ す る 場 合 は 、 Web application deployment
descriptor(web.xml)または EJB application deployment descriptor (ejb-jar.xml)などをモジュールに含める必要はあり
ません。
これらをモジュールに含める場合は、Web Services for Java EE 1.2規約に正しく従うよう特に注意してください。
配備とWSDLの取得・保管
パッケージングしたモジュールは、通常のモジュールと同様にIJServerクラスタに配備します。
例
WARモジュールをIJServerクラスタ「IJServerWS」に配備する場合
>asadmin deploy --target IJServerWS StockQuote.war
配備したアプリケーションが運用可能な状態のとき、エンドポイントのURLに"?wsdl"を付加したURLからWSDLを取得で
きます。エンドポイントのURLは、deployment descriptorにservlet-mappingなど指定している場合はその指定した
URL(Servletと同様)になります。特に指定していない場合、下記となります。
- 146 -
JAX-WSエンドポイント
http://ホスト名:ポート番号/コンテキストルート/Webサービス名
Stateless Session Bean
http://ホスト名:ポート番号/Webサービス名/エンドポイント名
上記の各項目について説明します。
項目
説明
"http"
SSLを使用する場合は"https"になります。
ホスト名、ポート番号
配備したホストのWebアプリケーションにアクセスするホスト名およびポー
ト番号。ポート番号がデフォルトの場合、":ポート番号"は省略できます。
コンテキストルート
WARファイルのコンテキストルート(デフォルトはWARファイル名から".war"
を除いたもの)。
Webサービス名
deployment descriptorやjavax.jws.WebServiceアノテーションで
serviceName属性を指定した場合は、その名前です。指定していない場合、
実装クラスのパッケージ名を含まないクラス名の後ろに"Service"を付加し
た名前です。
エンドポイント名
deployment descriptorでポートコンポーネント名やjavax.jws.WebService
アノテーションでname属性を指定した場合は、その名前です。指定して
いない場合、実装クラスまたはインタフェースのパッケージ名を含まない
クラス名です。
WSDLは、通常、wsdl:import要素やxs:import要素などの外部XMLを取り込む機構によって複数のファイルで構成され
ます。ijwsimportコマンドで取り込み先も合せて一式を取得できます。
例
ijwsimportコマンドでWSDL一式を取得する例
>ijwsimport -nogenerate -s dev\wsdl http://ws.example.com/StockQuote/StockQuoteProviderService?wsdl
取得したWSDLは、Webサービスのインタフェース定義として、一式を保管・管理します。
注意
ijwsimportコマンドで取得保存されるWSDLは、インタフェース定義の記録・管理用です。wsdl:import要素などが取り込
むXMLのURLも含め、取得した内容のまま保存されます。ijwsimportコマンドの引数に指定したWSDLと共に、取り込ま
れる対象のファイルも取得保存されますが、取得保存されたファイルは取り込み元から参照されていないため、取得した
WSDL一式だけをそのまま利用することはできません。
WebサービスクライアントへのWSDLの提供
Webサービスクライアントの開発者に、Webサービスのインタフェース定義としてWSDLを提供します。以下のいずれかの
方法で提供できますが、通常はWSDL取得URLの通知で行ってください。
・ WSDL取得URLを通知する
- Webサービスクライアントの開発者に上記のWSDLのURLを知らせ、取得するように通知します。
- 上記のWSDLのURLへは、Webサービスクライアントの環境からアクセスできるようにしておいてください。
- 通常は、こちらの方法でWSDLを提供してください。
- 147 -
・ ijwsimportコマンドで取得保管したWSDL一式をファイルで提供する
- Webサービスクライアントの環境からアクセスさせることができないなど、WSDL取得URLの通知によるWSDLの
提供が著しく困難であり、かつ、WSDLおよびXML Schemaなどに十分な理解があり正確に誤りなく編集できる
場合だけ、こちらの方法で提供することもできます。
- 前項で保管したWSDL一式は、wsdl:import要素やxs:import要素などが取り込むXMLとして元のままのWSDL
取得URLを指したままです。そのため、保管したWSDL一式のファイルだけをそのまま提供してもWebサービス
クライアントの環境では利用できません。
- 適切なOASIS XML Catalogを作成して添付する、またはWSDL一式中のwsdl:import要素やxs:import要素で参
照している絶対URLを適切な相対パスに修正するなど、Webサービスクライアントの環境で利用可能にするため
の措置を行ってください。
- 措置を行ったWSDL一式は、Webサービスクライアントの開発者にメールなど任意の方法で提供してください。
- WSDL一式の内容を修正する場合は、ファイルの内容を正しく理解した上で、正確に誤りなくwsdl:import要素の
location属性やxs:import要素のschemaLocationなどの参照先URLだけを修正してください。困難な場合は、Web
サービスクライアントの環境からWSDLのURLにアクセスできるように環境を整え、WSDL取得URLの通知による
WSDLの提供を行ってください。
3.1.3 Webサービスクライアントアプリケーションの開発
Webサービスクライアントアプリケーションは、利用する(呼び出す)WebサービスのWSDLに基づいて、APIにJAX-WSを
使用し、Web Services for Java EEに従ったJava EEアプリケーションまたはJava EEアプリケーションクライアントとして開発
します。
利用する(呼び出す)WebサービスのWSDLを取得・保管
利用するWebサービスのインタフェース定義であるWSDL一式を、Webサービスの提供者から取得し、保管します。
・ WSDLのURLを知らされている場合(Webサービスも自ら開発している場合も含む)
「Webサービスクライアントアプリケーションの開発手順例」で例示しているとおり、スタブを生成する際に、ijwsimport
コマンドに-keepオプションを指定してそのURLを直接指定することで、ローカルにWSDL一式が保存されます。保存
されたWSDL一式を保管・管理してください。
・ WSDL一式をファイルとして提供されている場合
提供されたWSDLを保管・管理してください。
保管したWSDL一式は、インタフェース定義の仕様として、通信のトラブルが発生した場合などの重要な基本資料になり
ます。また、インタフェースに変更が発生した場合の確認のためにも、入手したWSDL一式は保管してWebサービスクラ
イアントアプリケーションと共に管理することを強く推奨します。
また、取得したWSDL一式の定義内容について、「3.1.5 Webサービス・Webサービスクライアントで使用するWSDLの記
述について」を参照して、問題がないか確認してください。
Webサービスクライアントアプリケーションの開発手順例
1. スタブの生成
入手したWSDLからJAX-WSで利用するスタブを生成します。ijwsimportコマンドを使用します。詳細は、「リファレンスマ
ニュアル(コマンド編)」-「ijwsimport」を参照してください。
例
通知されたURLからWSDLを取得してスタブを生成する例
ijwsimport -keep http://ws.example.com/StockQuote/StockQuoteProviderService?wsdl
トラブル時などの調査のため、-keepオプションで最終生成物以外の資材(ソースファイルなど)も保存・保管することを強
く推奨します。
- 148 -
2. アプリケーションの作成
生成したスタブ類を使用して、JAX-WSおよびWeb Services for Java EEに従ったアプリケーションを作成します。
例
stock.server.パッケージに生成されたスタブ類を使用する例
public class StockQuoteClient {
@javax.xml.ws.WebServiceRef
static stock.server.StockQuoteProviderService service;
public static void main(String[] args) throws Exception {
stock.server.StockQuoteProvider port = service.getStockQuoteProviderPort();
System.out.println(port.getLastTradePrice(args[0]));
}
}
3. アプリケーションのコンパイル
アプリケーションをコンパイルします。コンパイルには、以下のJARファイルが必要です。
C:\Interstage\F3FMisjee\lib\endorsed\webservices-api.jar
/opt/FJSVisjee/lib/endorsed/webservices-api.jar
javacコマンドの-classpathオプションで上記JARファイルを指定します。
例
カレントディレクトリにソースファイルおよびスタブ類のルートディレクトリがある場合
javac -classpath C:\Interstage\F3FMisjee\lib\endorsed\webservices-api.jar;. StockQuoteClient.java
4. パッケージング
Java EEアプリケーションモジュール(WARまたはejb-jar、またはアプリケーションクライアント)にパッケージングします。必
要に応じてパッケージングするJava EEアプリケーションモジュールのdeployment descriptorも作成してモジュールに含め
ます。
アプリケーションクライアントへのパッケージングについては、「3.1.6 クライアントアプリケーションの作成方法」を参照して
ください。
例
アプリケーションクライアントにパッケージングする場合(Main-Classを定義したマニフェストファイルをMETA-INFディレ
クトリに用意してある)
jar cvfm stockclient.jar META-INF/MANIFEST.MF .
注意
クラス名に関する注意事項
- 149 -
Webサービスアプリケーション、またはWebサービスクライアントをIJServerクラスタに配備する場合、Webクラスローダの委
譲モデルの設定にかかわらず、Enterprise ARchive(EAR)ファイル内に同名のクラスが複数含まれないようにしてください。
ijwsimportコマンドを使用してWebサービスクライアントで使用するスタブを生成する場合、通常は呼び出し先のWebサー
ビスエンドポイントと同名のクラスが生成されます。
そのため、WebサービスアプリケーションとそのWebサービスアプリケーションを呼び出すWebサービスクライアントアプリ
ケーションを単一のEnterprise ARchive(EAR)ファイルに含めて配備する必要がある場合は、生成するクラス名をサーバ
側のクラス名と重複しないでください。クラス名を重複させないためには、以下のいずれかの方法でクラスを生成してくだ
さい。
・ ijwsimportコマンドの-pオプションを指定してパッケージ名をカスタマイズする。
・ ijwsimportコマンドの-bオプションで指定するバインディングファイルを使用してパッケージ名またはクラス名をカスタ
マイズする。
クラス名のマッピングの詳細については、JAX-WSおよびJAXBを参照してください。
注意
アプリケーション開発における注意事項
・ javax.xml.ws.Serviceオブジェクト(上記の例では、stock.server.StockQuoteProviderServiceクラス)のインスタンス作成
では、内部的に多くの処理が行われます。アプリケーションの性能向上のため、javax.xml.ws.Serviceオブジェクトを
リクエストごとに取得するのではなく、上記の例のようにjavax.xml.ws.WebServiceRefアノテーションによるインジェク
ションを利用することを推奨します。
・ 単一のスタブオブジェクト(上記の例ではstock.server.StockQuoteProviderクラス)は、複数のスレッドで同時に使用で
きません。上記の例のようにjavax.xml.ws.Serviceオブジェクトからリクエストごとに毎回取得する、またはスレッドの排
他を行って利用する、などの対応が必要です。
・ javax.xml.ws.Dispatchインスタンスを作成する場合、JAXBオブジェクトかつMESSAGE モードは使用しないでくださ
い。JAXBオブジェクトを使用する場合は、PAYLOADモードを使用してください。MESSAGEモードを使用する場合
は、javax.xml.transform.Source、またはjavax.xml.soap.SOAPMessageを使用してください。
HTTP関連のリクエストプロパティ設定
必 要 な 場 合 、 Web サ ー ビ ス の URL の 変 更 や Basic 認 証 の ユ ー ザ 名 ・ パ ス ワ ー ド な ど 、 HTTP に 関 す る 設 定 を
javax.xml.ws.BindingProviderオブジェクトを通じてリクエストコンテキストのプロパティとして指定できます。使用できるプ
ロパティについては、javax.xml.ws.BindingProviderのJavadocやJAX-WS仕様を参照してください。同インタフェースの
ENDPOINT_ADDRESS_PROPERTY,
PASSWORD_PROPERTY,
SESSION_MAINTAIN_PROPERTY,
SOAPACTION_URI_PROPERTY, SOAPACTION_USE_PROPERTY, USERNAME_PROPERTYの各フィールド値で
表されるJAX-WS標準のプロパティのほか、以下の設定も行えます。
プロパティ名
指定値
com.sun.xml.ws.request.timeout
java.lang.Integer型の0以上の値で、HTTP通信の読み込みタイムアウトを
ミリ秒単位で指定します。0を指定した場合、読み込みタイムアウト制限を
しません。この値は、java.net. HttpURLConnection#setReadTimeoutメソッ
ドに渡されます。
com.sun.xml.ws.connect.timeout
java.lang.Integer型の0以上の値で、HTTP通信のサーバへの接続タイム
アウトをミリ秒単位で指定します。0を指定した場合、接続タイムアウト制限
をしません。この値は、java.net. HttpURLConnection#setConnectTimeout
メソッドに渡されます。
例
Basic認証のユーザ名を「myname」、パスワードを「mypassword」に設定し、接続タイムアウトを15秒、読み込みタイムア
ウトを1分に設定する例
- 150 -
stock.server.StockQuoteProvider port = service.getStockQuoteProviderPort();
java.util.Map<String, Object> requestContext = ((javax.xml.ws.BindingProvider)port). getRequestContext();
requestContext.put(javax.xml.ws.BindingProvider.USERNAME_PROPERTY, "myname");
requestContext.put(javax.xml.ws.BindingProvider.PASSWORD_PROPERTY, "mypassword");
requestContext.put("com.sun.xml.ws.connect.timeout", 15 * 1000);
requestContext.put("com.sun.xml.ws.request.timeout", 60 * 1000);
System.out.println(port.getLastTradePrice(args[0]));
注意
SOAPActionヘッダの値を指定しない場合は、SOAPリクエストコンテキストのSOAPACTION_URI_PROPERTYを指定し
ないでください。SOAPACTION_URI_PROPERTY を指定すると、SOAPACTION_USE_PROPERTYの値に関係なく、
SOAPActionヘッダの値として送られてしまいます。
プロキシの利用
プロキシの利用については、Webサービスクライアントアプリケーションが動作する環境に、Java標準のネットワークのシ
ステムプロパティ(例. http.proxyHost)で必要な設定を行ってください。
3.1.4 Webサービスの通信で利用できるデータ型
ここでは、Webサービスの通信での利用がサポートされているデータ型について説明します。Java EEのWebサービスア
プリケーションではJavaとXMLの間のデータ変換には、JAXBが使用されます。ここでは、利用できるデータ型として以下
を説明します。ここで説明していないデータ型や、変換の詳細についてはJAX-WSおよびJAXBのドキュメントを参照して
ください。
・ Javaの基本データ型とXMLデータ型
・ Bean型
・ 配列・コレクション型
・ 添付ファイル型
・ out/inoutパラメタとしての利用
・ その他
注意
受信したメッセージに含まれるデータの形式に異常がある場合、該当するJavaの値は言語仕様で定められた各データ型
の初期値としてアプリケーションに渡される場合があります。本動作はJAX-WSおよびJAXBの標準規約によるものです。
・ Javaの参照型(クラス型、インタフェース型、配列型。本項で説明している、Bean型、配列・コレクション型、添付ファイ
ル型、およびプリミティブ型をラップするjava.langパッケージのクラスは該当します)では、初期値であるnullをアプリ
ケーションで受け取った場合には、送信元がnullを意図して送信したのではなく、データ異常が発生している可能性
もあります。そのため、アプリケーションおよびシステムの設計として、nullを正常値とせず異常値として扱うことをお勧
めします。
・ また、下記の各節固有の注意事項も参照してください。
参考
本項で説明に使用しているXMLデータ型のprefixに対応するネームスペースは、以下のとおりです。アプリケーションや
コマンドの実行時には、本項で説明するネームスペースに対して下記以外のprefixが使用されることがあります。
- 151 -
ネームスペース
prefix
xs
http://www.w3.org/2001/XMLSchema
xsi
http://www.w3.org/2001/XMLSchema-instance
wsi
http://ws-i.org/profiles/basic/1.1/xsd
Javaの基本データ型とXMLデータ型
Webサービスアプリケーションのパラメタ(引数、返り値)で使用できる基本的なデータ型と、それに対応してXMLで使用
される型を以下に示します。
Javaのデータ型
XMLで使用されるデータ型
int
xs:int
short
xs:short
long
xs:long
byte
xs:byte
float
xs:float
double
xs:double
boolean
xs:boolean
java.lang.Integer
xs:int
java.lang.Short
xs:short
java.lang.Long
xs:long
java.lang.Byte
xs:byte
java.lang.Float
xs:float
java.lang.Double
xs:double
java.lang.Boolean
xs:boolean
java.lang.String
xs:string
java.math.BigDecimal
xs:decimal
java.math.BigInteger
xs:integer
java.util.Calendar
xs:dateTime
javax.xml.namespace.QName
xs:QName
java.net.URI
xs:string
byte[]
xs:base64Binary
注意
基本データ型の注意事項
・ byte[]型に対してJAXBの@javax.xml.bind.annotation.XmlSchemaTypeアノテーションを使用してxs:hexBinaryにマッ
プするようにマッピングをカスタマイズする場合は、同時に@javax.xml.bind.annotation.XmlTypeAdapterアノテーショ
ンも使用してパラメタにjavax.xml.bind.annotation.adapters.HexBinaryAdapterのクラスオブジェクトを指定してください。
・ 本項冒頭記載の仕様により、Javaのプリミティブ型(int、short、long、byte、float、double、boolean)では、0や0.0,false
などの各データ型の初期値をアプリケーションで受け取った場合には、送信元がその値を意図して送信したのでは
なく、受信したメッセージに含まれるデータの形式に異常が発生している可能性があります。そのため、アプリケー
ションおよびシステムの設計として、Javaのプリミティブ型については元から設定されていた値や0や0.0,falseなどの各
データ型の初期値を正常値として使用しない事をお勧めします。または、Javaのプリミティブ型は使用せず、代わりに
- 152 -
プリミティブ型をラップするjava.langパッケージのクラス(Integer、Short、Long、Byte、Float、Double、Boolean)を使用
してnullを異常値として扱う事をお勧めします。
・ java.lang.Stringでは、アプリケーションに渡される値として空文字列("")とnullは区別されません。そのため、アプリケー
ションおよびシステムの設計として、nullと共に空文字列を正常値として使用しない事をお勧めします。
Bean型
ユーザ定義のJavaクラス(Bean型)をWebサービスの通信で利用できます。Bean型のpublicフィールドやプロパティに、サ
ポートされているデータ型を使用することで、より複雑な構造を持ったデータをWebサービスの通信で利用できます。
Bean型は、次の条件を満たすpublicクラスとして定義します。
・ publicデフォルトコンストラクタを持つ
・ 以下のいずれかのデータ型として、サポートされているデータ型を使用している
- publicフィールド
- プロパティのsetter/getter
参照
プロパティの詳細については、JavaBeansのドキュメントを参照してください。
Bean型はWSDL定義ではxs:sequenceを内容とするxs:complexTypeとして表現されます。また、Bean型のpublicフィール
ドやプロパティは、いずれもxs:sequenceの子要素のxs:elementとして表現されます。
例
Bean型の定義例
package com.example;
// パッケージ名
public class PersonBean {
// public フィールド"age"の宣言
public int age;
// プロパティ"name"の宣言
private String name;
public void setName(String name) { this.name = name; } //プロパティのsetter
public String getName() { return this.name; } //プロパティのgetter
}
上記のJavaに対応する、XMLのデータ型のWSDL定義例を以下に示します。
<xs:complexType name="PersonBean">
<xs:sequence>
<xs:element name="age" type="xs:int"/>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
アノテーションを使用して定義をカスタマイズする場合には、次のように宣言します。プロパティに対しては、getterメソッド
にアノテーションを宣言してください。
- 153 -
例
アノテーションを使用したBean型の定義例
package com.example;
// パッケージ名
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlElement;
@XmlType(name="Person") //アノテーションによるXMLデータ型名の指定
public class PersonBean {
// public フィールド"age"の宣言
@XmlElement(name="personAge") //アノテーションによるXML要素名の指定
public int age;
// プロパティ"name"の宣言
private String name;
public void setName(String name) { this.name = name; } //プロパティのsetter
@XmlElement(name="personName") //アノテーションによるXML要素名の指定
public String getName() { return this.name; } //プロパティのgetter
}
上記のJavaに対応する、XMLのデータ型のWSDL定義例を以下に示します。
<xs:complexType name="Person">
<xs:sequence>
<xs:element name="personAge" type="xs:int"/>
<xs:element name="personName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
注意
Bean型の注意事項
・ Bean型を使用する場合は、クラス内でプロパティ名とpublicフィールド名が大小文字の区別にかかわりなく重複しな
いように定義してください。
・ Bean型のpublicフィールドまたはプロパティで @javax.xml.bind.annotation.XmlElementアノテーションのnillableパラ
メタにtrueを指定する場合は、同時にtargetNamespaceパラメタを指定しないでください。
・ Bean型のプロパティにアノテーションを付与する場合は、getterだけに付与し、setterやプロパティによってカプセル化
されたprivateフィールドなどには付与しないでください。
配列・コレクション型
値を複数個持つパラメタを表現するために、配列やjava.util.Collectionインタフェースを実装したコレクションクラスを使用
して、サポートされているデータ型をWebサービスの送受信に利用できます。コレクションクラスを利用する場合は、
java.util.List<String>などのように、型パラメタを宣言することでコレクションの内容となるデータ型を明示できます。
例
String[]、およびjava.util.List<String>に対応するXMLデータ型のWSDL定義例
<xs:element name="array" type="xs:string" nillable="true" minOccurs="0" maxOccurs="unbounded" />
- 154 -
注意
配列・コレクション型の注意事項
・ nullでの送信について
アプリケーション上で配列やListのパラメタをnullで送信した場合、受信側で要素数0の配列やListとして取得される
場合があります。
・ 要素数0の配列やListでの送信について
アプリケーション上で配列やListのパラメタを要素数0で送信した場合、受信側でnullとして取得される場合があります。
・ コレクションクラスの型パラメタを指定しない場合、対応するXMLデータ型はxs:anyTypeとなり、通信に使用される
データ型は実行時のオブジェクトによって決まります。実行時にサポートされていないJavaデータ型を使用した場合
は正常に通信が行えない場合があります。
・ Bean型のpublicフィールドまたはプロパティで配列型を使用する場合、@javax.xml.bind.annotation.XmlElement
(nillable=true)を必ず指定してください。
・ Webサービスエンドポイントの引数または返り値で配列型を使用する場合、@javax.jws.WebParamアノテーションの
targetNamespaceパラメタは指定しないでください。
・ java.lang.Integerなどの数値を表す型で配列型を定義する場合、要素にはnullを使用できません。
・ コレクション型の型パラメタには配列またはコレクション型を指定しないでください。
・ Javaの配列では、受信したメッセージに含まれるデータの形式に異常がある場合、該当する要素を除外して短縮さ
れた配列としてアプリケーションに渡される場合があります。通常は、配列ではなくコレクション型を使用することをお
勧めします。
・ rpc/literal形式またはdocument/literal形式でparameterStyle属性にBAREを指定したWebサービスでは、コレクション
型(java.util.Collectionまたはそのサブクラス)をWebサービスの通信に使用することはできません。使用している場合
は、コレクション型以外のデータ型に変更するか、または、Webサービスをdocument/literal形式(デフォルト)かつ
parameterStyle属性WRAPPED(デフォルト)に変更してください。
添付ファイル型
primitive型やStringなどのような値を扱うデータ型の他に、ファイルなどのバイナリデータをWebサービスで利用できます。
この場合、バイナリデータをXMLに変換してSOAPメッセージ本体に含めるのではなく、SOAPメッセージに付随した添付
ファイルとして扱うことで、サイズの大きいバイナリデータでも効率よく処理できます。
Webサービスアプリケーションで添付ファイルを使用するには、javax.activation.DataHandlerクラスを使用します。通常の
データ型と同様に、Webサービスアプリケーションのパラメタ(引数、返り値)、Bean型のフィールド、プロパティなどに宣言
できます。
Webサービスアプリケーションで添付ファイルを利用する場合、以下の2つの方式を利用できます。いずれもバイナリデー
タをSOAPメッセージの添付ファイルとするために、MIMEマルチパート構造を利用しますが、MIMEパートへのエンコー
ド方法が異なります。
・ MTOM
・ WS-I Attachments Profile
MTOM方式の場合のアプリケーション作成方法
Webサービスアプリケーションでは、以下を行います。
・ Webサービスアプリケーションのクラスに@javax.xml.ws.soap.MTOMアノテーションを宣言して、MTOMを有効にし
ます。
・ MTOMで送信するDataHandlerクラスのパラメタまたはプロパティの宣言に@ javax.xml.bind.annotation.XmlMimeType
アノテーションを宣言し、アノテーションの引数にMIMEタイプを指定します。特定のMIMEタイプに限定させる必要
がなければ「*/*」を指定します。
Webサービスクライアントでは、以下を行います。
- 155 -
・ サービスオブジェクトからスタブオブジェクトを取得する際に、javax.xml.ws.soap.MTOMFeatureオブジェクトを渡しま
す。
例
MTOM方式で添付ファイルを利用するWebサービスアプリケーションの作成例
@MTOM
@WebService
public class Hello {
@WebMethod
public void upLoad(String saveFileName,
@XmlMimeType("*/*") DataHandler data) {
:
}
}
例
MTOM方式で添付ファイルを利用するWebサービスクライアントの作成例
DataHandler dataHandler =
new DataHandler(new javax.activation.FileDataSource("./myFile.doc");
Hello port = new HelloService.getHelloPort(new MTOMFeature());
port.upLoad("myFile.doc", dataHandler);
WS-I Attachments Profile方式の場合のアプリケーション作成方法
Webサービスアプリケーションでは、以下を行います
・ DataHandlerクラスの宣言に@javax.xml.bind.annotation.XmlAttachmentRefアノテーションを宣言します。
Webサービスクライアントでは、特に必要な処理や宣言はありません。DataHandlerオブジェクトを通常のパラメタまたはプ
ロパティと同様に利用してください。
例
WS-I Attachments方式で添付ファイルを利用するWebサービスアプリケーションの作成例
@WebService
public class Hello {
@WebMethod
public void upLoad(String saveFileName,
@XmlAttachmentRef DataHandler data) {
:
}
}
例
WS-I Attachments方式で添付ファイルを利用するWebサービスクライアントの作成例
DataHandler dataHandler =
new DataHandler(new javax.activation.FileDataSource("./myFile.doc");
- 156 -
Hello port = new HelloService.getHelloPort();
port.upLoad("myFile.doc", dataHandler);
Webサービスクライアントから大きいサイズの添付ファイルを送信する場合
Webサービスクライアントからの添付ファイルの送信では、デフォルトでは添付データに対して内部バッファ処理を行って
から送信処理を行います。この方法は、通信データが小さい場合に効率よく転送処理を行えますが、メモリ内に十分な
サイズのバッファが必要となります。
数MByteを超える大きなサイズの添付ファイルをWebサービスクライアントから送信する場合は、クライアントアプリケーショ
ン内で以下のようにして添付ファイルをストリーミングモードで送信するように設定してください。
・ 取得したスタブオブジェクトをjavax.xml.ws.BindingProviderクラスにキャストする。
・ キャストしたスタブオブジェクトのgetRequestContextメソッドを呼び、返却されたMapオブジェクトに対してputメソッドで
以下の値をセットする。
キー
値
"com.sun.xml.ws.transport.http.client.streaming.chunk.size"
値が0のjava.lang.Integerオブジェクト
例
添付ファイルをストリーミングモードで送信するWebサービスクライアントの作成例(MTOM方式)
DataHandler dataHandler =
new DataHandler(new javax.activation.FileDataSource("./myFile.doc");
Hello port = new HelloService.getHelloPort(new MTOMFeature());
BindingProvider provider = (BindingProvider) port;
provider.getRequestContext().put(
"com.sun.xml.ws.transport.http.client.streaming.chunk.size",
new Integer(0));
port.upLoad("myFile.doc", dataHandler);
注意
添付ファイルの注意事項
・ 今版ではMTOM方式の添付ファイルを利用する場合、Java EE管理コンソールの[Webサービス] > [Webサービス
名] > [監視]タブ > [メッセージ]タブには正確な情報が表示されません。
・ MTOMとWS-I Attachments Profileは、互いに互換性のない方式です。1つのWebサービスアプリケーション内で2つ
の方式を混在させないでください。
・ IJServerクラスタでは、javax.activation.DataHandler以外のJAXB の添付ファイル型もサポートしていますが、クラスの
仕様上、DataHandler以外のクラスではバイナリデータからJavaオブジェクトへの変換が行われるなど、オリジナルの
バイナリデータが正確に保持されない場合があります。本製品では、これらのクラスの利用を推奨していません。
・ 受信した添付ファイルのDataHandlerオブジェクトから取得できるInputStreamは、ブロックなしにデータを読み出せる
場合もavailable()メソッドが0を返し続けることがあります。
・ @XmlMimeTypeや@XmlAttachmentRefアノテーションは、2次元以上の配列またはコレクションに直接付与しない
でください。代わりに、上記アノテーションを付与したpublicフィールドまたはプロパティを持つBean型のクラスを作成
し、作成したクラスを任意の次元数の配列やコレクションで送受信してください。
・ ストリーミングモードの設定時にMapオブジェクトに設定するInterger値には、0以外の値を指定しないでください。
・ Webサービスアプリケーションの例外オブジェクトの内容として、添付ファイルをMTOM/ WS-I Attachments Profile形
式で送信することはできません。この場合、javax.activation.DataHandlerなどのオブジェクトに含まれるバイナリデー
タは、xs:base64Binary型のデータとしてSOAPエンベロープに含まれて送信されます。
- 157 -
・ rpc/literal形式の場合、またはdocument/literal形式でparameterStyle属性にBAREを指定した場合は、サービスエン
ドポイントのメソッド引数や返り値に直接DataHandlerなどのクラスを宣言せずに、Bean型のメンバとして添付ファイル
を送受信してください。サービスエンドポイントのメソッド引数や返り値に直接宣言した場合は、オブジェクトに含まれ
るバイナリデータはxs:base64Binary型のデータとしてSOAPエンベロープに含まれて送信されます。
・ 1Mバイト以上の添付ファイルを受信する場合、メモリ節約のため内部的に一時ファイルが作成されます。一時ファイ
ルは、システムプロパティjava.io.tmpdirにセットされたディレクトリに次の命名規則で生成されます。
- MIME*****.tmp
*****の部分は任意の数字です。
一時ファイルの作成場所には、呼量と添付ファイルの上限値に応じて十分なディスク容量を確保してください。
通常、一時ファイルは添付ファイルデータのオブジェクトがGCによって回収される際やJava VMの終了時に削除され
ますが、Javaプロセスが異常終了した場合、ファイルは削除されずに残ることがあります。その場合は、上記ファイル
がどのプロセスからも使用されていないことを確認後、手動で削除してください。
また、java.io.tmpdirをデフォルトの値から変更してアプリケーションを実行する場合は、Webサービスを実行する
IJServerクラスタやWebサービスクライアントの実行ユーザに書き込み権限があることを確認してください。
・ WebサービスアプリケーションがWS-I Attachments方式で添付ファイルを利用する場合、配備後に公開されるWSDL
ファイルはインターネット外部ページへの参照を含んでいる場合があります。
out/inoutパラメタとしての利用
サポートされているデータ型を、outパラメタまたはinoutパラメタとして利用する場合、Webサービスアプリケーションのメ
ソッドでjavax.xml.ws.Holderクラスを使用して引数を宣言してください。
ポイント
out/inoutパラメタについて
・ outパラメタとは、クライアントからは値を送信せず、サーバから値が返信される引数です。
・ inoutパラメタとは、クライアントから値を送信するとともに、サーバからも値が返信される引数です。
Webサービスアプリケーション、Webサービスクライアントでは、out/inoutパラメタに対応するJava上の引数として、Holder
クラスを使用します。
Holderクラスの変数の宣言方法
Holder<サポートされているデータ型のクラス名> 変数名
HolderクラスをWebサービスアプリケーションのメソッド引数に宣言する場合は、型パラメタとしてサポートされているデー
タ型のクラス名を指定してください。型パラメタに指定したクラスは、Holderオブジェクトのpublicフィールド「value」のフィー
ルド型として使用されます。
Holderクラスの引数には、@javax.jws.WebParamアノテーションのmodeメンバを使用して、INOUTやOUTを指定できます。
指定がない場合、Holderクラスで宣言した引数はINOUTのパラメタとして使用されます。
Webサービスクライアントアプリケーションにおいても、スタブオブジェクトのメソッドに引数として渡すHolderオブジェクト
を宣言、生成する場合には、型パラメタを指定してください。
Holderクラスの変数の利用方法
Webサービスアプリケーションでは、引数で受け取ったHolderオブジェクトのvalueフィールドに値を設定することで、その
値がoutパラメタとしてWebサービスクライアントへ返信されます。
Webサービスクライアントでは、Webサービス呼出しから復帰すると、引数に使用したHolderオブジェクトのvalueフィール
ドに、Webサービスアプリケーションがoutパラメタとして返信した値が設定されています。
- 158 -
例
Holderクラスの使用例(Webサービスアプリケーションのメソッド)
@WebMethod
public int serverMethod(int inParam,
@WebParam(mode=WebParam.Mode.INOUT) Holder<Integer> inoutParam,
@WebParam(mode=WebParam.Mode.OUT) Holder<String> outParam) {
//inoutパラメタは入力値を参照し必要な処理を行う
int number = inoutParam.value.intValue();
:
//out/inoutパラメタのvalueフィールドにクライアントに送信する値を代入
inoutParam.value = new Integer(10);
outParam.value = "abc";
return 0;
}
例
Holderクラスの使用例(Webサービスクライアント)
//パラメタの準備
int inParam = 123;
Holder<Integer> inoutParam = new Holder<Integer>();
inoutParam.value = new Integer(987);
Holder<String> outParam = new Holder<String>();
//Webサービスの呼出し(サーバが上記の例の場合、resultには0が入る)
int result = portStub.serverMethod(inParam, inoutParam, outParam);
//返信されたout/inoutパラメタ値の利用
int inoutResult = inoutParam.value.intValue(); //(サーバが上記の例の場合、10)
String outResult = outParam.value;
//(サーバが上記の例の場合、「abc」)
:
注意
out/inoutパラメタ使用時の注意事項
・ Holderクラスのvalueフィールドのデータ型として、java.lang.Integerなどの数値をあらわすクラスを定義する場合、value
フィールドにはnullを使用できません。
その他
注意
その他の注意事項
・ 目安として、通信データサイズが数100Kバイト(XMLでのタグなどを含む)を超える場合、性能およびメモリ消費量の
観点から、「添付ファイル型」を使用することを検討してください。また、プロセス全体で同時に送信する添付ファイル
の合計データ量が10Mバイトを超えるような場合はストリーミングモードに設定して送信を行ってください。
・ 「添付ファイル型」を除いた分の通信データサイズが大きい場合、受信時に大量にメモリを消費し、メモリ不足や処理
時間超過を招く恐れがあります。
- 159 -
・ ただし、通信データサイズが同じでもメモリ消費量は内容形式により大きく異なり、また、同時処理多重度や性能要
件もシステムにより異なります。上記サイズを目安としつつ、条件に応じて、実際の業務用のデータ内容形式を使用
して要件に対する事前検証を行うことをお勧めします。
・ XMLスキーマ上nillable="false"である要素に対してnullを設定して送信した場合は、受信側で初期値を持ったオブ
ジェクトまたは値に復元されるなど、思わぬトラブルを招く場合があります。このような要素に対しては、nullを設定し
て送信しないでください。
・ 派生によるXMLデータ型を使用する場合、xs:restrictionのbase属性にxs:anySimpleTypeは指定できません。
・ XMLデータ型がxs:anySimpleTypeの場合、WebサービスアプリケーションのパラメーターのJavaデータ型は
java.lang.Objectになります。送信側では、通信データのxsi:typeはjava.lang.Object型パラメーターに渡したオブジェ
クトから動的に決定します。受信側はjava.lang.Object型パラメーターのインスタンスのJavaデータ型を確認し、適切に
キャストしてください。送信側で通信データにxsi:typeが設定されない場合、受信側のjava.lang.Object型パラメーター
のJavaデータ型はorg.w3c.dom.Nodeの可能性があります。
3.1.5 Webサービス・Webサービスクライアントで使用するWSDLの記述につ
いて
Interstage Java EEで使用するWSDLが、WSDLの仕様以外に従う必要のある事項について説明します。
参考
本項で使用しているXMLのネームスペースのprefixは、以下のとおりです。
ネームスペース
prefix
wsdl
http://schemas.xmlsoap.org/wsdl/
xs
http://www.w3.org/2001/XMLSchema
xmime
http://www.w3.org/2005/05/xmlmime
型定義
・ wsdl:typesでの型定義には、XMLスキーマだけ使用できます。個々のデータ型については、「Javaの基本データ型
とXMLデータ型」を参照してください。
・ XMLインスタンスの解釈が不定となる、スキーマ定義(例:出現回数が固定でなくかつ名前が同じ複数のelement定義
が連続したsequenceモデル)に注意してください。そのような定義のデータは、実際の通信において、受信時の解釈
も不定となります。
・ 1つのcomplexType定義に、複数のany定義が含まれないようにしてください。
・ xs:choice定義を使用する場合、maxOccurs属性に"unbounded"を指定してください。maxOccurs="unbounded"を指定
しなかった場合、正しくマッピングが行われません。
例
xs:choice定義例
WSDL定義からスタブを生成した場合のWSDL定義に対応するJava例を以下に示します。
<xs:complexType name="addNumbers">
<xs:sequence>
<element name="in_param" type="xs:int" />
<element name="inout_param" type="xs:int" />
<xs:choice maxOccurs="unbounded">
<xs:element ref="tns:selected_param_int" />
<xs:element ref="tns:selected_param_string" />
- 160 -
</xs:choice>
</xs:sequence>
<element name="selected_param_int" type="xs:int" />
<element name="selected_param_string" type="xs:string" />
</xs:complexType>
public class AddNumbers {
@XmlElement(name = "in_param")
protected int inParam;
@XmlElement(name = "inout_param")
protected int inoutParam;
@XmlElements({
@XmlElement(name = "selected_param_int", type = Integer.class),
@XmlElement(name = "selected_param_string", type = String.class)
})
protected List<JAXBElement<String>> selectedParamIntOrSelectedParamString;
}
・ xs:any要素は使用できません。
・ xmime:expectedContentTypes属性の値に「text/plain」を指定しないでください。
その他
・ 「xml」で始まる名前空間接頭辞は使用できません。
・ データ型が異なる要素は、異なるname属性を指定してください。
・ URIを構成する文字は、ASCIIコード範囲の利用可能な文字だけを使用してください。
・ 以下のいずれかがDOSデバイス名と一致するWSDLを使用した場合、デフォルトではWSDLからJavaを生成する際
にエラーとなることがあります。JAX-WSやJAXBのカスタムバインディング定義を使用して、生成されるクラス名やパッ
ケージ名を指定することで回避できます。詳細は、JAX-WSやJAXBのドキュメントを参照してください。
- 型名
- ポートタイプ名
- オペレーション名
- サービス名
- ネームスペースの構成要素('.'、'/'、';'で区切られた文字列名)
3.1.6 クライアントアプリケーションの作成方法
メインクラスの作成
Java EEアプリケーションクライアントには、メインクラスが必要です。このクラスには、staticで宣言したmainメソッドが含ま
れている必要があります。mainメソッドは、Java EEアプリケーションクライアントで最初に実行されるクラスとなります。
例
メインクラスがMyClassクラスの例
public class MyClass {
public static void main(String[] args) {
...
- 161 -
}
}
アプリケーションクライアントコンテナは、起動時にクライアントJARファイルのマニフェストファイルからJava EEアプリケー
ションクライアントのメインクラスを検索します。マニフェストファイルにMain-Class属性を定義することで、メインクラスとして
指定されます。マニフェストファイルにメインクラスを定義しなかった場合には、appclientコマンドの-mainclassオプションで
指定したメインクラスを検索します。
例
マニフェストファイルにメインクラスを定義した場合の例
Main-Class: com.mycompany.client.MyClass
依存性の注入(Dependency Injection)の使用方法
Java EEアプリケーションクライアントのメインクラスでは、必要なエントリの宣言をJava言語のアノテーションを使用して実
行できます。アノテーションは、アプリケーションクライアントコンテナの起動処理で処理されます。このため、スタンドアロ
ンクライアントでは処理されません。
配備するクライアントJARファイルのマニフェストファイルにメインクラスを定義した場合、メインクラスに定義したアノテー
ションに自動的に依存性の注入が行われます。マニフェストファイルにメインクラスを定義しなかった場合、依存性の注入
を行うクラス名とフィールド名をdeployment descriptorファイル(application-client.xml)の<injection-target>タグに指定する
必要があります。
アプリケーションクライアントコンテナは、メインクラスのインスタンスを生成せずにstatic mainメソッドを呼び出すため、アノ
テーションを宣言したメソッドおよびフィールドは、static宣言する必要があります。使用可能なアノテーションについては、
Java EE規約を参照してください。
例
次の例では、@EJBというアノテーションを使用して、MyRemoteというリモートインタフェースを持つEnterprise JavaBeanの
参照を取得する方法を示します。
import javax.ejb.*;
public class MyClass {
@EJB static MyRemote remote;
public static void main(String[] args) {
...
3.1.7 JNDIの使用方法
各種リソースやEnterprise JavaBeanにアクセスする場合には、JNDIのAPIもしくはアノテーションを使用します。JNDIの
lookupメソッドを使用する場合、引数には以下のどちらかを指定できます。
lookupの引数に指定する値
説明
java:comp/env/参照名
環境ネーミングコンテキストを使用する場合
JNDI名
ネーミングサービスに直接アクセスする場合
deployment descriptorファイルに定義した参照名(論理的な名前)は、JNDI名(物理的な名前)との対応をInterstage
deployment descriptorファイルに定義できます。この対応を定義したJava EEコンポーネントでは、参照名を指定してlookup
メソッドを実行することで、その参照名に対応するJNDI名のオブジェクトをlookupできます。
JNDI名を指定して直接lookupするよりも、この参照名を定義して環境ネーミングコンテキストを使用してlookupする方が、
リソースの名前や環境が変更になった時にInterstage deployment descriptorファイルの編集のみで対応可能となるため、
アプリケーションのリコンパイルが不要となり、汎用的なアプリケーションとなります。
- 162 -
環境ネーミングコンテキスト使用時の、定義編集方法については「2.13.2 環境ネーミングコンテキスト(Environment Naming
Context)」を参照してください。
3.1.8 データベース連携アプリケーションの作成方法
データベースに対して処理を実行するには、Interstage Java EE管理コンソールで定義したJDBCリソースを以下の例のよ
うにJNDIのメソッド(lookupなど)を使用して取得し、データベースへの処理要求を実行します。
データベースの処理要求は、JDBC APIを使用して実行します。JDBC APIの詳細は、JDBC API規約を参照してください。
例
InitialContext ctx = new InitialContext();
javax.sql.DataSource ds = ctx.lookup("jdbc/MyBase");
Connection con = ds.getConnection();
// データベース処理を実行
con.close();
JDBCの標準APIだけサポートします。各JDBCドライバ固有のメソッド(OracleConnection固有のメソッドなど)は使用できな
いため、標準のAPIを使用してください。固有のメソッドを実行するためにオブジェクトをJDBCドライバ固有のクラスにキャ
ストしようとした場合には、java.lang.ClassCastExceptionが発生します。
共有接続
同一のJDBCリソースに対して接続を使用する場合、同一トランザクション範囲内で接続は共有されます。例えばアプリ
ケーションAでトランザクションの開始とJDBCリソースに対する接続の獲得を行い、同一のトランザクション範囲内でアプ
リケーションBが同一のJDBCリソースに対して同一の認証情報(ユーザID/パスワード)で接続を獲得した場合、Aがトラン
ザクションを完了させるまで接続は共有されます。
Java EEコンポーネントが接続の共有を許可した場合だけ、JDBCリソースから取得する接続は共有されます。リソース参
照項目のres-sharing-scope要素にShareableを定義した場合、接続は共有されます。接続を共有しない場合には、
Unshareableを定義します。
非トランザクション接続
トランザクション管理を行わないでデータベースにアクセスする場合の指定方法は以下です。一般的にgetConnectionを
実行することで、トランザクションコンテキストに接続が参加します。しかし、トランザクション管理されない接続を使用する
ことで、トランザクションコンテキストへの接続の参加・離脱が実行されないため、性能オーバーヘッドが軽減されるメリッ
トがあります。
しかし、トランザクション管理を行わない接続を使用する場合は注意が必要です。例えば、トランザクション管理されない
接続を使用してデータベースにアクセスした場合、別の業務でデータベースのデータを変更中にデータを参照した場合
には、変更前のデータが参照されます。これは、進行中のトランザクションがコミットしていないためです。別の例では、ト
ランザクション管理されない接続がデータベースのデータを変更し、同時に実行されているトランザクションがロールバッ
クされた場合、トランザクション管理されない接続による変更はロールバックされません。
データベースに対する一連の処理で整合性を保つためには、トランザクション管理する必要があります。以下の方法で
設定します。
・ Interstage Java EE管理コンソールでJDBC接続プールの非トランザクション接続項目をチェックします。デフォルトは
チェックされません。
・ asadminコマンドのcreate-jdbc-connection-poolサブコマンドでnontransactionalconnectionsオプションを有効にします。
作成後にsetサブコマンドで更新することもできます。
・ JDBCリソースを作成する際のJNDI名の最後に「__nontx」を指定します。このJDBCリソースから取得した接続は、強
制的にトランザクション管理されません。
注意
非トランザクション接続を使用する場合、またはJTAトランザクションを開始せずにデータベースにアクセスする場合の注
意事項を以下に記載します。
- 163 -
・ 接続の自動コミットモードは有効で動作します。
・ 接続の自動コミットモードを無効にした場合、接続をクローズする前にコミット、またはロールバックを実行してください。
コミットやロールバックを実行せずに接続をクローズした場合、データベース操作が反映されない、または想定外の
タイミングでデータベース操作が反映されるなどの異常な動作をする場合があります。
トランザクション遮断と遮断レベル
データベースは、トランザクションのロックレベルをチューニングするため、トランザクション遮断レベルをサポートしていま
す。すべてのデータベースがすべてのトランザクション遮断レベルをサポートしているわけではありません。各データベー
スのトランザクション遮断レベルのサポート状況については、各データベースのマニュアルを参照してください。
トランザクション遮断レベル
説明
ダーティリード
ノンリピータブルリー ファントムインサート
ド
TRANSACTION_READ_UNC
OMMITTED
発生
発生
発生
TRANSACTION_READ_COM
MITTED
抑制
発生
発生
TRANSACTION_REPEATAB
LE_READ
抑制
抑制
発生
TRANSACTION_SERIALIZA
BLE
抑制
抑制
抑制
ダーティリード
他のトランザクションがデータの変更を取り消したにもかかわらず、取り消し前にそのデータを読み出してしまうこと。
ノンリピータブルリード
あるトランザクションにおいて、同じ行を2回読み込んだ時に、1回目と2回目の読み込みの間に、他のトランザクション
が行の値を変更したため、1回目と2回目で読み込んだデータの値が異なってしまうこと。
ファントムインサート
あるトランザクションにおいて、WHERE句などによる同じ条件により行を読み込んだ時に、その途中に他のトランザク
ションがその条件に影響を与える行を挿入したために、先に読み込んだ行と後に読み込んだ行が異なってしまうこと。
トランザクション遮断
接続プールにトランザクション遮断レベルを設定する方法を説明します。指定しない場合、接続にはJDBCドライバによっ
て設定されるデフォルトのトランザクション遮断レベルが適用されます。以下の方法で設定します。
・ Interstage Java EE管理コンソールでJDBC接続プールのトランザクション遮断項目にトランザクション遮断レベルを指
定します。
・ asadminコマンドのcreate-jdbc-connection-poolサブコマンドでisolationlevelオプションにトランザクション遮断レベルを
指定します。作成後にsetサブコマンドで更新することもできます。
遮断レベル
接続プールから取得されるすべての接続が同じ遮断レベルになります。上記のトランザクション遮断を指定した場合にだ
け適用されます。例えば、最後の使用時に接続のsetTransactionIsolation()メソッドを呼び出してトランザクション遮断レベ
ルをクライアント側で明示的に変更した場合、一度プールに戻された接続を再取得すると、このメカニズムによって指定
のトランザクション遮断レベルに戻されます。以下の方法で設定します。
・ Interstage Java EE管理コンソールでJDBC接続プールの遮断レベル項目をチェックします。
- 164 -
・ asadminコマンドのcreate-jdbc-connection-poolサブコマンドでisisolationguaranteedオプションを有効にします。作成
後にsetサブコマンドで更新することもできます。
トランザクション開始後の接続のみ参加
本機能が有効なJDBCリソースの場合、JTAトランザクション開始後にオープンした接続だけトランザクションに参加します。
本機能が無効なJDBCリソースの場合、JTAトランザクション範囲外でオープンした接続は、JTAトランザクション開始時に
トランザクションに参加します(JTAトランザクションの対象となります)。
しかし、本機能を使用すると処理が煩雑になるため、JTAトランザクションに接続を参加させない場合には、非トランザク
ション接続を使用することをお勧めします。
以下の方法で「トランザクション開始後の接続のみ参加」の接続を取得できます。
・ Interstage Java EE管理コンソールでトランザクション開始後の接続のみ参加項目のチェックボックスをチェックします。
デフォルトは、チェックされません。
・ asadminコマンドのcreate-jdbc-connection-poolサブコマンドでallownoncomponentcallersオプションを有効にします。
作成後にsetサブコマンドで更新することもできます。
・ JDBCリソースの作成にあわせてネーミングサービスに自動的に登録される、最後に「__pm」が付加されたJNDI名を
クライアントから参照します。
3.1.9 ライフサイクルモジュールの作成方法
ここでは、ライフサイクルモジュールのアプリケーション作成方法として、以下を説明します。
・ ライフサイクルモジュールの作成
・ プロパティの取得方法
・ javax.naming.InitialContextの取得方法
・ 実装上の注意
・ アプリケーションインタフェース詳細
ライフサイクルモジュールの作成
ライフサイクルモジュールは、com.sun.appserv.server.LifecycleListenerインタフェースの下記メソッドを実装して作成します。
public void handleEvent(com.sun.appserv.server.LifecycleEvent event)
throws ServerLifecycleException
handleEvent メ ソ ッ ド に 各 種 ラ イ フ サ イ ク ル イ ベ ン ト 通 知 時 の 処 理 を 実 装 し ま す 。 処 理 に 失 敗 し た 場 合 は、
com.sun.appserv.server.ServerLifecycleExceptionをスローしてください。 (注)
注) com.sun.appserv.server.ServerLifecycleExceptionがスローされた場合、IJServerクラスタはサーバーログにスタックト
レースを出力し、起動処理または停止処理を続行します。
通知されたライフサイクルイベントを取得するためには、com.sun.appserv.server.LifecycleEventの下記メソッドを使用しま
す。
・ public int getEventType ()
LifecycleEventクラスには、各イベントを表す以下の固定値(int)を定義しています。
・ INIT_EVENT
・ STARTUP_EVENT
・ READY_EVENT
・ SHUTDOWN_EVENT
・ TERMINATION_EVENT
- 165 -
例
LifecycleListenerインタフェースの実装サンプル
import com.sun.appserv.server.LifecycleEvent;
import com.sun.appserv.server.LifecycleListener;
import com.sun.appserv.server.ServerLifecycleException;
public class LifecycleSimpleImpl implements LifecycleListener {
public void handleEvent(LifecycleEvent event) throws ServerLifecycleException {
if (LifecycleEvent.INIT_EVENT == event.getEventType()) {
System.out.println("INIT_EVENT");
return;
}
if (LifecycleEvent.STARTUP_EVENT == event.getEventType()) {
System.out.println("STARTUP_EVENT");
return;
}
if (LifecycleEvent.READY_EVENT == event.getEventType()) {
System.out.println("READY_EVENT");
return;
}
if (LifecycleEvent.SHUTDOWN_EVENT== event.getEventType()) {
System.out.println("SHUTDOWN_EVENT");
return;
}
if (LifecycleEvent.TERMINATION_EVENT == event.getEventType()) {
System.out.println("TERMINATION_EVENT");
return;
}
}
}
プロパティの取得方法
ライフサイクルモジュールの設定で追加したプロパティは、com.sun.appserv.server.LifecycleEventクラスの下記メソッドよ
り取得します。全てのライフサイクルイベントで取得可能です。
・ public java.lang.Object getData()
例
追加プロパティ(プロパティ名を「arg1」で登録)を取得し、標準出力を行うライフサイクルリスナー実装サンプル
import
import
import
import
com.sun.appserv.server.LifecycleEvent;
com.sun.appserv.server.LifecycleListener;
com.sun.appserv.server.ServerLifecycleException;
java.util.*;
public class LifecycleListenerImpl implements LifecycleListener {
Properties prop = null;
public void handleEvent(LifecycleEvent event) throws ServerLifecycleException {
if (LifecycleEvent.INIT_EVENT == event.getEventType()) {
prop = (Properties)event.getData();
- 166 -
System.out.println("arg1="+prop.getProperty("arg1"));
return;
}
}
}
javax.naming.InitialContextの取得方法
InitialContextのインスタンスは、com.sun.appserv.server.LifecycleEventContextの下記メソッドより取得します。
・ public javax.naming.InitialContext getInitialContext()
LifecycleEventContextインスタンスは、com.sun.appserv.server.LifecycleEventクラスの下記メソッドより取得します。
・ public com.sun.appserv.server.LifecycleEventContext getLifecycleEventContext()
例
1) InitialContextを取得し、javax.sql.DataSourceをlookupするライフサイクルリスナー実装サンプル
import
import
import
import
import
import
com.sun.appserv.server.LifecycleEvent;
com.sun.appserv.server.LifecycleListener;
com.sun.appserv.server.ServerLifecycleException;
javax.naming.InitialContext;
javax.naming.NamingException;
javax.sql.DataSource;
public class LifecycleListenerImpl implements LifecycleListener {
public void handleEvent(LifecycleEvent event) throws ServerLifecycleException {
if (LifecycleEvent.READY_EVENT == event.getEventType()) {
InitialContext ic = event.getLifecycleEventContext().getInitialContext();
try {
DataSource ds = (DataSource) ic.lookup("jdbc/db");
} catch (NamingException ne) {}
return;
}
}
}
例
2) InitialContextを取得し、EJBビジネスインタフェース(examples.session.stateless.Hello)をlookupするライフサイクルリ
スナー実装サンプル
import
import
import
import
import
com.sun.appserv.server.LifecycleEvent;
com.sun.appserv.server.LifecycleListener;
com.sun.appserv.server.ServerLifecycleException;
javax.naming.InitialContext;
javax.naming.NamingException;
public class LifecycleListenerImpl implements LifecycleListener {
public void handleEvent(LifecycleEvent event) throws ServerLifecycleException {
if (LifecycleEvent.READY_EVENT == event.getEventType()) {
InitialContext ic = event.getLifecycleEventContext().getInitialContext();
try {
Object ds = (Object) ic.lookup("examples.session.stateless.Hello");
} catch (NamingException ne) {}
- 167 -
return;
}
}
}
注意
・ ライフサイクルモジュールから、他サーバーインスタンスで運用されているEJBアプリケーションをIIOP通信で呼び出
す場合、他ネーミングサービス連携の機能を使用して接続先のサーバーインスタンスを指定します。他ネーミング
サービス連携の詳細は、「2.13.4 他ネーミングサービス連携機能」を参照してください。
実装上の注意
・ ライフサイクルモジュールは、mainサーバスレッドにより同期的に実行されます。そのため、これらのクラスがIJServer
クラスタの起動/停止をブロックしないようにする必要があります。ライフサイクルモジュールの処理でIJServerクラスタ
の起動がブロックされている場合、IJServerクラスタ起動待ち時間の経過後にIJServerクラスタの起動が失敗します。
・ 下記APIの返却情報は、将来バージョンで変更される可能性があります。返却情報に依存する処理は、実装しない
でください。
- public.java.String[] getCmdLineArgs()
- public java.lang.String getInstallRoot()
- public java.lang.String getInstanceName()
アプリケーションインタフェース詳細
インタフェースは、すべて下記ファイルに格納されています。
C:\Interstage\F3FMisjee\lib\appserv-rt.jar
/opt/FJSVisjee/lib/appserv-rt.jar
各インタフェースの詳細は、Oracle Corporation公開のJavaDocを参照してください
3.1.10 J2EE/Java EE連携アプリケーションの作成方法
J2EE/Java EE連携機能を利用したアプリケーションの作成方法について説明します。
Java EE実行環境のIJServerクラスタ上で動作するアプリケーションの作成方法
J2EE実行環境のIJServer側から呼び出す対象のEJBアプリケーションは、EJB2.1以前のようにHomeインタフェース、
Remoteインタフェースを実装してください。
注意
J2EE実行環境のIJServerは、J2EE 1.4規約範囲の機能の利用だけサポートします。そのため、以下の点に注意してくだ
さい。
・ メソッドの復帰値にJava EE 5で追加されたクラスを使用しないでください。また、復帰値がHashtableやJavaBeanなど
オブジェクトを格納するクラスである場合、復帰オブジェクト内にJava EE 5で追加されたクラスのオブジェクトを格納し
ないでください。
・ Java EE 5で追加された例外をthrowしないでください。
- 168 -
J2EE実行環境のIJServer上で動作するアプリケーションの作成方法
Interstage Java EEが提供するJNDIの利用方法
J2EE実行環境のIJServer 上に配備されたアプリケーションから、Java EE実行環境のIJServerクラスタ上で動作する
EJBアプリケーションを呼び出す前に、Interstage Java EEが提供するJNDI機能を利用して、EJBアプリケーションを
lookupする必要があります。
Interstage Java EEが提供するJNDI機能を利用するため、InitialContextのコンストラクタを呼び出すときの引数に、以
下の環境プロパティ情報を設定してください。
環境プロパティ
java.naming.factory.initial
値
com.sun.enterprise.naming.SerialInitContextFactory
接続先Java EE実行環境のIJServerクラスタの指定方法
接続先の指定方法は、Java EE運用ガイドの「4.23.4 クライアント(呼び出し元)の設定」の「スタンドアロンクライアントの
設定」に記載されている方法で指定してください。
注意
接続先のホスト名とポート番号は、必ず指定してください。指定しない場合、意図しないサーバへ接続され、後続す
る処理に失敗する場合があります。
実装例
以下に実装例を記載します。JNDIのlookupメソッドに指定するJNDI名は実際に存在するEJBアプリケーションのJNDI
名を指定してください。
// 環境プロパティの設定
java.util.Hashtable env = new java.util.Hashtable();
env.put("java.naming.factory.initial",
"com.sun.enterprise.naming.SerialInitContextFactory");
javax.naming.InitialContext context = new javax.naming.InitialContext(env);
Object object = context.lookup(JNDI名);
注意
上記方法で獲得したInitialContextは、Java EE実行環境のIJServerクラスタ上のアプリケーションを呼び出すためだけ
に使用してください。J2EE実行環境のEJBアプリケーションやリソースなどを呼び出すことはできません。
3.1.11 IPCOMと連携する場合の注意事項
IPCOMと連携したIIOP通信の負荷分散機能を使用する場合には以下に注意してください。
Stateful Session Beanを使用する場合
Stateful Session Beanを使用する場合、EJBディスパッチ機能によるロードバランスを利用してください。EJBディスパッチ
機能によるロードバランスを利用しない場合、セッションが継続しません。
unique-idタグに一意のIDを指定
アプリケーション作成時にモジュールに含むInterstage deployment descriptorファイルのunique-idタグにIJServerクラスタ
内で一意のIDを指定してください。
unique-idタグを指定しなかった場合、unique-idは配備時に自動的に番号が付けられます。この場合、配備したアプリケー
- 169 -
ションが同一であってもunique-idが異なる場合には異なるアプリケーションと見なされます。このため、同一アプリケーショ
ンが配備された複数サーバ間の負荷分散であってもエラーとなるため、配備前にunique-idをあらかじめ定義してください。
例
unique-idタグの指定例
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sun-ejb-jar PUBLIC
"-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN"
"http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<sun-ejb-jar>
<enterprise-beans>
<unique-id>2</unique-id>
<ejb>
<ejb-name>hogehoge</ejb-name>
<jndi-name>MyEjb</jndi-name>
</ejb>
</enterprise-beans>
</sun-ejb-jar>
配備するモジュールの形式により、unique-idを指定するInterstage deployment descriptorファイルが異なります。
配備するモジュールの形式
Interstage deployment descriptorファイル
EAR
sun-application.xml
ejb-jar
sun-ejb-jar.xml
JNDI名に仮想ホスト名の指定
異なるIJServerクラスタのEJBアプリケーションを呼び出す場合、接続先を指定する方法には以下の2つの方法があります。
1. JNDIサービスの設定で他ネーミングサービスの接続先を指定する(推奨)
他ネーミングサービス連携機能を使用して、クラスタのJNDIサービスの設定で外部ネーミングサービスURLに他プ
ロセスまたはリモートサーバのホスト名、IIOPリスナーのポート番号を指定します。IPCOMと連携したIIOP通信の負
荷分散機能を利用する場合には、外部ネーミングサービスURLに指定するリモートサーバのホスト名にIPCOMが
存在する仮想ホスト名を指定する必要があります。
定義方法については、「6.4.2 JNDIサービスの定義項目」を参照してください。
2. Interstage deployment descriptorファイルにInteroperable Naming Serviceの規則を使用して接続先を指定する
Interstage deployment descriptorファイルにInteroperable Naming Serviceの規則を使用して、他プロセスまたはリ
モートサーバのホスト名、IIOPリスナーのポート番号、JNDI名を指定します。IPCOMと連携したIIOP通信の負荷分
散機能を利用する場合には、このリモートサーバのホスト名にIPCOMが存在する仮想ホスト名を指定する必要が
あります。
指定方法については「2.13.2 環境ネーミングコンテキスト(Environment Naming Context)」を参照してください。
3.1.12 ネットワークの共有資源へアクセスする場合の環境設定
IJServerクラスタに配備されたアプリケーションから、ネットワークの共有資源の参照および更新を行う場合の設定手順を
以下に示します。
共有資源へアクセスするIJServerクラスタが動作するマシンの設定 (マシンA)
Interstage Java EEのサービスを起動するユーザーアカウントを変更してください。
設定を行うサービスは、アプリケーションを配備する対象により異なります。
・ Interstage Java EE DASサービスのインスタンス(server)にアプリケーションを配備する場合
Interstage Java EE DASサービスに設定が必要です。
- 170 -
・ IJServerクラスタにアプリケーションを配備する場合
Interstage Java EE Node Agentサービスに設定が必要です。
以降の設定手順では、両方のサービスに設定を行う場合について説明します。
1. 以下の手順でサービスを停止してください。
1. isstopコマンドを使用してInterstageサービスを停止してください。
2. ijdasstopコマンドを使用してInterstage Java EE DASサービスを停止してください。
2. Windows(R)の機能を使用して、Administrators権限を持ったユーザーを作成してください。
3. Interstage Java EE DASサービス、Interstage Java EE Node Agentサービスのログオンアカウントに手順2.で作成し
たユーザーを指定してください。
ログオンアカウントの設定手順は以下のとおりです。
1. Windows(R)にAdministrators権限でログインする。
2. 「コントロールパネル」-「管理ツール」-「サービス」を起動する。
3. 該当するサービスを選択し、右クリックメニューから「プロパティ」を起動する。
選択するサービスは以下のとおりです。
Interstage Java EE DASサービスの場合 : Interstage Java EE DAS
Interstage Java EE Node Agentサービスの場合: Interstage Java EE Node Agent
4. 「プロパティ」画面の「ログオン」タブを選択し、「アカウント」にチェックを入れ、手順2.で作成したユーザーの
アカウントとパスワードを指定する。
4. 以下の手順でサービスを起動してください。
1. ijdasstartコマンドを使用してInterstage Java EE DASサービスを起動してください。
2. isstartコマンドを使用してInterstageサービスを起動してください。
共有したい資源が存在するマシンの設定 (マシンB)
1. マシンAの手順2.で作成したユーザーと同一のユーザー名/パスワードでユーザーを作成してください。
2. 共有したい資源に対して、Windows(R)の機能で共有の設定を行ってください。
アプリケーションの実装方法
共有資源にUNC接続でアクセスするように実装してください。
例
共有したディレクトリ配下のa.txtにアクセスしたい場合
\\[IPアドレス]\[共有名]\a.txt
または
\\[ホスト名]\[共有名]\a.txt
※ 実際のコーディングではエスケープ文字を追加してください。
- 171 -
注意
・ 設定の手順において、各マシンにユーザーの作成、共有の設定などWindows(R) OS機能の操作が必要となります。
これらの操作にともなうセキュリティについても、Windows(R) OS機能の観点から考慮してください。
例: 作成したユーザーのIDおよびパスワードの管理、共有資源に対する意図しないユーザーからのアクセス制御
・ クラスタサービスを使用している場合は、本設定を使用できません。
3.1.13 Java EEアプリケーションからCORBAサービスアプリケーションの呼
出し方法
CORBAサービス環境上で動作しているCORBAサーバアプリケーションを呼び出すJava EEアプリケーションの開発およ
び運用方法について説明します。
アプリケーション開発手順
1. アプリケーションのインタフェース定義(IDL)の記述
2. IDLファイルのコンパイル
3. クライアントアプリケーションのプログラミング
4. アプリケーションのコンパイル
(1)アプリケーションのインタフェース定義(IDL)の記述
呼び出し対象のCORBAサーバアプリケーションのインタフェースが定義されているIDLファイルを記述します。
(2)IDLファイルのコンパイル
IDLファイルのコンパイルには、以下のようにCORBAサーバアプリケーションが動作している環境のIDLcコマンドを
使用します。
なお、使用可能なIDLc生成物は、V9.2以降のIDLcが生成したIDLc生成物です。
V10のIDLcを使用する場合
IDLc -java -javaee sample.idl
V10より前のバージョンのIDLcを使用する場合
IDLc -java sample.idl
(3)クライアントアプリケーションのプログラミング
CORBAサーバアプリケーションを呼び出す場合、サーバアプリケーションのコード系に合わせてJava EEクライアント
でコード変換を行うためのプロパティを設定する必要があります。
ORB.init()の第2引数(Java VM起動時に渡すシステムプロパティ)に、必ず以下のプロパティを定義してください。
Properties props = new Properties();
props.put("com.sun.corba.ee.encoding.ORBCodeConversionUseUnitOfIOR","true");
Orb = org.omg.CORBA.ORB.init(args, props);
ネーミングサービスのオブジェクトリファレンスは、以下のいずれかの方法で取得してください。
- ORBイニシャルリファレンス引数“-ORBInitRef”を指定する
ORBイニシャルリファレンス引数“-ORBInitRef”は、クライアントが必要とするイニシャルサービスをサービス名ご
とに指定します。
- 172 -
例
ORBイニシャルリファレンス引数“-ORBInitRef”を使用した設定例を示します。
ホストおよびポートには、ネーミングサービスが動作しているマシンのCORBAサービスに指定したホストおよび
ポート番号を指定します。
String[ ] orbArgs = new String[ 2 ] ;
orbArgs[ 0 ] = "-ORBInitRef" ;
orbArgs[ 1 ] = "NameService=corbaloc:iiop:1.0@ホスト:ポート/NameService";
Orb = ORB.init( orbArgs, nullprops);
org.omg.CORBA.Object _tmpObj = Orb.resolve_initial_references( "NameService" );
- corbaloc URLスキーマを指定する
string_to_object()にcorbaloc URLスキーマを指定して取得します。
例
corbaloc URLスキーマで指定した設定例を示します。
ホストおよびポートには、ネーミングサービスが動作しているマシンのCORBAサービスに指定したホストおよび
ポート番号を指定します。
org.omg.CORBA.Object _tmpObj =
Orb.string_to_object("corbaloc:iiop:1.0@ホスト:ポート/NameService");
(4)アプリケーションのコンパイル
Java EEアプリケーションのコンパイル対象に、IDLc生成物を追加して、コンパイルを実施してください。
ORB(Object Request Broker)の指定
アプリケーションで使用するORBとして、IIOPサービス(Java EEクライアント)を指定します。
ORBの指定方法として以下の方法があります。以下のいずれかの方法で、使用するORBを指定してください。
なお、IJServerクラスタおよびappclientコマンドを使用する場合は、指定不要です。
・ ORB.init()の引数で指定する方法
・ アプリケーション起動時に指定する方法
・ 環境設定ファイルを用意する方法
どの方法も、以下のプロパティ情報を設定することにより、IIOPサービス(Java EEクライアント)のORBを指定します。
プロパティ名
設定値(Java EEクライアントを使用)
org.omg.CORBA.ORBClass
com.sun.corba.ee.impl.orb.ORBImpl
org.omg.CORBA.ORBSingletonClass
com.sun.corba.ee.impl.orb.ORBSingleton
ORB.init()の引数で指定する方法
ORB.init()の第2パラメタで指定します。
例
Properties props = new Properties();
props.put("org.omg.CORBA.ORBClass","com.sun.corba.ee.impl.orb.ORBImpl");
props.put("org.omg.CORBA.ORBSingletonClass","com.sun.corba.ee.impl.orb.ORBSingleton");
Orb = org.omg.CORBA.ORB.init(args, props);
- 173 -
アプリケーション起動時に指定する方法
Javaアプリケーション実行時に、javaコマンドのパラメタとしてプロパティ情報を設定します。以下のように-Dオプション
に続けて必要な情報を記述します。
例
java -Dorg.omg.CORBA.ORBClass=com.sun.corba.ee.impl.orb.ORBImpl
-Dorg.omg.CORBA.ORBSingletonClass=com.sun.corba.ee.impl.orb.ORBSingleton
<アプリケーションのクラス名>
環境設定ファイルを用意する方法
プロパティ情報を記述したテキストファイル(ファイル名:orb.properties)を作成し、インストールされているパッケージお
よび使用するJDK/JREによって異なる以下の格納先に格納します。
ファイルorb.propertiesの内容
org.omg.CORBA.ORBClass=com.fujitsu.ObjectDirector.CORBA.ORB
org.omg.CORBA.ORBSingletonClass=com.fujitsu.ObjectDirector.CORBA.SingletonORB
格納先
【Interstage Studioクライアント運用パッケージの場合】
JRE6系使用時のパスは、Interstage Studioクライアント運用パッケージ V9.2以降の場合に有効です。
JRE6系使用時:
<Java実行環境のインストールパス>\jre6\lib
JRE5系使用時:
<Java実行環境のインストールパス>\jre5\lib
【サーバパッケージ内の“JDK/JRE”の場合】
JRE 6系使用時:
C:\Interstage\jre6\lib
JRE 5.0系使用時:
C:\Interstage\jre5\lib
JDK 6系使用時:
C:\Interstage\jdk6\jre\lib
JDK 5.0系使用時:
C:\Interstage\jdk5\jre\lib
【クライアントパッケージ内の“JBKプラグイン”の場合】
JRE 6系使用時:
C:\Interstage\JBKDI\jre6\lib
JRE 5.0系使用時:
C:\Interstage\JBKDI\jre5\lib
JDK 6系使用時:
C:\Interstage\JBKDI\jdk6\jre\lib
JDK 5.0系使用時:
C:\Interstage\JBKDI\jdk5\jre\lib
JRE 6系使用時:
<Java実行環境のインストールパス>/jre6/lib
JRE 5.0系使用時:
<Java実行環境のインストールパス>/jre5/lib
JDK 6系使用時:
<Java実行環境のインストールパス>/jdk6/jre/lib
- 174 -
JDK 5.0系使用時:
<Java実行環境のインストールパス>/jdk5/jre/lib
JRE 6系使用時:
<Java実行環境のインストールパス>/jre6/lib
JRE 5.0系使用時:
<Java実行環境のインストールパス>/jre5/lib
JDK 6系使用時:
<Java実行環境のインストールパス>/jdk6/jre/lib
JDK 5.0系使用時:
<Java実行環境のインストールパス>/jdk5/jre/lib
CLASSPATHの指定
スタンドアロンクライアントの場合、IIOPサービス(Java EEクライアント)が提供しているJava EEクライアントランタイムを
CLASSPATH環境変数に指定する必要があります。
以下のjarファイルをCLASSPATH環境変数に指定してください。
格納場所
jarファイル名
appserv-rt-client.jar
<Intestageインストールフォルダ>\F3FMisjee\lib
格納場所
jarファイル名
appserv-rt-client.jar
/opt/FJSVisjee/lib
注意
マ ル チ 言 語 サ ー ビ ス の CORBA サ ー ビ ス が 提 供 し て い る CORBA-Java ラ ン タ イ ム (ODjava4.jar / ODporb4.jar /
CosNaming4.jar/InterfaceRep4.jar)は、CLASSPATH環境変数に指定しないでください。
3.2 deployment descriptor
ここでは、deployment descriptorについて説明します。
Java EE規約で規定されたdeployment descriptor
以下について説明しています。
・ Java EE application deployment descriptor (application.xml)
・ Web application deployment descriptor (web.xml)
Interstage deployment descriptor
本製品の動作を定義するdeployment descriptor(以降、Interstage deployment descriptor)を、配備モジュールに含めるこ
とができます。Interstage deployment descriptorを以下に示します。詳細は、「3.2.3 Interstage deployment descriptor」を参
照してください。
配備モジュール
Interstage deployment descriptor
Interstage application deployment descriptor (sunapplication.xml)
earファイル
Interstage Web application deployment descriptor (sun-web.xml)
warファイル
- 175 -
配備モジュール
Interstage deployment descriptor
Interstage EJB application deployment descriptor (sun-ejbjar.xml)
ejb-jarファイル
Interstage CMP Mappings deployment descriptor (sun-cmpmappings.xml)
ejb-jarファイル
Interstage application client deployment descriptor (sunapplication-client.xml)
App Clientファイル
Interstage ACC deployment descriptor (sun-acc.xml)
注) モジュールに含まれません。
Interstage deployment descriptor(sun-acc.xmlを除きます)は、モジュール種別に応じてJava EE規約のdeployment descriptor
と同じ位置に配置してください。
3.2.1 deployment descriptor(web.xml)に関する注意事項
deployment descriptorについては、Java EE規約、およびそのサブ規約を参照してください。ここでは、注意を要する事項
について説明します。
Servlet 2.5ではXMLスキーマベースでの記述は変更となっていませんが、バージョンアップに伴い名前空間が変更され
ています。
Servlet 2.4のdeployment descriptor(web.xml)の記述形式
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
...
Servlet 2.5のdeployment descriptor(web.xml)の記述形式
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
...
また、Servlet 2.5で追加となった機能に関係するタグの追加、および既存タグの定義方法に対する改善が行われています。
追加および改善の対象となったタグについて、以下に説明します。
<web-app>タグにmetadata-complete属性の追加
「true」を指定した場合、注釈の記述をしていてもWebコンテナは起動時に注釈を解析しません。
「false」を指定またはmetadata-complete属性自体を記述しなかった場合、Webコンテナは起動時に注釈を解析します。
注意
・ deployment descriptor(web.xml)が「Java(TM) Servlet Specification Version 2.5」以外のバージョンに準拠した形で記
述している場合、Webコンテナは注釈を解析しません。
・ 注釈を記述したWebアプリケーションで注釈の解析が行われなかった場合、注釈を記述したフィールドおよびメソッ
ドはWebアプリケーション実行時にServlet 2.5 および JSP 2.1で提供するアノテーション機能を利用することができま
せん。このため、Webアプリケーションは期待した結果を返さないことがあります。
- 176 -
例
注釈の解析を行わない場合
<?xml version="1.0" encoding=」UTF-8」 ?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5"
metadata-complete="true">
...
<url-mapping>タグの複数定義
Servlet 2.4ではdeployment descriptor(web.xml)で定義する<servlet-mapping>タグの下位要素<url-pattern>タグは1つ指
定可能でした。これにより1つのサーブレット定義に対して複数のURLを指定するためには、複数のサーブレット・マッピ
ングを記述する必要がありました。
Servlet 2.5ではdeployment descriptor(web.xml)で定義する<servlet-mapping>タグの下位要素<url-pattern>タグを複数指
定できるようになりました。これにより1つのサーブレット定義に対して複数のURLを指定するための記述方法が簡潔にな
りました。
以下に、サーブレット「HelloWorldServlet」に対してURL「/test/one/HelloWorld」と「/test/two/HelloWorld」を設定する例を
示します。
例
Servlet 2.4のdeployment descriptor(web.xml)の記述形式
<servlet>
<servlet-name>HelloWorld</servlet-name>
<class-name>HelloWorld</class-name>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/test/one/HelloWorld</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/test/two/HelloWorld</url-pattern>
</servlet-mapping>
例
Servlet 2.5のdeployment descriptor(web.xml)の記述形式
<servlet>
<servlet-name>HelloWorld</servlet-name>
<class-name>HelloWorld</class-name>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/test/one/HelloWorld</url-pattern>
- 177 -
<url-pattern>/test/two/HelloWorld</url-pattern>
</servlet-mapping>
<servlet-name>タグの複数定義
Servlet 2.4ではdeployment descriptor(web.xml)で定義する<filter-mapping>タグの下位要素<url-pattern>タグおよび
<servlet-name>タグは1つ指定可能でした。これにより1つのフィルタ定義を複数のアプリケーションに指定するためには、
複数のフィルタマッピングを記述する必要がありました。
Servlet 2.5ではdeployment descriptor(web.xml)で定義する<filter-mapping>タグの下位要素<url-pattern>タグおよび
<servlet-name>タグを複数指定できるようになりました。これにより1つのフィルタ定義に対して複数のアプリケーションを
指定するための記述方法が簡潔になりました。
以下に、URL「/foo/*」、「/bar/*」およびサーブレット名「SampleServlet」へのリクエストに対してフィルタ処理を行う例を示
します。
例
Servlet 2.4のdeployment descriptor(web.xml)の記述形式
<filter>
<filter-name>TestFilter</filter-name>
<class-name>TestFilter</class-name>
</filter>
<filter-mapping>
<filter-name>TestFilter</filter-name>
<url-pattern>/foo/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>TestFilter</filter-name>
<servlet-name>SampleServlet</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>TestFilter</filter-name>
<url-pattern>/bar/*</url-pattern>
</filter-mapping>
例
Servlet 2.5のdeployment descriptor(web.xml)の記述形式
<filter>
<filter-name>TestFilter</filter-name>
<class-name>HelloWorld</class-name>
</filter>
<filter-mapping>
<filter-name>TestFilter</filter-name>
<url-pattern>/foo/*</url-pattern>
<servlet-name>SampleServlet</servlet-name>
<url-pattern>/bar/*</url-pattern>
</filter-mapping>
- 178 -
<http-method>タグの拡張
Servlet 2.4ではdeployment descriptor(web.xml)のセキュリティロール設定において、アクセス許可を行うHTTPメソッド名
としては、以下が指定可能でした。
・ GET
・ POST
・ PUT
・ DELETE
・ HEAD
・ OPTIONS
・ TRACE
Servlet 2.5ではアクセス許可を行うHTTPメソッドの指定が「HTTP 1.1 Specification Section 2.2」に準拠して緩和されました。
Servlet 2.4のようにメソッド名の制限はなく、「HTTP 1.1 Specification Section 2.2」で規定されている文字を使用して実装
したHTTPメソッドに対してもセキュリティロールの設定を行うことができます。
注意
・ ( ) < > @ , ; : " / [ ] ? = { } \ CR LF Spaceを含んだ文字列を指定した場合、配備エラーが発生します。
・ 数字を含んだ文字列を指定しかつ、配備時に「検証」を有効にした場合、配備エラーが発生します。
3.2.2 Java EE規約で規定されたdeployment descriptor
3.2.2.1 Java EE application deployment descriptor (application.xml)
ここでは、Java EE application deployment descriptorについて、以下を説明します。
・ 記述形式
・ タグの一覧
・ 注意事項
記述形式
<?xml version="1.0" encoding="UTF-8" ?>
<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/application_5.xsd"
version="5">
<description>...</description>
<display-name>...</display-name>
<icon>
<small-icon>...</small-icon>
<large-icon>...</large-icon>
</icon>
<module>
<connector>...</connector> または
<ejb>...</ejb>
または
<java>...</java>
または
<web>
<web-uri>...</web-uri>
<context-root>...</context-root>
</web>
<alt-dd>...</alt-dd>
- 179 -
</module>
<security-role>
<description>...</description>
<role-name>...</role-name>
</security-role>
<library-directory>...</library-directory>
</application>
タグの一覧
Java EE application deployment descriptorのタグ一覧を以下に示します。一覧の記載方法については、「タグ一覧の見
方」を参照してください。
タグ名
application
概要
deployment descriptorの開始と終了
モジュールに関する定義
module
connector
connectorのパス
ejb
EJBモジュールのパス
java
Java EEアプリケーションクライアントのパス
web
Webモジュールに関する定義
web-uri
Webモジュールのパス
context-root
コンテキストルート
モジュールのdeployment descriptorのパス
alt-dd
セキュリティロール
security-role*
description*
説明
role-name
セキュリティロール名
library-directory?
ライブラリの格納先のパス
タグ一覧の見方
タグ一覧に記載している記号の意味を以下に示します。
記号
意味
?
タグを定義しなくて良い。または1つだけタグを定義することができる。
*
タグを定義しなくて良い。または複数のタグを定義することができる。
+
タグを1つ以上記述する必要がある。
注意事項
・ マニュアルに記載した定義以外はサポートしていません。
・ 先頭の<?xml...>と<application xmlns...>は、XML宣言、およびschemaLocationを記述しているため、deployment
descriptorファイルの先頭で必ず記述してください。
・ 各タグの記載順序は、上記の記載順序に従ってください。
・ 省略した場合、タグの定義が無効、またはエラーとなります。
・ 大文字・小文字は区別します。
・ J2EE 1.3または1.4のdeployment descriptorの記述形式も使用できます。
- 180 -
・ 配備済みのアプリケーションのdeployment descriptorの記述形式を、J2EE 1.3または1.4からJava EEの記述形式に変
更する場合は、アプリケーションを配備しなおしてください。
タグの説明
application
Java EEアプリケーション環境定義ファイル(deployment descriptor)の開始と終了を定義します。
module (親タグ:application)
Java EEアプリケーション(EARファイル)に含まれるモジュールに関する定義をモジュールごとに記述します。
<connector>タグ、<ejb>タグ、<java>タグ、<web>タグのいずれかを定義する必要があります。
connector (親タグ:module)
connector(RARファイル)のパスを定義します。
ejb (親タグ:module)
EJBモジュール(ejb-jarファイル)のパスを定義します。
java (親タグ:module)
Java EEアプリケーションクライアント(client-jarファイル)のパスを定義します。
web (親タグ:module)
Webモジュールに関する定義を記述します。
<web-uri>
Webモジュール(WARファイル)のパスを定義します。
<context-root>
コンテキストルートを定義します。
EARファイル内で一意な値でなければなりません。
alt-dd (親タグ:module)
モジュールのdeployment descriptorのパスを定義します。
省略した場合は、モジュールに含まれるdeployment descriptorが使用されます。
security-role (親タグ:application)
アクセス制限で使用するセキュリティロールを定義します。
<role-name>
セキュリティロール名を定義します。ロール名には、セキュリティ機能の運用設定(Interstageディレクトリサービス)で定
義したセキュリティロール名を指定してください。
EARファイル内で一意な値でなければなりません。
library-directory (親タグ:application)
Java EEアプリケーション(EARファイル)に含まれるライブラリの格納先のパスを定義します。指定したディレクトリに格
納されているjarファイルは、Java EEアプリケーション(EARファイル)に含まれるコンポーネントから、利用可能となります。
タグを省略した場合は、libを指定したものとみなされます。
3.2.2.2 Web application deployment descriptor (web.xml)
ここでは、Web application deployment descriptorについて、以下を説明します。
・ 記述形式
・ タグの一覧
・ 注意事項
- 181 -
記述形式
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>...</display-name>
<context-param>
<param-name>...</param-name>
<param-value>...</param-value>
</context-param>
<filter>
<filter-name>...</filter-name>
<filter-class>...</filter-class>
<init-param>
<param-name>...</param-name>
<param-value>...</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>...</filter-name>
<servlet-name>...</servlet-name>
<dispatcher>...</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>...</filter-name>
<url-pattern>...</url-pattern>
<dispatcher>...</dispatcher>
</filter-mapping>
<listener>
<listener-class>...</listener-class>
</listener>
<servlet>
<servlet-name>...</servlet-name>
<servlet-class>...</servlet-class> または
<jsp-file>...</jsp-file>
<init-param>
<param-name>...</param-name>
<param-value>...</param-value>
</init-param>
<load-on-startup>...</load-on-startup>
<run-as>
<role-name>...</role-name>
</run-as>
<security-role-ref>
<role-name>...</role-name>
<role-link>...</role-link>
</security-role-ref>
</servlet>
<servlet-mapping>
<servlet-name>...</servlet-name>
<url-pattern>...</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>...</session-timeout>
</session-config>
<mime-mapping>
<extension>...</extension>
<mime-type>...</mime-type>
</mime-mapping>
<welcome-file-list>
- 182 -
<welcome-file>...</welcome-file>
</welcome-file-list>
<error-page>
<error-code>...</error-code> または
<exception-type>...</exception-type>
<location>...</location>
</error-page>
<security-constraint>
<web-resource-collection>
<web-resource-name>...</web-resource-name>
<url-pattern>...</url-pattern>
<http-method>...</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>...</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>...</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>...</auth-method>
<realm-name>...</realm-name>
<form-login-config>
<form-login-page>...</form-login-page>
<form-error-page>...</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>...</role-name>
</security-role>
<env-entry>
<env-entry-name>...</env-entry-name>
<env-entry-type>...</env-entry-type>
<env-entry-value>...</env-entry-value>
</env-entry>
<ejb-ref>
<ejb-ref-name>...</ejb-ref-name>
<ejb-ref-type>...</ejb-ref-type>
<home>...</home>
<remote>...</remote>
<ejb-link>...</ejb-link>
<mapped-name>...</mapped-name>
</ejb-ref>
<ejb-local-ref>
<description>...</description>
<ejb-ref-name>...</ejb-ref-name>
<ejb-ref-type>...</ejb-ref-type>
<local-home>...</local-home>
<local>...</local>
<ejb-link>...</ejb-link>
</ejb-local-ref>
<resource-env-ref>
<resource-env-ref-name>...</resource-env-ref-name>
<resource-env-ref-type>...</resource-env-ref-type>
<mapped-name>...</mapped-name>
</resource-env-ref>
<resource-ref>
<res-ref-name>...</res-ref-name>
<res-type>...</res-type>
<res-auth>...</res-auth>
<mapped-name>...</mapped-name>
</resource-ref>
- 183 -
<message-destination-ref>
<message-destination-ref-name>...</message-destination-ref-name>
<message-destination-type>...</message-destination-type>
<message-destination-usage>...</message-destination-usage>
<message-destination-link>...</message-destination-link>
</message-destination-ref>
<persistence-context-ref>
<description>...</description>
<persistence-context-ref-name>...</persistence-context-ref-name>
<persistence-unit-name>...</persistence-unit-name>
</persistence-context-ref>
<persistence-unit-ref>
<description>...</description>
<persistence-unit-ref-name>...</persistence-unit-ref-name>
<persistence-unit-name>...</persistence-unit-name>
</persistence-unit-ref>
<message-destination>
<message-destination-name>...</message-destination-name>
<mapped-name>...</mapped-name>
</message-destination>
<locale-encoding-mapping-list>
<locale-encoding-mapping>
<locale>...</locale>
<encoding>...</encoding>
</locale-encoding-mapping>
</locale-encoding-mapping-list>
<jsp-config>
<taglib>
<taglib-uri>...</taglib-uri>
<taglib-location>...</taglib-location>
</taglib>
<jsp-property-group>
<url-pattern>...</url-pattern>
<el-ignored>...</el-ignored>
<page-encoding>...</page-encoding>
<scripting-invalid>...</scripting-invalid>
<is-xml>...</is-xml>
<include-prelude>...</include-prelude>
<include-coda>...</include-coda>
</jsp-property-group>
</jsp-config>
</web-app>
タグの一覧
Web application deployment descriptorのタグ一覧を以下に示します。一覧の記載方法については、「タグ一覧の見方」
を参照してください。
タグ名
web-app
概要
deployment descriptorの開始と終了
display-name*
サーブレットコンテキストの名前
context-param*
サーブレットコンテキストに設定する初期化パラメタ
param-name
初期化パラメタ名
param-value
初期化パラメタに指定する値
filter*
フィルタクラスの定義
filter-name
フィルタクラスの別名
filter-class
フィルタクラスの完全なクラス名
- 184 -
タグ名
init-param*
概要
初期化パラメタ
param-name
初期化パラメタの名前
param-value
初期化パラメタの値
filter-mapping*
フィルタクラスを適用する対象の定義
filter-name
フィルタ名
url-pattern*
フィルタとマッピングするURLパターン
servlet-name
フィルタとマッピングするサーブレット名
dispatcher*
フィルタの呼出しのタイミング
listener*
listener-class
servlet*
イベントリスナーの定義
イベントリスナーの完全なクラス名
サーブレットに関する定義
servlet-name
サーブレットやJSPの名前
servlet-class
サーブレットの完全なクラス名
jsp-file
JSPファイル名
init-param*
初期化パラメタ
param-name
初期化パラメタの名前
param-value
初期化パラメタの値
load-on-startup?
Webコンテナ起動時のスタートアップ
run-as?
アプリケーションが動作するロール
role-name
security-role-ref*
ロール名
セキュリティロール
role-name
セキュリティロール名
role-link
<security-role>タグで指定したセキュリティロール名
servlet-mapping*
サーブレット・マッピング
servlet-name
サーブレットやJSPの名前
url-pattern+
サーブレットやJSPとマッピングするURLパターン
session-config*
session-timeout?
mime-mapping*
セッションパラメタの定義
セッションタイムアウト時間
mimeタイプの定義
extension
mimeタイプを定義するファイルの拡張子
mime-type
mimeタイプ
welcome-file-list*
welcome-file+
error-page*
welcome fileの定義
welcome file
例外タイプに対応するリソースの定義
error-code
HTTPのエラーコード
exception-type
例外タイプの完全クラス名
- 185 -
タグ名
location
security-constraint*
web-resource-collection+
概要
エラーが発生した場合に対応するリソース
アクセス制限の定義
Webリソースコレクションの定義
web-resource-name
webリソースのコレクション名
url-pattern+
URLパターン
http-method*
HTTPのメソッド
auth-constraint?
role-name*
user-data-constraint?
transport-guarantee
login-config*
セキュリティロール
セキュリティロール名
データ保護属性
クライアント-サーバ間の転送方法
ユーザ認証の方法
auth-method?
認証方法
realm-name?
HTTP Basic認証で使用する領域名
form-login-config?
フォームベース認証に関する定義
form-login-page
ログインページ
form-error-page
エラーページ
security-role*
role-name
env-entry*
セキュリティロール
セキュリティロール名
環境エントリ
env-entry-name
環境エントリ名
env-entry-type?
環境エントリの値のタイプ
env-entry-value?
環境エントリのエントリ値
ejb-ref*
参照するEJBオブジェクト
ejb-ref-name
EJB参照名
ejb-ref-type?
EJBオブジェクトのタイプ
home?
EJBのhomeインタフェースのフルネーム
remote?
EJBのremoteインタフェースのフルネーム
ejb-link?
リンクするJava EEアプリケーションパッケージの中の
EJB名
mapped-name?
マッピングするJNDI名
ejb-local-ref*
参照するlocalインタフェースのEJBオブジェクト
ejb-ref-name
EJBローカル参照名
ejb-ref-type?
EJBオブジェクトのタイプ
local-home?
EJBのlocal homeインタフェースのフルネーム
local?
EJBのlocalインタフェースのフルネーム
ejb-link?
リンクするJava EEアプリケーションパッケージの中の
EJB名
resource-env-ref*
外部リソース環境
- 186 -
タグ名
概要
resource-env-ref-name
リソース環境参照名
resource-env-ref-type?
リソース環境参照の型
mapped-name?
マッピングするJNDI名
resource-ref*
外部リソース
res-ref-name
リソース参照名
res-type?
リソースの型
res-auth?
リソースの接続情報の指定方法
mapped-name?
マッピングするJNDI名
message-destination-ref*
Destination参照
message-destination-ref-name
Destination参照名
message-destination-type?
Destinationタイプ
message-destination-usage?
Destination用途
message-destination-link?
Destinationリンク
persistence-context-ref*
永続性コンテキスト参照
description*
説明
persistence-context-ref-name
永続性コンテキスト参照名
persistence-unit-name?
永続性ユニット名
persistence-unit-ref*
永続性ユニット参照
description*
説明
persistence-unit-ref-name
永続性ユニット参照名
persistence-unit-name?
永続性ユニット名
message-destination*
Destination
message-destination-name
Destination名
mapped-name?
Destinationのマッピング名
locale-encoding-mapping-list*
locale-encoding-mapping+
ロケールと文字コードの対応の定義リスト
ロケールと文字コードの対応の定義
locale
ロケール
encoding
文字コード
jsp-config*
taglib*
JSPで共通の値の定義
タグライブラリ
taglib-uri
タグライブラリのURI
taglib-location
タグライブラリのTLDファイル名
jsp-property-group*
JSPの定義や制限
url-pattern+
タグを適用するJSPのURLパターン
el-ignored?
Expression Languageの扱い
page-encoding?
文字コード
scripting-invalid?
スクリプトの記述の可否
is-xml?
JSP Documents(XML構文)として処理するかどうか
include-prelude*
JSPの先頭にインクルードするファイルのURI
- 187 -
タグ名
概要
include-coda*
JSPの最後にインクルードするファイルのURI
タグ一覧の見方
タグ一覧に記載している記号の意味を以下に示します。
記号
意味
?
タグを定義しなくて良い。または1つだけタグを定義することができる。
*
タグを定義しなくて良い。または複数のタグを定義することができる。
+
タグを1つ以上記述する必要がある。
注意事項
・ マニュアルに記載した定義以外はサポートしていません。
・ 先頭の<?xml...>と<web-app xmlns...>は、XML宣言、およびschemaLocationを記述しているため、deployment
descriptorファイルの先頭で必ず記述してください。
・ 各タグの記載順序は、上記の記載順序に従ってください。
・ 省略した場合、タグの定義が無効、またはエラーとなります。
・ 大文字・小文字は区別します。
・ マニュアルに記載した定義以外を指定した場合、エラーメッセージが出力されずにWebコンテナが起動する場合が
ありますので注意してください。
・ Servlet 2.2または2.3、2.4のdeployment descriptorの記述形式も使用できます。
・ 配備済みのアプリケーションのdeployment descriptorの記述形式を、Servlet2.2または2.3からServlet2.4の記述形式
に変更する場合は、アプリケーションを配備しなおしてください。
タグの説明
web-app
Webアプリケーション環境定義ファイル(deployment descriptor)の開始と終了を定義します。指定可能な属性を以下
に示します。
属性名
metadatacomplate
デフォルト
false
意味
Servlet 2.5、JSP 2.1で追加されたアノテーション機能を有効
にするかどうかを指定します。
・ true :アノテーション機能は無効になります。
・ false:アノテーション機能は有効になります。
display-name (親タグ:web-app)
サーブレットコンテキストの名前を定義します。
設定したサーブレットコンテキストの名前は、以下のメソッドで取得できます。
- javax.servlet.ServletContext.getServletContextName()メソッド
context-param (親タグ:web-app)
サーブレットコンテキストに設定する初期化パラメタを定義します。サーブレットコンテキストには、Webアプリケーショ
ンすべてのサーブレットに共通の情報を設定し、取り出すことができます。なお、重複する初期化パラメタ名は定義で
- 188 -
きません。
以下のメソッドを使用します。
- javax.servlet.ServletContext.getInitParameterNames()メソッド
- javax.servlet.ServletContext.getInitParameter()メソッド
<param-name>
サーブレットコンテキストの初期化パラメタ名を定義します。パラメタ名を必ず記述してください。値を省略した場合、
空文字に対してパラメタ値が設定されます。
<param-value>
サーブレットコンテキストの初期化パラメタに指定する値を定義します。値を省略した場合、空文字が設定されます。
filter (親タグ:web-app)
フィルタクラスを定義します。
<filter-name>
フィルタクラスの別名です。一意な名前を指定します。
この名前を使用して<filter-mapping>タグで定義したサーブレット名やURIパターンとマッチングされます。
<filter-class>
マッピングするフィルタクラスの完全なクラス名を指定します。
<init-param>
初期化パラメタとして名前と値のペアをセットします。
パラメタが複数ある場合、パラメタごとに別々の<init-param>タグを使用します。
<param-name>
初期化パラメタの名前をセットします。
<init-param>タグを使用する場合、必須です。
<param-value>
初期化パラメタの値をセットします。
<init-param>タグを使用する場合、必須です。
filter-mapping (親タグ:web-app)
フィルタクラスを適用する対象を定義します。
<filter-mapping>タグでは、リクエストに対して、どのフィルタをどの順番で使えばよいかをWebコンテナに指示します。
<filter-mapping>タグは複数定義できます。フィルタを実行する順番は、以下のように決まります。
1. <url-pattern>要素を定義している<filter-mapping>タグの設定が有効になります。
web.xmlに<url-pattern>要素を定義している<filter-mapping>タグの設定が複数存在する場合には、定義して
いる順番でフィルタを実行する順番が決まります。
2. <servlet-name>要素を定義している<filter-mapping>タグの設定が有効になります。
web.xmlに<servlet-name>要素を定義している<filter-mapping>タグの設定が複数存在する場合には、定義し
ている順番でフィルタを実行する順番が決まります。
<filter-name>
一意であるフィルタ名を指定します。
この名前が<filter>タグ内の<filter-name>タグの値としてマッチしている必要があります。
<url-pattern>
フィルタとマッピングするURLパターンを指定します。
<servlet-name>タグと同時に指定することはできません。
URLは以下のように記述します。
- 単独のURLの場合
URLで呼び出す場合の名前を記述します。
例) /servlet/servlet1
- 特定のプレフィックス(パス、識別子)で始まるURLの場合
最後に「/*」を付加し、記述します。
例) /prefix/*
- 189 -
- 特定の拡張子を持つURLの場合
「*.xxx」を用いて記述します。
例) *.do
「*.xxx」を用いて特定の拡張子を持つファイルを指定する場合には、プレフィックスと一緒に指定することはでき
ません。
例) /path/*.do は指定できません。
特定の拡張子を持つファイルを指定した場合は、Webアプリケーション全体のファイルが対象となります。
<servlet-name>
フィルタとマッピングするサーブレット名を指定します。
<url-pattern>タグと同時に指定することはできません。
サーブレット名には、<servlet>タグの<servlet-name>タグで指定した名前を記述します。'*'を指定した場合、すべての
サーブレット名に対して有効になります。指定していないサーブレット名を記述した場合、または値を省略した場合は、
無効または定義エラーとなります。
<dispatcher>
フィルタの呼出しのタイミングを指定します。
以下の値を指定します。
- REQUEST(デフォルト値)
クライアントからのリクエストに対して、フィルタクラスが有効になります。
- FORWARD
RequestDispatcherのforward()メソッドやJSPのforwardアクション時に、フィルタクラスが有効になります。
- INCLUDE
RequestDispatcherのinclude()メソッドやJSPのincludeアクションなど、動的なinclude時に、フィルタクラスが有効に
なります。
- ERROR
エラーページ遷移時に、フィルタクラスが有効になります。
listener (親タグ:web-app)
Webアプリケーションで発生したイベントに応じて何らかの処理を行いたい場合、ここに実装クラス名を定義します。
なお、TLD(Tag Library Description file)の<listener>タグを指定している場合は、両方のリスナーが有効になります。
<listener-class>
以下のイベントを処理するためのクラスの完全なクラス名を指定します。
- コンテキストの起動・停止
(javax.servlet.ServletContextListenerインタフェース実装クラス)
- ServletContextの属性を追加・置換・削除
(javax.servlet.ServletContextAttributeListenerインタフェース実装クラス)
- セッションの新規作成・削除
(javax.servlet.http.HttpSessionListenerインタフェース実装クラス)
- セッションに属性を追加・置換・削除
(javax.servlet.http.HttpSessionAttributeListenerインタフェース実装クラス)
- リクエストの開始・終了
(javax.servlet.ServletRequestListenerインタフェース実装クラス)
- リクエストに属性を追加・置換・削除
(javax.servlet.ServletRequestAttributeListenerインタフェース実装クラス)
存在しないクラス名を記述した場合はWebアプリケーションの起動に失敗します。
servlet (親タグ:web-app)
サーブレットの初期化パラメタ、エイリアスなどの、サーブレットの属性を定義します。
- 190 -
<servlet-name>
サーブレットやJSPの名前を定義します。
この値は、<servlet-mapping>タグや<filter-mapping>タグで対象サーブレット名を指定する場合にも使用されます。
<servlet-class>
サーブレットの完全なクラス名を定義します。
サーブレットを定義する場合は必須です。
注意
- Webサービスアプリケーションを定義する場合は、エンドポイントの実装クラスの完全なクラス名を定義します。
- Webサービスアプリケーションの場合は、servlet定義は必須ではありません。
<jsp-file>
JSPファイル名をWebアプリケーションのルートディレクトリからの相対パスで定義します。先頭に'/'を付加します。
JSPファイルを定義する場合は必須です。
相対パスにディレクトリを記述する場合、ディレクトリの間は'\'でなく、'/'で区切ります。
<init-param>
初期化パラメタとして名前と値のペアをセットします。
パラメタが複数ある場合、パラメタごとに別々の<init-param>タグを使用します。
<param-name>
初期化パラメタの名前をセットします。
<init-param>タグを使用する場合、必須です。
<param-value>
初期化パラメタの値をセットします。
<init-param>タグを使用する場合、必須です。
<load-on-startup>
Webコンテナ起動時のスタートアップを定義します。
サーブレットやJSPをロードする順序を-2147483648~2147483647で定義します。数値以外は指定できません。小さ
い数から順にロードされます。
- 以下の場合は、そのサーブレットまたはJSPは最後にロードされます。
- 空のタグを指定した場合(例:<load-on-startup></load-on-startup>)
- 以下の場合は、サーブレットやJSPを呼び出した時にロードされます。
- 負の数を指定した場合
- タグを省略した場合
<run-as>
アプリケーションが動作するロールを定義します。
<run-as>タグを指定する場合は、Interstage deployment descriptorに<security-role-mapping>タグを定義する必要が
あります。定義していない場合はアプリケーションの配備に失敗します。
<role-name>
ロール名を指定します。
<security-role-ref>
サーブレットコードで使用するセキュリティロールの参照を定義します。
<role-name>
サーブレットコードで使用するセキュリティロール名を指定します。
<security-role-ref>タグを定義する場合は必須です。
javax.servlet.http.HttpServletRequest.isUserInRole()メソッドのパラメタとして利用できます。
- 191 -
<role-link>
<security-role>タグで指定したセキュリティロール名を定義します。
<security-role-ref>タグを定義する場合は必須です。
servlet-mapping (親タグ:web-app)
URLをサーブレットやJSPに対応するためのサーブレット・マッピングの定義をします。
指定したURLのファイルやサーブレットを表示せずに異なったサーブレットやJSPに対応させることができます。
<servlet-mapping>タグは、サーブレットやJSPの名前を定義した、<servlet>タグより後に記述してください。<servlet>タ
グより前に記述した場合、Webアプリケーションの起動に失敗します。
<url-pattern>タグに同じURLを複数定義した場合は、最後に定義したサーブレット・マッピングが有効となります。
指定したURLが複数のサーブレット・マッピングで有効である場合、以下の順で優先されます。
1. url-patternタグがファイルやサーブレットの名前の場合
2. url-patternタグがプレフィックス(パス、識別子)の場合(長い名前の方が優先されます)
3. url-patternタグが拡張子の場合
例えば、「/index.html」と「*.html」のURLを定義していて、「/index.html」へのアクセスがあった場合、拡張子「*.html」
の定義よりファイルの名前「/index.html」の定義が優先されます。
<servlet-name>
リクエストをマッピングするサーブレットやJSPの名前を定義します。
名前には、<servlet>タグの<servlet-name>タグで指定した名前を記述します。指定していない名前を記述した場合は、
Webアプリケーションの起動に失敗します。
<url-pattern>
サーブレットやJSPとマッピングするURLパターンを指定します。
URLは以下のように記述します。
- 単独のURLの場合
URLで呼び出す場合の名前を記述します。
例) /servlet/servlet1
- 特定のプレフィックス(パス、識別子)で始まるURLの場合
最後に「/*」を付加し、記述します。
例) /prefix/*
- 特定の拡張子を持つURLの場合
「*.xxx」を用いて記述します。
例) *.do
「*.xxx」を用いて特定の拡張子を持つファイルを指定する場合には、プレフィックスと一緒に指定することはでき
ません。
例) /path/*.do は指定できません。
特定の拡張子を持つファイルを指定した場合は、Webアプリケーション全体のファイルが対象となります。
session-config (親タグ:web-app)
セッション管理を使用する場合、セッションパラメタの定義をします。
設定したセッションタイムアウト時間は、以下のメソッドを使用して取り出します。
- javax.servlet.http.HttpSession.getMaxInactiveInterval()メソッド
<session-timeout>
セッションタイムアウト時間を定義します。
単位は分で、指定可能な範囲は0~35791394です。タグを省略した場合は、30が設定されます。
0または負の値を記述した時にはタイムアウトしません。
mime-mapping (親タグ:web-app)
サーブレットAPIで取り出すmimeタイプを定義します。
mimeタイプは、Webコンテナがデフォルトの値を定義しています。
本タグを定義することにより、Webアプリケーション独自のmimeタイプが設定できます。
本タグで設定したmimeタイプは、デフォルトのmimeタイプより、優先されます。
デフォルトのmimeタイプについては、「3.2.2.3 デフォルトのmimeタイプ」を参照してください。
- 192 -
また、重複して定義した場合は、後から指定したmimeタイプが有効となります。
設定したmimeタイプは、以下のメソッドを使用して取り出します。
- javax.servlet.ServletContext.getMimeType()メソッド
<extension>
mimeタイプを定義するファイルの拡張子を定義します。
<mime-type>
mimeタイプを定義します。
welcome-file-list (親タグ:web-app)
URLにファイル名を指定しなかった場合に表示するwelcome fileを定義します。
welcome fileは、URLにWebアプリケーション名まで指定した場合や、Webアプリケーションのルートディレクトリからの
相対パスとしてディレクトリ名まで指定した場合のどちらにも有効です。
welcome fileを省略した場合、デフォルト設定が使用されます。デフォルト設定のファイルは以下のとおりです。
- index.html
- index.htm
- index.jsp
welcome file(省略時はデフォルト設定)に該当するファイルがない場合は、Interstage Web application deployment
descriptor(sun-web.xml)でファイル一覧を有効にしているかによって、ステータスコード404(ファイルが存在しない)、
またはその実体となるディレクトリ配下のディレクトリやファイルの一覧が表示されます
welcome fileは複数指定ができ、記述した順に有効となります。
<welcome-file>
welcome fileを定義します。
error-page (親タグ:web-app)
エラーコードやJavaの例外タイプに対応するリソースを定義します。
同じHTTPのエラーコードやJavaの例外タイプで複数定義した場合は、最初に定義したリソースの定義が有効となりま
す。
<error-code>
HTTPのエラーコードを定義します。
HTTPエラーコードを定義する場合に指定します。
<exception-type>
Javaの例外タイプの完全クラス名を定義します。
例外タイプを定義する場合に指定します。
<location>
エラーが発生した場合に対応するリソース(HTML文書、サーブレットなど)を定義します。Webアプリケーションのルー
トディレクトリからの相対パスで指定します。この時、先頭に'/'を付加します。
リソースを省略した場合は、定義エラーとなります。
相対パスにディレクトリを記述する場合、ディレクトリの間は'\'でなく、'/'で区切ります。
注意
Webブラウザの設定内容によって、Webブラウザ内蔵のエラーページが表示される場合があります。
security-constraint (親タグ:web-app)
Webアプリケーションのアクセス制限を定義します。
<web-resource-collection>
Webリソースコレクションを定義します。
- 193 -
<web-resource-name>
webリソースのコレクション名を定義します。
<web-resource-collection>タグの定義時は、必須です。
<url-pattern>
URLパターンを定義します。
Webアプリケーションのルートディレクトリからの対象パスで定義します。この時、先頭に'/'を追加します。
<http-method>
HTTPのメソッドを定義します。
定義したメソッドに対してだけアクセスが制限されます。
省略した場合は、全メソッドがアクセス制限の対象となります。
<auth-constraint>
Webリソースコレクションにアクセス可能なセキュリティロールを定義します。
指定したロールを持つユーザだけ、リソースコレクションにアクセス可能となります。
省略した場合は、すべてのユーザがアクセス可能となります。
<role-name>
セキュリティロール名を定義します。
セキュリティロール名が指定された場合、ユーザの識別が必要となるため、ユーザ認証が行われます。
<role-name>タグまたは値を省略した場合は、どのユーザもアクセスできません。
<user-data-constraint>
データ保護属性を定義します。クライアント-コンテナ間で通信するデータをどう保護すべきであるかを定義します。
<transport-guarantee>
クライアント-サーバ間の転送方法を定義します。
<user-data-constraint>タグの定義時は、必須です。
以下の値を指定します。
- NONE
アプリケーションが、転送保証を必要としないことを意味します。
- INTEGRAL
クライアント-サーバ間で送信されるデータの転送保証を必要とすることを意味します。
- CONFIDENTIAL
データの盗聴の防止が必要であることを意味します。
INTEGRALまたはCONFIDENTIALを指定した場合は、SSLによる通信であることを保証します。
login-config (親タグ:web-app)
ユーザ認証の方法を定義します。
<auth-method>
認証方法を定義します。以下の値を指定します。
- BASIC
HTTP Basic認証
- FORM
フォームベース認証
<auth-method>タグを省略した場合は、「BASIC」が省略値となります。値の省略はできません。
<realm-name>
認証で使用するレルム名を定義します。
レルム名は、Basic認証を行う画面(ダイアログボックス)に表示されます。
省略した場合は、デフォルトレルムが選択されます。デフォルトレルム以外を使用する場合は、必ず指定してください。
<form-login-config>
フォームベース認証定義の開始/終了を定義します。
フォームベース認証で使用するログインページやエラーページを指定します。
フォームベース認証を使用しない場合、指定は無視されます。
フォームベース認証を使用する場合は、必ず指定してください。
- 194 -
<form-login-page>
フォームベース認証で使用するログインページを定義します。
指定したログインページは、フォームベース認証が行われる際にWebブラウザに表示されます。
<form-login-config>タグ定義時は、必須です。
<auth-method>タグでフォームベース認証を指定した場合は、本タグでログインページを必ず指定してください。
注意
ログインページでは、ユーザ名/パスワードをWebコンテナに受け渡すため、以下のインタフェースを使用しなければ
なりません。
- アプリケーション名:j_security_check
- パラメタ名->ユーザ名:j_username
- パラメタ名->パスワード:j_password
以下に例を示します。
:
<FORM ACTION="j_security_check" METHOD="POST">
UserName: <INPUT TYPE="text" NAME="j_username">
Password: <INPUT TYPE="password" NAME="j_password">
<input type="submit" value="送信"></FORM>
:
<form-error-page>
フォームベース認証失敗時に表示するエラーページのロケーションを定義します。
<form-login-config>タグ定義時は、必須です。
指定したエラーページは、フォームベース認証失敗時にWebブラウザに表示されます。
留意事項
フォームベース認証では認証情報を管理するためにcookieによるセッションの追跡を使用します。このため以下に該
当する場合、フォームベース認証機能を使用することができません。
- セッションIDをcookieに設定しない運用
- Webブラウザがcookieを許可していない、または対応していない
フォームベース認証の成功後は、以下のいずれかが行われるまでの間、認証を継続することが可能です。
- セッションを破棄
- セッションタイムアウト
- Webブラウザを閉じる
- IJServerクラスタを再起動
- 実行中のWebアプリケーションを再配備
security-role (親タグ:web-app)
アクセス制限で使用するセキュリティロールを定義します。
<role-name>
セキュリティロール名を定義します。
ロール名には、セキュリティ機能の運用設定(Interstage ディレクトリサービス)で定義したセキュリティロール名を指定
してください。
env-entry (親タグ:web-app)
Webアプリケーションで参照する環境エントリを定義します。
<env-entry-name>
環境エントリのエントリ名を定義します。
java:comp/envコンテキストからの相対名で定義します。
- 195 -
<env-entry-type>
アプリケーションコードで扱う環境エントリの値の完全なJavaタイプを定義します。
以下のJavaタイプが指定可能です。
- java.lang.Boolean
- java.lang.Byte
- java.lang.Character
- java.lang.String
- java.lang.Short
- java.lang.Integer
- java.lang.Long
- java.lang.Float
- java.lang.Double
<env-entry-value>
環境エントリのエントリ値を定義します。
エントリ値は、<env-entry-type>タグで指定したオブジェクトとして扱われます。
エントリ値が<env-entry-type>タグで指定したJavaタイプと異なる場合は、エラーとなります。
タグを省略した場合には、javax.naming.NamingExceptionまたはそのサブクラスが投げられます。
ejb-ref (親タグ:web-app)
Webアプリケーションで参照するEJBオブジェクトを定義します。
<ejb-ref-name>
EJBオブジェクトの参照名(EJB参照名)を定義します。
java:comp/envコンテキストからの相対名で定義します。
例) ejb/xxxxx
<ejb-ref-type>
EJBオブジェクトのタイプを定義します。
以下のタイプが指定可能です。
- Entity
- Entity Bean
- Session
- Session Bean
<home>
EJBのhomeインタフェースのフルネームを定義します。
<remote>
EJBのremoteインタフェースのフルネームを定義します。
<ejb-link>
リンクするJava EEアプリケーションパッケージの中のEJB名(ejb-name)を定義します。
<mapped-name>
参照するオブジェクトの実際のJNDI名を指定できます。
ejb-local-ref (親タグ:web-app)
Webアプリケーションで参照するlocalインタフェースのEJBオブジェクトを定義します。
<ejb-ref-name>
EJBローカルオブジェクトの参照名(EJBローカル参照名)を定義します。
java:comp/envコンテキストからの相対名で定義します。
例) ejb/xxxxx
- 196 -
<ejb-ref-type>
EJBオブジェクトのタイプを定義します。
以下のタイプが指定可能です。
- Entity
- Entity Bean
- Session
- Session Bean
<local-home>
EJBのlocal homeインタフェースのフルネームを定義します。
<local>
EJBのlocalインタフェースのフルネームを定義します。
<ejb-link>
リンクするJava EEアプリケーションパッケージの中のEJB名(ejb-name)を定義します。
resource-env-ref (親タグ:web-app)
Webアプリケーションで参照する外部リソース環境を定義します。
<resource-env-ref-name>
外部リソース環境の参照名(リソース環境参照名)を定義します。
java:comp/envコンテキストからの相対名で定義します。
例) jms/xxxxx
<resource-env-ref-type>
外部リソース環境参照のリソースの型を定義します。
型は、JavaClass型を指定します。
データソースの型(JavaClass型)として以下のリソースをサポートします。
- JMS
javax.jms.Topic
javax.jms.Queue
<mapped-name>
参照するオブジェクトの実際のJNDI名を指定できます。
resource-ref (親タグ:web-app)
Webアプリケーションで参照する外部リソースを定義します。
<res-ref-name>
外部リソースの参照名(リソース参照名)を定義します。
java:comp/envコンテキストからの相対名で定義します。以下に例を示します。
JDBCの場合
jdbc/xxxxx
JMSの場合
jms/xxxxx
JavaMailの場合
mail/xxxxx
URLの場合
url/xxxxx
<res-type>
外部リソースの型を定義します。
型は、JavaClass型を指定します。
データソースの型(JavaClass型)として以下のリソースをサポートします。
JDBCの場合
javax.sql.DataSource
JMSの場合
javax.jms.TopicConnectionFactory
javax.jms.QueueConnectionFactory
- 197 -
JavaMailの場合
javax.mail.Session
URLの場合
java.net.URL
<res-auth>
リソースの接続情報を、アプリケーションコンポーネントコードがプログラムで指定するかまたはWebコンテナが指定す
るかを定義します。
詳細は、「5.6 リソースアクセス時の認証情報」を参照してください。
リソースに対する接続情報を設定する箇所を定義します。
以下の値を指定します。
- Application
アプリケーションコンポーネントコード(Webアプリケーション側)で接続情報を設定します。
- Container
コンテナが接続情報を設定します。コンテナは、リソース定義で設定した接続情報を使用します。
<mapped-name>
参照するオブジェクトの実際のJNDI名を指定できます。
message-destination-ref (親タグ:web-app)
Webアプリケーションで参照するDestination参照を定義します。
<message-destination-ref-name>
Destinationの参照名(Destination参照名)を定義します。
java:comp/envコンテキストからの相対名で定義します。
例) jms/xxxxx
<message-destination-type>
Destinationの型を定義します。
型は、JavaClass型を指定します。
<message-destination-usage>
Destinationの用途として以下のいずれかを定義します。
- Consumes
受信用に使用する場合に指定します。
- Produces
送信用に使用する場合に指定します。
- ConsumesProduces
送受信用に使用する場合に指定します。
<message-destination-link>
message-destinationタグへのリンクを定義します。
persistence-context-ref (親タグ:web-app)
Webアプリケーションで参照する永続性コンテキスト参照を定義します。
<description>
説明を定義します。
<persistence-context-ref-name>
永続性コンテキスト参照名は、Webアプリケーションが永続性コンテキストを識別するために任意に指定できます。
java:comp/envコンテキストからの相対名で定義します。
例) persistence/xxxxx
<persistence-unit-name>
永続性コンテキストに関連付けられている永続性ユニット名を指定します。永続性ユニット名はpersistence.xmlファイ
ルで定義されている必要があります。
persistence-unit-ref (親タグ:web-app)
Webアプリケーションで参照する永続性ユニット参照を定義します。
- 198 -
<description>
説明を定義します。
<persistence-unit-ref-name>
永続性ユニット参照名は、Webアプリケーションが永続性ユニットを識別するために任意に指定できます。
java:comp/envコンテキストからの相対名で定義します。
例) persistence/xxxxx
<persistence-unit-name>
永続性ユニット名を指定します。永続性ユニット名はpersistence.xmlファイルで定義されている必要があります。
message-destination (親タグ:web-app)
Webアプリケーションで参照するDestinationを定義します。
<message-destination-name>
Destination名は、message-destination-refタグからリンクする名前を定義します。
<mapped-name>
参照するオブジェクトの実際のJNDI名を指定できます。
locale-encoding-mapping-list (親タグ:web-app)
ロケールと文字コードの対応を定義します。
<locale-encoding-mapping>
ロケールと文字コードの対応を定義します。
<locale>
ISO-639-1とISO-3166で定義されたロケールを指定します。
<encoding>
ロケールに対応させる文字コードを指定します。
jsp-config (親タグ:web-app)
Webアプリケーション内のJSPで共通の値を定義します。
<taglib>
JSPで独自タグを埋め込む場合、タグライブラリを定義します。
<taglib-uri>
Webアプリケーションが使用するJSPのタグライブラリのURIを定義します。JSPファイル内の<taglib>指定のuriに定義
すべきURIを指定します。
<taglib-location>
タグライブラリのTLD(Tag Library Description file)ファイル名を定義します。
Webアプリケーションのルートディレクトリからの相対パスで指定します。この時、先頭に'/'を付加します。
存在しないパスを記述した場合は、Webアプリケーションの起動に失敗します。
相対パスにディレクトリを記述する場合、ディレクトリの間は'\'でなく、'/'で区切ります。
<jsp-property-group>
<url-pattern>タグで設定されたURLパターンを満たすJSPに対して、定義や制限を指定します。
<url-pattern>
<jsp-property-group>タグを適用するJSPのURLパターンを指定します。
<el-ignored>
Expression LanguageをJSP内で無視するかどうかを指定します。
- true:
Expression Languageは無視されます(エラーではありません)
- false:(省略値)
Expression Languageは評価されます。
- 199 -
<page-encoding>
JSPファイルの文字コードを指定します。
JSPファイルのpageディレクティブのpageEncodingで指定された値と違う場合はJSPのコンパイルに失敗します。
<scripting-invalid>
JSPのスクリプトの記述を非許可とするかどうかを指定します。
- true :スクリプトの記述を非許可とします。
JSP内にスクリプトが記述されている場合は、JSPのコンパイルに失敗します。
- false:スクリプトの記述を許可します。
scripting-invalidを省略した場合は、スクリプトの記述は許可されます。
<is-xml>
JSPファイルを、JSP Documents(XML構文)として処理するかどうかを指定します。
- true:
JSPをJSP Documents(XML構文)として処理します。
JSPがJSP Documents(XML構文)として記述されていない場合は、JSPのコンパイルに失敗します。
- false:
JSPをregular JSP page(非XML構文)として処理します。
デフォルトでは、拡張子が「.jspx」の場合にJSP Documents(XML構文)として処理されます。
<include-prelude>
JSPの先頭にインクルードするファイルのURIを指定します。JSPの先頭にincludeディレクティブを指定するのと同じ動
作になります。
<include-coda>
JSPの最後にインクルードするファイルのURIを指定します。JSPの最後にincludeディレクティブを指定するのと同じ動
作になります。
注意
タグライブラリ・ディスクリプタファイルの<tag-class>タグを変更した場合、変更したタグライブラリ・ディスクリプタに対応
するタグライブラリを使用するJSPファイルの再コンパイルが必要です。
JSPの再コンパイルは、JSPファイルと対応するjavaのソースファイル、クラスファイルがJSPコンパイル結果出力ディレ
クトリ内に存在しない場合に実行されます。
したがって、JSPファイルと対応するjavaのソースファイル、クラスファイルを削除することによって、JSPの再コンパイル
が実行されます。
詳細については「2.5.4 JSP事前コンパイル」を参照してください。
3.2.2.3 デフォルトのmimeタイプ
Webコンテナでは、以下のmimeタイプの値がデフォルトで定義されています。
Webアプリケーション独自のmimeタイプを使用する場合は、Web application deployment descriptorで設定可能です。設
定方法については以下を参照してください。
・ Web application deployment descriptor (web.xml)
mimeタイプのデフォルト値一覧
extension
mime-type
abs
audio/x-mpeg
ai
application/postscript
aif
audio/x-aiff
aifc
audio/x-aiff
aiff
audio/x-aiff
- 200 -
extension
mime-type
aim
application/x-aim
art
image/x-jg
asf
video/x-ms-asf
asx
video/x-ms-asf
au
audio/basic
avi
video/x-msvideo
avx
video/x-rad-screenplay
bcpio
application/x-bcpio
bin
application/octet-stream
bmp
image/bmp
body
text/html
cdf
application/x-cdf
cer
application/x-x509-ca-cert
class
application/java
cpio
application/x-cpio
csh
application/x-csh
css
text/css
dib
image/bmp
doc
application/msword
dtd
application/xml-dtd
dv
video/x-dv
dvi
application/x-dvi
eps
application/postscript
etx
text/x-setext
exe
application/octet-stream
gif
image/gif
gk
application/octet-stream
gtar
application/x-gtar
gz
application/x-gzip
hdf
application/x-hdf
hqx
application/mac-binhex40
htc
text/x-component
htm
text/html
html
text/html
ief
image/ief
jad
text/vnd.sun.j2me.app-descriptor
jar
application/java-archive
java
text/plain
jnlp
application/x-java-jnlp-file
- 201 -
extension
mime-type
jpe
image/jpeg
jpeg
image/jpeg
jpg
image/jpeg
js
text/javascript
kar
audio/x-midi
latex
application/x-latex
m3u
audio/x-mpegurl
mac
image/x-macpaint
man
application/x-troff-man
mathml
application/mathml+xml
me
application/x-troff-me
mid
audio/x-midi
midi
audio/x-midi
mif
application/x-mif
mov
video/quicktime
movie
video/x-sgi-movie
mp1
audio/x-mpeg
mp2
audio/x-mpeg
mp3
audio/x-mpeg
mpa
audio/x-mpeg
mpe
video/mpeg
mpeg
video/mpeg
mpega
audio/x-mpeg
mpg
video/mpeg
mpv2
video/mpeg2
ms
application/x-wais-source
nc
application/x-netcdf
oda
application/oda
ogg
application/ogg
pbm
image/x-portable-bitmap
pct
image/pict
pdf
application/pdf
pgm
image/x-portable-graymap
pic
image/pict
pict
image/pict
pls
audio/x-scpls
png
image/png
pnm
image/x-portable-anymap
pnt
image/x-macpaint
- 202 -
extension
mime-type
ppm
image/x-portable-pixmap
ppt
application/powerpoint
ps
application/postscript
psd
image/x-photoshop
qt
video/quicktime
qti
image/x-quicktime
qtif
image/x-quicktime
ras
image/x-cmu-raster
rdf
application/rdf+xml
rgb
image/x-rgb
rm
application/vnd.rn-realmedia
roff
application/x-troff
rtf
application/rtf
rtx
text/richtext
sh
application/x-sh
shar
application/x-shar
shtml
text/x-server-parsed-html
smf
audio/x-midi
sit
application/x-stuffit
snd
audio/basic
src
application/x-wais-source
sv4cpio
application/x-sv4cpio
sv4crc
application/x-sv4crc
svg
image/svg+xml
svgz
image/svg+xml
swf
application/x-shockwave-flash
t
application/x-troff
tar
application/x-tar
tcl
application/x-tcl
tex
application/x-tex
texi
application/x-texinfo
texinfo
application/x-texinfo
tif
image/tiff
tiff
image/tiff
tr
application/x-troff
tsv
text/tab-separated-values
txt
text/plain
ulw
audio/basic
ustar
application/x-ustar
- 203 -
extension
mime-type
vsd
application/x-visio
vxml
application/voicexml+xml
wav
audio/x-wav
wbmp
image/vnd.wap.wbmp
wml
text/vnd.wap.wml
wmlc
application/vnd.wap.wmlc
wmls
text/vnd.wap.wmls
wmlscriptc
application/vnd.wap.wmlscriptc
wrl
x-world/x-vrml
xbm
image/x-xbitmap
xht
application/xhtml+xml
xhtml
application/xhtml+xml
xls
application/vnd.ms-excel
xml
application/xml
xpm
image/x-xpixmap
xsl
application/xml
xslt
application/xslt+xml
xul
application/vnd.mozilla.xul+xml
xwd
image/x-xwindowdump
vsd
application/x-visio
Z
application/x-compress
z
application/x-compress
zip
application/zip
3.2.3 Interstage deployment descriptor
本製品は、各Java EE規約標準のdeployment descriptorファイルに加えて、本製品固有の定義ファイルを使用できます。
この定義ファイルをInterstage deployment descriptorファイルと呼びます。Interstage deployment descriptorファイルの一覧
を以下に示します。
ファイル名
説明
sun-application.xml
Java EEアプリケーション(EARファイル)の定義を指定できます。
sun-web.xml
Webアプリケーション(WARファイル)の定義を指定できます。
sun-ejb-jar.xml
EJBアプリケーション(EJB JARファイル)の定義を指定できます。
sun-cmp-mappings.xml
EJBアプリケーションのCMPの定義を指定できます。
sun-application-client.xml
Java EEアプリケーションクライアント(JARファイル)の定義を指定
できます。
sun-acc.xml
アプリケーションクライアントコンテナの定義を指定できます。
各定義ファイルの定義内容について説明します。
- 204 -
3.2.3.1 Interstage application deployment descriptor (sun-application.xml)
記述形式
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sun-application PUBLIC
"-//Sun Microsystems, Inc.//DTD Application Server 9.0 Java EE Application 5.0//EN"
"http://www.sun.com/software/appserver/dtds/ sun-application_5_0-0.dtd ">
<sun-application>
<pass-by-reference>...</pass-by-reference>
<unique-id>...</unique-id>
<security-role-mapping>
<role-name>...</role-name>
<principal-name>...</principal-name> または
<group-name>...</group-name>
</security-role-mapping>
</sun-application>
タグの一覧
Interstage application deployment descriptorのタグ一覧を以下に示します。一覧の記載方法やタグの説明については、
「3.2.3.7 Interstage deployment descriptorのタグの説明」を参照してください。
タグ名
sun-application
概要
deployment descriptorの開始と終了
pass-by-reference?
sun-application.xmlのpass-by-referenceタグへ指定
する方法はサポートしていません。
sun-ejb-jar.xmlのpass-by-referenceタグに指定してく
ださい。
unique-id?
システムID
security-role-mapping*
セキュリティロールの対応付け
role-name
deployment descriptorのセキュリティロール
principal-name+ (注)
ディレクトリサービスに定義されているユーザID
group-name+ (注)
ディレクトリサービスに定義されているグループ名
注) principal-nameまたはgroup-nameのどちらか、または両方で、1つ以上、複数の指定ができます。指定順序の制限も
ありません。
3.2.3.2 Interstage Web application deployment descriptor (sun-web.xml)
記述形式
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sun-web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN"
"http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
<sun-web-app>
<security-role-mapping>
<role-name>...</role-name>
<principal-name>...</principal-name> または
<group-name>...</group-name>
</security-role-mapping>
<servlet>
<servlet-name>...</servlet-name>
<principal-name>...</principal-name>
</servlet>
<session-config>
- 205 -
<session-properties>
<property name="..." value="..."> (with attributes)
<description>...</description>
</property>
</session-properties>
<cookie-properties>
<property name="..." value="..."> (with attributes)
<description>...</description>
</property>
</cookie-properties>
</session-config>
<ejb-ref>
<ejb-ref-name>...</ejb-ref-name>
<jndi-name>...</jndi-name>
</ejb-ref>
<resource-ref>
<res-ref-name>...</res-ref-name>
<jndi-name>...</jndi-name>
<default-resource-principal>
<name>...</name>
<password>...</password>
</default-resource-principal>
</resource-ref>
<resource-env-ref>
<resource-env-ref-name>...</resource-env-ref-name>
<jndi-name>...</jndi-name>
</resource-env-ref>
<message-destination-ref>
<message-destination-ref-name>...</message-destination-ref-name>
<jndi-name>...</jndi-name>
</message-destination-ref>
<class-loader delegate="..."/>
<jsp-config>
<property name="..." value="..."> (with attributes)
<description>...</description>
</property>
</jsp-config>
<parameter-encoding default-charset="..."/>
<property name="..." value="..."> (with attributes)
<description>...</description>
</property>
<message-destination>
<message-destination-name>...</message-destination-name>
<jndi-name>...</jndi-name>
</message-destination>
</sun-web-app>
タグの一覧
Interstage Web application deployment descriptorのタグ一覧を以下に示します。一覧の記載方法やタグの説明について
は、「3.2.3.7 Interstage deployment descriptorのタグの説明」を参照してください。
タグ名
sun-web-app
security-role-mapping*
概要
deployment descriptorの開始と終了
セキュリティロールの対応付け
role-name
deployment descriptorのセキュリティロール
principal-name+ (注)
ディレクトリサービスに定義されているユーザID
group-name+ (注)
ディレクトリサービスに定義されているグループ名
servlet*
サーブレットまたはJSPの動作の定義
- 206 -
タグ名
概要
servlet-name
サーブレットまたはJSPの名前
principal-name?
セキュリティロールに対応するユーザ名
session-config?
session-properties?
property*
description?
cookie-properties?
property*
description?
ejb-ref*
Webアプリケーション内のセッション制御の定義
Webアプリケーション内のセッションを制御する共通
の値
プロパティ
説明
Webアプリケーション内のクッキーを制御する共通
の値
プロパティ
説明
参照名に対応するEJBアプリケーションのJNDI名
ejb-ref-name
EJBオブジェクトの参照名
jndi-name
EJBアプリケーションのJNDI名
resource-ref*
参照名に対応するリソースのJNDI名
res-ref-name
リソースの参照名
jndi-name
リソースのJNDI名
default-resource-principal?
デフォルトユーザの定義
name
ユーザ名
password
パスワード
resource-env-ref*
参照名に対応するJMSのJNDI名
resource-env-ref-name
JMSの参照名
jndi-name
JMSのJNDI名
message-destination-ref*
参照名に対応するJMS Destinationオブジェクトの
JNDI名
message-destination-ref-name
JMS Destinationオブジェクトの参照名
jndi-name
JMS DestinationオブジェクトのJNDI名
class-loader?
クラスローダの定義
jsp-config?
JSPの定義
property*
description?
プロパティ
説明
parameter-encoding?
エンコーディング
property*
プロパティ
description?
message-destination*
説明
参照名に対応するJMS Destinationオブジェクトの
JNDI名
message-destination-name
JMS Destinationオブジェクトの参照名
jndi-name
JMS DestinationオブジェクトのJNDI名
- 207 -
注) principal-nameまたはgroup-nameのどちらか、または両方で、1つ以上、複数の指定ができます。指定順序の制限も
ありません。
3.2.3.3 Interstage EJB application deployment descriptor (sun-ejb-jar.xml)
記述形式
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sun-ejb-jar PUBLIC
"-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN"
"http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<sun-ejb-jar>
<security-role-mapping>
<role-name>...</role-name>
<principal-name>...</principal-name> または
<group-name>...</group-name>
</security-role-mapping>
<enterprise-beans>
<unique-id>...</unique-id>
<ejb>
<ejb-name>...</ejb-name>
<jndi-name>...</jndi-name>
<ejb-ref>
<ejb-ref-name>...</ejb-ref-name>
<jndi-name>...</jndi-name>
</ejb-ref>
<resource-ref>
<res-ref-name>...</res-ref-name>
<jndi-name>...</jndi-name>
<default-resource-principal>
<name>...</name>
<password>...</password>
</default-resource-principal>
</resource-ref>
<resource-env-ref>
<resource-env-ref-name>...</resource-env-ref-name>
<jndi-name>...</jndi-name>
</resource-env-ref>
<message-destination-ref>
<message-destination-ref-name>...</message-destination-ref-name>
<jndi-name>...</jndi-name>
</message-destination-ref>
<pass-by-reference>...</pass-by-reference>
<cmp>
<one-one-finders>
<finder>
<method-name>...</method-name>
<query-params>...</query-params>
<query-filter>...</query-filter>
<query-ordering>...</query-ordering>
</finder>
</one-one-finders>
</cmp>
<principal>
<name>...</name>
</principal>
<mdb-connection-factory>
<jndi-name>...</jndi-name>
</mdb-connection-factory>
<jms-durable-subscription-name>...</jms-durable-subscription-name>
<ior-security-config>
<transport-config>
- 208 -
<integrity>...</integrity>
<confidentiality>...</confidentiality>
<establish-trust-in-target>...</establish-trust-in-target>
<establish-trust-in-client>...</establish-trust-in-client>
</transport-config>
<as-context>
<auth-method>...</auth-method>
<realm>...</realm>
<required>...</required>
</as-context>
<sas-context>
<caller-propagation>...</caller-propagation>
</sas-context>
</ior-security-config>
<cmt-timeout-in-seconds>...</cmt-timeout-in-seconds>
<use-thread-pool-id>...</use-thread-pool-id>
<bean-pool>
<steady-pool-size>...</steady-pool-size>
<resize-quantity>...</resize-quantity>
<max-pool-size>...</max-pool-size>
<pool-idle-timeout-in-seconds>...</pool-idle-timeout-in-seconds>
</bean-pool>
<bean-cache>
<max-cache-size>...</max-cache-size>
<resize-quantity>...</resize-quantity>
<cache-idle-timeout-in-seconds>...</cache-idle-timeout-in-seconds>
<removal-timeout-in-seconds>...</removal-timeout-in-seconds>
<victim-selection-policy>...</victim-selection-policy>
</bean-cache>
<mdb-resource-adapter>
<resource-adapter-mid>...</resource-adapter-mid>
<activation-config>
<description>...</description>
<activation-config-property>
<activation-config-property-name>...</activation-config-property-name>
<activation-config-property-value>...</activation-config-property-value>
</activation-config-property>
</activation-config>
</mdb-resource-adapter>
<webservice-endpoint>
<port-component-name>...</port-component-name>
<login-config>
<auth-method>...</auth-method>
</login-config>
</webservice-endpoint>
</ejb>
<cmp-resource>
<jndi-name>...</jndi-name>
<default-resource-principal>
<name>...</name>
<password>...</password>
</default-resource-principal>
</cmp-resource>
<message-destination>
<message-destination-name>...</message-destination-name>
<jndi-name>...</jndi-name>
</message-destination>
</enterprise-beans>
</sun-ejb-jar>
- 209 -
タグの一覧
Interstage EJB application deployment descriptorのタグ一覧を以下に示します。一覧の記載方法やタグの説明について
は、「3.2.3.7 Interstage deployment descriptorのタグの説明」を参照してください。
タグ名
sun-ejb-jar
概要
deployment descriptorの開始と終了
security-role-mapping*
セキュリティロールの対応付け
role-name
deployment descriptorのセキュリティロール
principal-name+ (注)
ディレクトリサービスに定義されているユーザID
group-name+ (注)
ディレクトリサービスに定義されているグループ名
enterprise-beans
EJB JARファイルに定義したアプリケーションに関す
る定義
unique-id?
システムID
ejb*
EJBアプリケーションに関する定義
ejb-name
EJBアプリケーションのEnterprise Bean名
jndi-name?
EJBアプリケーション名、またはDestination名
ejb-ref*
参照名に対応するEJBアプリケーションのJNDI名
ejb-ref-name
EJBオブジェクトの参照名
jndi-name
EJBアプリケーションのJNDI名
resource-ref*
参照名に対応するリソースのJNDI名
res-ref-name
リソースの参照名
jndi-name
リソースのJNDI名
default-resource-principal?
デフォルトユーザの定義
name
ユーザ名
password
パスワード
resource-env-ref*
参照名に対応するJMSのJNDI名
resource-env-ref-name
JMSの参照名
jndi-name
JMSのJNDI名
message-destination-ref*
参照名に対応するJMS Destinationオブジェクトの
JNDI名
message-destination-ref-name
JMS Destinationオブジェクトの参照名
jndi-name
JMS DestinationオブジェクトのJNDI名
pass-by-reference?
メソッド呼出し時の引数の受け渡し方法
cmp?
CMP Entity Beanアプリケーションに関する定義
one-one-finders?
finder+
EJB 1.1のCMPのEntity Beanに関する定義
finderメソッドごとのクエリの定義
method-name
finderメソッドと紐付けしたメソッド名
query-params?
入力パラメタの名前とタイプ
query-filter?
各オブジェクトに適用される条件
query-ordering?
クエリによって返却された結果をソートする順序を指
定
principal?
セキュリティロールに対応するユーザ名
- 210 -
タグ名
概要
ユーザ名
name
mdb-connection-factory?
jndi-name
Message-driven Beanに関連付ける
ConnectionFactory名
JNDI名
jms-durable-subscription-name?
サブスクライバの識別名
ior-security-config?
IIOP通信の認証、通信データの完全性、機密性
transport-config?
トランスポート層のセキュリティレベル
integrity
通信データの完全性
confidentiality
メッセージの機密性
establish-trust-in-target
クライアントからのEJBコンテナの認証の可否
establish-trust-in-client
EJBコンテナからのクライアントの認証の可否
as-context?
クライアントがEJBコンテナに渡す認証情報
auth-method
認証方法
realm
クライアント認証で使用するレルム
required
ユーザ名とパスワードの必要性
sas-context?
caller-propagation
クライアントから伝播される識別情報
クライアントから伝播される識別情報のサポート
cmt-timeout-in-seconds?
トランザクションタイムアウト値
use-thread-pool-id?
リモート呼出しに使用するスレッドのプール名
bean-pool?
プール定義
steady-pool-size?
Beanインスタンスの最小数
resize-quantity?
削減または増加するインスタンス数
max-pool-size?
インスタンスの最大数
pool-idle-timeout-in-seconds?
インスタンスの最大許容アイドルタイムアウト時間
bean-cache?
キャッシュ定義
max-cache-size?
キャッシュの最大値
resize-quantity?
キャッシュの変更量
cache-idle-timeout-in-seconds?
Beanインスタンスがキャッシュにいられる最大時間
removal-timeout-in-seconds?
無通信タイムアウト時間
victim-selection-policy?
Beanインスタンスを削除するために使用するポリシー
mdb-resource-adapter?
Message-driven Beanの受信対象種別定義
resource-adapter-mid
リソースアダプタ名
activation-config?
activationに関する定義
description?
説明
activation-config-property+
activation configurationプロパティ
activation-configproperty-name
activation configurationプロパティ名
- 211 -
タグ名
activation-configproperty-value
webservice-endpoint?
概要
activation configurationプロパティ値
Webサービス公開に関する定義
port-component-name
Webサービスの名前
login-config?
ユーザ認証の方法
auth-method
認証方法
realm?
認証で使用するレルム
cmp-resource?
CMP Entity Beanのデータベース情報
jndi-name
JDBCリソース名のJNDI名
default-resource-principal?
デフォルトユーザの定義
name
ユーザ名
password
パスワード
message-destination*
参照名に対応するJMS Destinationオブジェクトの
JNDI名
message-destination-name
JMS Destinationオブジェクトの参照名
jndi-name
JMS DestinationオブジェクトのJNDI名
注) principal-nameまたはgroup-nameのどちらか、または両方で、1つ以上、複数の指定ができます。指定順序の制限も
ありません。
3.2.3.4 Interstage CMP Mappings deployment descriptor (sun-cmpmappings.xml)
記述形式
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sun-cmp-mappings PUBLIC
"-//Sun Microsystems, Inc.//DTD Sun Java Application Server 8.1 OR Mapping 1.2 //EN"
"http://www.sun.com/software/sunone/appserver/dtds/sun-cmp-mapping_1_2.dtd">
<sun-cmp-mappings>
<sun-cmp-mapping>
<schema>...</schema>
<entity-mapping>
<ejb-name>...</ejb-name>
<table-name>...</table-name>
<consistency>
<lock-when-loaded/>
</consistency>
<cmp-field-mapping>
<field-name>...</field-name>
<column-name>...</column-name>
</cmp-field-mapping>
<cmr-field-mapping>
<cmr-field-name>...</cmr-field-name>
<column-pair>
<column-name>...</column-name>
<column-name>...</column-name>
</column-pair>
</cmr-field-mapping>
</entity-mapping>
</sun-cmp-mapping>
</sun-cmp-mappings>
- 212 -
タグの一覧
Interstage CMP Mappings deployment descriptorのタグ一覧を以下に示します。一覧の記載方法やタグの説明について
は、「3.2.3.7 Interstage deployment descriptorのタグの説明」を参照してください。
タグ名
sun-cmp-mappings
sun-cmp-mapping+
概要
deployment descriptorの開始と終了
CMP Entity Beanのマッピング情報
schema
データベースのスキーマ情報
entity-mapping+
データベースとCMP Entity Beanのマッピング
ejb-name
CMP Entity Beanと一致するEnterprise Bean名
table-name
データベースのテーブル名
consistency?
一貫性保証の定義
lock-when-loaded
検索時のロックの定義
cmp-field-mapping+
CMPフィールドの定義
field-name
CMPフィールド名
column-name+
テーブルのカラム名
cmr-field-mapping*
CMRフィールドの定義
cmr-field-name
CMRフィールド名
column-pair+
データベースカラム名の対応の定義
column-name
テーブルのカラム名
注意
sun-cmp-mapping.xmlのテーブル名とカラム名の表記について
CMP Entity BeanではデータベースのテーブルとマッピングするときにCMP Entity Beanアプリケーションに同梱されてい
るsun-cmp-mapping.xmlファイルの情報を使用します。データベースによっては文字列の大文字・小文字を自動で変換
します。そのため、sum-cmp-mappings.xmlに記載するテーブル名やカラム名に使用する文字列の大文字/小文字の区
別については使用するデータベースの仕様に合わせてください。
例えば、Oracleでは、ダブルコーテーションを付けていない識別子は自動的に大文字に変換します。このときはsun-cmpmapping.xmlのテーブル名やカラム名も大文字で指定してください。
PowerGres Plusでは、ダブルコーテーションを付けていない識別子は自動的に小文字に変換します。このときはsun-cmpmapping.xmlのテーブル名やカラム名も小文字で指定してください。
3.2.3.5 Interstage application client deployment descriptor (sun-applicationclient.xml)
記述形式
<!DOCTYPE sun-application-client PUBLIC
"-//Sun Microsystems, Inc.//DTD Application Server 9.0 Application Client 5.0//EN"
"http://www.sun.com/software/appserver/dtds/sun-application-client_5_0-0.dtd">
<sun-application-client>
<ejb-ref>
<ejb-ref-name>...</ejb-ref-name>
<jndi-name>...</jndi-name>
</ejb-ref>
- 213 -
<resource-ref>
<res-ref-name>...</res-ref-name>
<jndi-name>...</jndi-name>
<default-resource-principal>
<name>...</name>
<password>...</password>
</default-resource-principal>
</resource-ref>
<resource-env-ref>
<resource-env-ref-name>...</resource-env-ref-name>
<jndi-name>...</jndi-name>
</resource-env-ref>
<message-destination>
<message-destination-name>...</message-destination-name>
<jndi-name>...</jndi-name>
</message-destination>
<message-destination-ref>
<message-destination-ref-name>...</message-destination-ref-name>
<jndi-name>...</jndi-name>
</message-destination-ref>
</sun-application-client>
タグの一覧
Interstage application client deployment descriptorのタグ一覧を以下に示します。一覧の記載方法やタグの説明につい
ては、「3.2.3.7 Interstage deployment descriptorのタグの説明」を参照してください。
タグ名
sun-application-client
ejb-ref*
概要
deployment descriptorの開始と終了
参照名に対応するEJBアプリケーションのJNDI名
ejb-ref-name
EJBオブジェクトの参照名
jndi-name
EJBアプリケーションのJNDI名
resource-ref*
参照名に対応するリソースのJNDI名
res-ref-name
リソースの参照名
jndi-name
リソースのJNDI名
default-resource-principal?
デフォルトユーザの定義
name
ユーザ名
password
パスワード
resource-env-ref*
参照名に対応するJMSのJNDI名
resource-env-ref-name
JMSの参照名
jndi-name
JMSのJNDI名
message-destination*
参照名に対応するJMS Destinationオブジェクトの
JNDI名
message-destination-name
JMS Destinationオブジェクトの参照名
jndi-name
JMS DestinationオブジェクトのJNDI名
message-destination-ref*
参照名に対応するJMS Destinationオブジェクトの
JNDI名
message-destination-ref-name
JMS Destinationオブジェクトの参照名
jndi-name
JMS DestinationオブジェクトのJNDI名
- 214 -
3.2.3.6 Interstage ACC deployment descriptor (sun-acc.xml)
記述形式
<!DOCTYPE client-container PUBLIC
"-//Sun Microsystems Inc.//DTD Application Server 8.0 Application Client Container//EN"
"http://www.sun.com/software/appserver/dtds/sun-application-client-container_1_2.dtd">
<client-container>
<target-server name="..." address="..." port="..."/>
<log-service>
<property name="..." value="..."/>
</log-service>
<property name="..." value="..."/>
</client-container>
タグの一覧
Interstage ACC deployment descriptorのタグ一覧を以下に示します。一覧の記載方法やタグの説明については、「3.2.3.7
Interstage deployment descriptorのタグの説明」を参照してください。
タグ名
client-container
概要
deployment descriptorの開始と終了
target-server+
アクセスするサーバのIIOPリスナーの定義
log-service?
ログファイル
property (with attributes)*
property (with attributes)*
プロパティ
プロパティ
注意
sun-acc.xmlでは、以下の2つのプロパティのみサポートします。
プロパティ名
指定可能値
com.sun.appserv.iiop.loadbalancingpolicy
ic-based,disable
com.sun.appserv.iiop.endpoints
(IPアドレス):(ポート),……
com.fujitsu.appserv.jndi.remote.object.cache
true,false
3.2.3.7 Interstage deployment descriptorのタグの説明
タグの一覧
各Interstage deployment descriptorのタグ一覧の見方と注意事項を説明します。
タグ一覧の見方
タグ一覧に記載されている記号の意味を以下に示します。
記号
意味
?
タグを定義しなくて良い。または1つだけタグを定義することができる。
*
タグを定義しなくて良い。または複数のタグを定義することができる。
+
タグを1つ以上記述する必要がある。
- 215 -
注意事項
Interstage deployment descriptorの注意事項を以下に示します。
・ マニュアルに記載した定義以外はサポートしていません。
・ 先頭の<?xml...>と<!DOCTYPE...>は、XML宣言、およびDTDを記述しているため、Interstage deployment descriptor
ファイルの先頭で必ず記述してください。
・ 各タグの記載順序は、各タグ説明の記述形式の記載順序に従ってください。
・ 省略した場合、タグの定義が無効、またはエラーとなります。
・ 大文字・小文字は区別します。
・ マニュアルに記載した定義以外を指定した場合、エラーメッセージが出力されずにIJServerクラスタが起動する場合
がありますので注意してください。
タグの説明
bean-cache (親タグ:ejb)
Stateful Session BeanとEntity Beanのキャッシュ定義です。
EJBコンテナのキャッシュ定義を上書きしBeanごとに指定できます。不当な値を指定した場合の動作は保証しません
(注)。各定義値の設定可能な範囲および項目間の大小関係はEJBコンテナのEnterprise Beanインスタンスのキャッシ
ング定義と同等ですので、「6.8.8 EJBコンテナの定義項目」を参照してください。
キャッシュ機能については、「チューニングガイド」-「Enterprise Beanインスタンスのキャッシング」を参照してください。
<max-cache-size>
キャッシュされたBeanインスタンスをpassivate対象とするか判断する数です。
デフォルト値は512です。0を設定した場合はキャッシュサイズが無制限になります。
<resize-quantity>
Beanインスタンスをpassivateする場合、この数のインスタンスをpassivateしてキャッシュから破棄します。
変更量はキャッシュサイズの最大値による制限を受けます。デフォルト値は32です。
<cache-idle-timeout-in-seconds>
キャッシュされたBeanインスタンスをpassivate対象とするかを判定する監視時間(秒単位)です。指定した時間間隔で
キャッシュを監視し、指定した時間以上アイドル状態が続いているBeanインスタンスをpassivate対象とします。passivate
対象のインスタンス数が8を超えるとBeanインスタンスをファイルシステムにpassivateします。0を設定した場合はキャッ
シュアイドルタイムアウトが動作しません。
デフォルト値は600秒(10分)です。
<removal-timeout-in-seconds>
passivateしたBeanインスタンスがファイルシステムに存在できる最大時間(秒単位)です。Beanインスタンスに対して、
この時間を超過してもビジネスメソッドが実行されなかった場合、EJBコンテナが該当のインスタンスの対話状態をファ
イルシステムから削除します。キャッシュアイドルタイムアウト以下の値を指定すると、Beanインスタンスをpassivateした
後に削除します。0を設定した場合は削除タイムアウトが動作しません。
デフォルト値は5400秒(90分)です。
<victim-selection-policy>
設定されたポリシーに基づいて、コンテナは削除するStateful Session Beanを決定します。コンテナがキャッシュから
Beanインスタンスを削除するために使用するポリシーを以下の値で指定します。
- NRU : 最近使用されていない
- FIFO: ファーストインファーストアウト
- LRU : 最近の使用頻度がもっとも低い
NRUポリシー(Not Recently Used)は、キャッシュ内で古い、かつ最近アクセスされていないBeanインスタンスを優先的
に削除します。FIFOポリシー(First In, First Out)は、キャッシュ内で最も古いBeanを削除します。LRUポリシー(Least
Recently Used)は、最近最もアクセスされていないBeanを削除します。
デフォルト値はNRUです。
Entity Beanの場合は常にFIFOポリシーを使って削除されます。
- 216 -
注意
不当な値を指定した場合、以下のように動作します。
- マイナスの値を入力した場合
- -1を入力した場合は、EJBコンテナのキャッシュ定義の値が有効となる。
- -1以外が指定された場合には0が指定された場合と同様に動作する。
- resize-quantityにmax-cache-sizeより大きい値を指定した場合
- 想定外のタイミングでインスタンスをpassivateする。
- 文字列を入力するなど、上記以外の不当な値を指定した場合
- 指定した値は無効となり、EJBコンテナのキャッシュ定義の値が有効となる。
bean-pool (親タグ:ejb)
Stateless Session Bean、Message-driven BeanとEntity Beanのプール定義です。
EJBコンテナのプール定義を上書きしBeanごとに指定する場合、以下の定義を使用できます。不当な値を指定した
場合の動作は保証しません(注)。各定義値の設定可能な範囲および項目間の大小関係はEJBコンテナのEnterprise
Beanインスタンスのプーリング定義と同等ですので、「6.8.8 EJBコンテナの定義項目」または「6.8.9 Message-driven
Beanデフォルトプールの定義項目」を参照してください。
プーリング機能については、「チューニングガイド」-「Enterprise Beanインスタンスのプーリング」を参照してください。
<steady-pool-size>
EJBアプリケーションへのアクセス時、またはアイドルタイムアウト監視処理時に生成するBeanインスタンス数です。
処理要求によりプールに存在するインスタンス数が指定した値より小さくなると、EJBコンテナはプールされたBeanイ
ンスタンスが指定された値以上になるまでBeanインスタンスをプールサイズの変更量単位に生成してプールに追加
します。
デフォルト値は0です。
<resize-quantity>
コンテナがプール内のインスタンスの数を調整する場合、一度に破棄または追加するインスタンスの数を指定します。
0~MAX_INTEGERの範囲(Message-driven Beanの場合は1~MAX_INTEGERの範囲)で指定できますが、プール
サイズの最小値と最大値による制限を受けます。
0を設定した場合、またはプールサイズの最小値に0を指定した場合は適用されません。適用されない場合は1インス
タンスずつ生成します。
デフォルト値は8です。
Message-driven Beanでは0を設定した場合、デフォルト値が設定されます。
<max-pool-size>
プール内に保持するインスタンスの最大数を指定します。0~MAX_INTEGERの範囲(Message-driven Beanの場合
は1~MAX_INTEGER)で指定します。
デフォルト値は32です。
0を設定した場合はプールサイズが無制限になりますが、Message-driven Beanの場合はデフォルト値が設定されます。
<pool-idle-timeout-in-seconds>
プールにあるインスタンスの最大許容アイドル時間を指定します。EJBコンテナは設定値の間隔でプールを監視し、
この設定値を超過したアイドル状態のBeanインスタンスをプールから除去します。プールサイズが最小プールサイズ
未満の場合は、プールサイズの変更量に従いインスタンスを追加します。
デフォルト値は600秒(10分)です。
0を設定した場合は監視しませんが、Message-driven Beanの場合はデフォルト値が設定されます。
注意
不当な値を指定した場合、以下のように動作します。
- 217 -
- マイナスの値を入力した場合
- -1を入力した場合は、EJBコンテナのプール定義の値が有効となる。
- -1以外が指定された場合には0が指定された場合と同様に動作する。
- 文字列を入力するなど、上記以外の不当な値を指定した場合
- 指定した値は無効となり、EJBコンテナのプール定義の値が有効となる。
class-loader (親タグ: sun-web-app)
Webアプリケーションをロードするクラスローダを制御する共通の値を定義します。
指定可能な属性名を以下に示します。
属性名
delegate
省略値
true
意味
Webクラスローダの委譲モデルを指定します。Webクラスローダの委
譲モデルについては、「2.22.3 Webクラスローダの委譲モデルの変
更」を参照してください。
・ true :親クラスローダへの委譲を先に行います。
・ false:親クラスローダへの委譲を後に行います。
client-container
Interstage ACC deployment descriptorの開始と終了を定義します。
cmp (親タグ: ejb)
CMP Entity Beanアプリケーションに関する定義です。
<one-one-finders>
EJB 1.1のCMPのEntity Beanに関する定義です。
<finder>
EJB 1.1のCMP Entity Beanのfinderメソッドごとにクエリを定義します。
定義の詳細については、「D.1.3 EJB 1.1のCMP Entity Beanのfinderメソッドの検索条件定義の指定」を参照してくだ
さい。
<method-name>
Homeインタフェースに定義したfinderメソッドと紐付けしたメソッド名を指定します。
<query-params>
クエリの1つまたは複数の入力パラメタの名前とタイプを指定します。Java言語のパラメタの構文で記述します。
<query-filter>
クエリによって返される各オブジェクトに適用される条件を指定します。WHERE句に対応します。
<query-ordering>
クエリによって返却される結果をソートします。SQLのORDER BY句に対応します。
cmp-field-mapping (親タグ:entity-mapping)
CMPフィールドを指定します。ejb-jar.xmlファイルに定義されているcmp-fieldごとに1つの<cmp-field-mapping>タグを
定義してください。
<field-name>
ejb-jar.xmlファイルに定義されているCMPフィールド(<field-name>)と一致するCMPフィールド名を指定します。
<column-name>
CMPフィールドと対応付けるテーブルのカラム名を指定します。
cmp-resource (親タグ:enterprise-beans)
EJB application deployment descriptor (ejb-jar.xml)に定義したCMP Entity Beanのデータベース情報を定義します。
<jndi-name>
JDBCリソース名のJNDI名を指定します。
- 218 -
cmr-field-mapping (親タグ:entity-mapping)
互いに参照を持つEJBアプリケーションのリレーションのCMRフィールドを定義します。EJB 1.1のCMP Entity Beanの
場合は省略します。
ejb-jar.xmlファイルに定義されているcmr-fieldごとに1つのcmr-field-mappingを定義してください。
Entity Bean間のリレーションシップはテーブルのカラムが他のテーブルのカラムの値と同じになっていることで成り立っ
ています。多:多のリレーションの場合にはJoinテーブルを使用します。1:1、1:多と多:1の場合にもJoinテーブルを使
用できますが、通常は外部キーカラムを使用します。以下にリレーションの定義にJoinテーブルを使用する場合、外
部キーカラムを使用する場合のマッピング方法を示します。
Joinテーブルを使用する場合
Joinテーブルは、リレーションのある両方のEntity Beanのプライマリキーを格納するためのカラムを持っています。
各Entity Beanオブジェクトのリレーションに対してJoinテーブルに行があります。Entity Beanオブジェクトのリレー
ションをたどると、この行から他のEntity Beanのプライマリキーが取得されます。リレーションを作成/更新/削除する
とEJBコンテナが行を追加/削除します。Joinテーブルを使用した場合、両方のEntity Beanの各プライマリキーカラ
ムに対して<column-pair>を定義してください。
以下にEntity Bean間の多:多のリレーション(双方向)のJoinテーブルマッピング例を示します。
以 下 の 例 で は Join テ ー ブ ル と し て EMPLOYEEMEETING と い う テ ー ブ ル を 設 定 し て い ま す。
EMPLOYEEMEETINGテーブルにはEMPLOYEE_IDとMEETING_NOというカラムがあり、それぞれEMPLOYEE
テーブルとMEETINGテーブルのプライマリキーと同じ値を格納します。
<entity-mapping>
<ejb-name>Employee</ejb-name>
<table-name>EMPLOYEE</table-name>
<cmp-field-mapping>
<field-name>name</field-name>
<column-name>NAME</column-name>
</cmp-field-mapping>
<cmp-field-mapping>
<field-name>id</field-name>
<column-name>ID</column-name>
</cmp-field-mapping>
<cmr-field-mapping>
<cmr-field-name>meeting</cmr-field-name>
<column-pair>
<column-name>ID</column-name>
<column-name>EMPLOYEEMEETING.EMPLOYEE_ID</column-name>
</column-pair>
<column-pair>
<column-name>EMPLOYEEMEETING.MEETING_NO</column-name>
<column-name>MEETING.NO</column-name>
</column-pair>
</cmr-field-mapping>
</entity-mapping>
<entity-mapping>
<ejb-name>Meeting</ejb-name>
<table-name>MEETING</table-name>
<cmp-field-mapping>
<field-name>no</field-name>
<column-name>NO</column-name>
</cmp-field-mapping>
<cmp-field-mapping>
<field-name>room</field-name>
<column-name>ROOM</column-name>
</cmp-field-mapping>
<cmr-field-mapping>
<cmr-field-name>employee</cmr-field-name>
<column-pair>
<column-name>NO</column-name>
<column-name>EMPLOYEEMEETING.MEETING_NO</column-name>
</column-pair>
- 219 -
<column-pair>
<column-name>EMPLOYEEMEETING.EMPLOYEE_ID</column-name>
<column-name>EMPLOYEE.ID</column-name>
</column-pair>
</cmr-field-mapping>
</entity-mapping>
外部キーカラムを使用する場合
外部キーカラムは、Entity Beanにマッピングしたテーブルに、その他のEntity Beanのプライマリキーを格納するた
めに追加したカラムです。Entity Bean間にリレーションを作成すると、EJBコンテナはEntity Beanオブジェクトに対
応する行の外部キーカラムに、他Entity Beanのプライマリキーを格納します。リレーションを削除すると、NULLを
格納します。
外部キーカラムを使用した場合、各プライマリキーカラムに対して<column-pair>を定義してください。
以下にEntity Bean間の1:多のリレーション(双方向)の外部キーカラムマッピング例を示します。
<entity-mapping>
<ejb-name>Customer</ejb-name>
<table-name>CUSTOMER</table-name>
<cmp-field-mapping>
<field-name>id</field-name>
<column-name>ID</column-name>
</cmp-field-mapping>
<cmp-field-mapping>
<field-name>name</field-name>
<column-name>NAME</column-name>
</cmp-field-mapping>
<cmr-field-mapping>
<cmr-field-name>cards</cmr-field-name>
<column-pair>
<column-name>CUSTOMER.ID</column-name>
<column-name>CREDITCARD.CUSTOMER_ID</column-name>
</column-pair>
</cmr-field-mapping>
</entity-mapping>
<entity-mapping>
<ejb-name>Creditcard</ejb-name>
<table-name>CREDITCARD</table-name>
<cmp-field-mapping>
<field-name>number</field-name>
<column-name>NO</column-name>
</cmp-field-mapping>
<cmp-field-mapping>
<field-name>name</field-name>
<column-name>NAME</column-name>
</cmp-field-mapping>
<cmp-field-mapping>
<field-name>expires</field-name>
<column-name>EXPIRES</column-name>
</cmp-field-mapping>
<cmr-field-mapping>
<cmr-field-name>cardholder</cmr-field-name>
<column-pair>
<column-name>CUSTOMER.ID</column-name>
<column-name>CREDITCARD.CUSTOMER_ID</column-name>
</column-pair>
</cmr-field-mapping>
</entity-mapping>
- 220 -
<cmr-field-name>
ejb-jar.xmlファイルに定義されているCMRフィールド(<cmr-field-name>)と一致するCMRフィールド名を指定します。
<column-pair>
連携するデータベースカラム名を対で指定します。
<cmp-field-mapping>に定義したEntity Beanのプライマリキーカラムと、同じ値となるJoinテーブルカラムまたは他テー
ブルの外部キーカラムを指定してください。
<column-name>
テーブルのカラム名を指定します。
<table-name>に指定したテーブルと違うテーブルのカラムを定義する場合、「テーブル名.カラム名」のように、テーブ
ル名とカラム名をピリオドで区切って指定してください。
cmt-timeout-in-seconds (親タグ:ejb)
トランザクション制御をコンテナが行う場合、トランザクションタイムアウト値を秒で指定します。
省略または0に指定するとトランザクションサービスで設定したタイムアウト値が使用されます。
トランザクションのタイムアウトが発生した場合、IJServerクラスタはトランザクションの状態を「MarkedRollback」に変更
します(注)。MarkedRollbackに変更されたトランザクションは、EJBアプリケーションのメソッド処理完了時に、自動的
にロールバックされます。
注) トランザクションの状態については、「2.14.6 トランザクションの監視と凍結機能」を参照してください。
consistency (親タグ:entity-mapping (親タグ:sun-cmp-mapping))
一貫性を保証する機能を定義します。
cookie-properties (親タグ:session-config)
Webアプリケーション内のセッションの追跡に使用するcookieを制御する共通の値を<property>タグを使用して定義
します。
指定可能なプロパティを以下に示します。
プロパティ名
省略値
意味
cookieSecur
e
dynamic
セッションの追跡に使用するcookieにSecure属性を常に付加するか
どうかを指定します。
SSLアクセラレータを使用する場合には、セッションの追跡に使用す
るcookieにSecure属性は自動的に付加されませんが、本機能を有
効にすることにより、Secure属性を常に付加することが可能です。
・ true : 常に付加する
・ dynamic : スキーマに依存
httpの場合は付加しない
httpsの場合は付加する
注) 上記以外の設定を行った場合、WEB0123が出力されてアプリ
ケーションの実行に失敗するかまたは、常に付加されなくなります。
cookieMax
AgeSeconds
-1
Webブラウザ上でセッションを保存する際の有効期限を秒単位で設
定します。
・ 1~2147483647:Webブラウザ上でセッションを保存する際の有
効期限となります。「Webブラウザでセッションを保存する」の注
意点を参照し、運用環境に合わせて適切な値を設定してくださ
い。
・ 0:cookieによるセッションの追跡が無効となります。
・ 上記以外:Webブラウザ上でセッションを保存しません。
default-resource-principal (親タグ:resource-ref、cmp-resource)
親タグで定義したリソースを使用することができるデフォルトのユーザを定義します。
- 221 -
<name>
JDBCリソースやJMSを使用する際の、デフォルトのユーザ名を定義します。
<password>
<name>タグで定義したデフォルトのユーザが使用するパスワードを定義します。
注意
本定義はサーバ上にテキストファイルで保管されますので、JDBCリソースやJMSのリソース定義にパスワードエイリア
スを定義することを推奨します。
ejb (親タグ:enterprise-beans)
EJBアプリケーションに関する定義です。
<ejb-name>
EJB application deployment descriptor (ejb-jar.xml)またはアノテーションで宣言されたEJBアプリケーションと紐付け
したEJBアプリケーションのEnterprise Bean名を指定します。
<jndi-name>
- Remote BusinessインタフェースまたはRemoteインタフェースを定義したSessionとEntity Beanの場合:
JNDIに登録するEJBアプリケーション名を指定します。
このタグを省略した場合、以下の順番でEJBアプリケーション名が決定されます。
1. ejb-jar.xmlの<mapped-name>に定義された値
2. EJBアプリケーションのJavaソースに定義された@Statelessまたは@StatefulのmappedName属性に定義され
た値
- JMSからメッセージを受信するMessage-driven Beanの場合:
使用するDestination名を指定します。
- その他の場合:
本定義が無視されます。
ejb-name (親タグ:entity-mapping)
ejb-jar.xmlファイルに定義されているCMP Entity Beanと一致するEnterprise Bean名を指定します。
ejb-ref (親タグ:sun-web-app、ejb、sun-application-client)
Java EE deployment descriptorの<ejb-ref>タグ、または@EJB、@EJBsのアノテーションで定義した参照名に対応する
EJBアプリケーションのJNDI名(運用環境の実名)を指定します。
<ejb-ref-name>
EJBオブジェクトの参照名を定義します。
ここで指定する参照名はJava EE deployment descriptorの<ejb-ref-name>タグで定義した参照名を使用してください。
<jndi-name>
実際の運用環境におけるEJBアプリケーションのJNDI名を定義します。
参照
定義方法については、「2.13 JNDI」を参照してください。
enterprise-beans (親タグ:sun-ejb-jar)
EJB JARファイルに定義したアプリケーションに関する定義です。
entity-mapping (親タグ:sun-cmp-mapping)
データベースカラムとCMP Entity Beanのマッピングを定義します。
- 222 -
ior-security-config (親タグ:ejb)
Enterprise JavaBeanに対するIIOP通信の認証、通信データの完全性、機密性を設定します。
<transport-config>
トランスポート層のセキュリティレベルを指定します。
いずれかの1つでも"REQUIRED"が指定された場合は、SSLまたはTLSで通信を行います。
<integrity>
通信データの完全性を設定します。
通信データが改ざんされる恐れがある場合はREQUIREDを指定してください。
- NONE:
EJBコンテナは通信データの完全性をサポートしません。
- SUPPORTED:
EJBコンテナは通信データの完全性をサポートします。
- REQUIRED:
EJBコンテナは通信データの完全性をクライアントに要求します。
<confidentiality>
メッセージの機密性を設定します。
通信データが盗聴される恐れがある場合はREQUIREDを指定してください。
- NONE:
EJBコンテナは通信データの機密性をサポートしません。
- SUPPORTED:
EJBコンテナは通信データの機密性をサポートします。
- REQUIRED:
EJBコンテナは通信データの機密性をクライアントに要求します。
<establish-trust-in-target>
EJBコンテナがクライアントから認証可能かを設定します。
- NONE:
クライアントはEJBコンテナを認証できません。
- SUPPORTED:
クライアントはEJBコンテナを認証することが可能です。
<establish-trust-in-client>
EJBコンテナがクライアントを認証するかを設定します。
- NONE:
EJBコンテナはクライアントを認証しません。
- SUPPORTED:
EJBコンテナはクライアントを認証することが可能です。
- REQUIRED:
EJBコンテナはクライアントの認証を要求します。クライアントはクライアント証明書が必要です。
<as-context>
クライアントがEJBコンテナに渡す認証情報を指定します。
<auth-method>
認証方法を指定します。
IIOP通信の場合、USERNAME_PASSWORDを指定してください。
<realm>
クライアント認証で使用するレルムを指定します。defaultを指定してください。
Interstageディレクトリサービスのレルムになります。
<required>
クライアント側でユーザ名とパスワードを提供する必要があるかどうか指定します。
- 223 -
trueかfalseを指定してください。trueを指定すると、BeanはEJBクライアントに対してユーザ名とパスワードの指定を要
求します。
<sas-context>
クライアントから伝播される識別情報について設定します。
<caller-propagation>
クライアントからの識別情報の伝播をサポートするかを指定します。
- NONE:
クライアントから伝播される識別情報をサポートしません。
- SUPPORTED:
クライアントは識別情報を伝播することが可能です。
jms-durable-subscription-name (親タグ:ejb)
EJB 2.1以降のEJBアプリケーションの場合、EJB application deployment descriptor (ejb-jar.xml)のactivation-configタ
グまたは@ActivationConfigPropertyのアノテーションでサブスクライバの識別名を定義します。以下の順番でサブス
クライバの識別名が決定されます。
1. EJB application deployment descriptor (ejb-jar.xml)のactivation-configタグで定義したサブスクライバの識別名
2. @ActivationConfigPropertyのアノテーションで定義したサブスクライバの識別名
3. 本タグで定義したサブスクライバの識別名
jsp-config (親タグ: sun-web-app)
Webアプリケーション内のJSPを制御する共通の値を<property>タグを使用して定義します。
指定可能なプロパティを以下に示します。
プロパティ名
省略値
enablePooli
ng
true
意味
タグプーリングを使用するかどうかを指定します。
・ true : 使用します。
・ false: 使用しません。
ignoreJspFr
agmentError
s
false
JSPを事前コンパイルする時に静的includeするJSPファイルのエラー
を無視するかどうかを指定します。
・ true : 無視します。
・ false: 無視しません。
JSP事前コンパイルに対してだけ有効です。構成チェック(配備モ
ジュールの検証)には有効となりません。
keepgenerat
ed
true (注
1)
JSPコンパイル時にJavaソースコードを生成するかどうかを指定しま
す。 (注2)
・ true : 生成します。
・ false: 生成しません。
developmen
t
false
リクエスト時にJSPのオートリロードを行うかどうかを指定します。
・ true : オートリロードを行う。
・ false: オートリロードを行わない。
checkInterv
al
0
JSPのオートリロードを行う間隔(秒)を指定します。developmentにfalse
が設定されており、0より大きい値を指定した場合にオートリロードが
有効になります。
有効範囲: 1~2147483647
scratchdir
(注3)
JSPのコンパイル結果を格納するディレクトリを絶対パスで指定します。
(注4)
- 224 -
プロパティ名
省略値
意味
JSP事前コンパイル時にはこの定義は有効となりません。省略値で
動作します。
usePrecomp
iled
false
Webアプリケーション内にあるJSP事前コンパイル結果を使用してJSP
を実行するか指定します。
・ true : 使用します
- JSP事前コンパイル結果はパッケージ構成ごとWEB-INF/
classes、またはWEB-INF/lib(JARファイルとして管理してい
る場合)に格納してください。
- JSP事前コンパイル結果がない場合、メッセージPWC6034
を出力してJSPの実行に失敗します。
- JSPのオートリロード機能は設定にかかわらず無効になります。
・ false : 使用しません
注1) Java Development Kit 5.0の場合はtrue、Java Development Kit 6.0の場合はfalse。
注2) keepgeneratedはJSP実行時のコンパイルに対して有効になります。配備時にコンパイルを使用した場合、
keepgeneratedの設定にかかわらず、必ずJavaソースコードを生成します。
注3) 「2.4.2 IJServerクラスタのファイル構成」の「JSPコンパイル結果格納ディレクトリ」を参照してください。
注4) Webアプリケーションの配備解除を行っても、scratchdirで指定したディレクトリ内にあるJSPコンパイル結果は削
除されません。JSPコンパイル結果が必要ない場合には、手動で削除してください。
注意
scratchdirでJSPコンパイル結果格納ディレクトリを指定する場合のパスの長さは以下を目安にしてください。
指定可能なパスの長さ =
最大パス長(255バイト) パッケージパス(org\apache\jsp\ : 15バイト) Webアプリケーション内のJSP格納ディレクトリパス(ユーザ任意) JSPコンパイル結果(JSPファイル名_jsp.class)
指定可能なパスの長さ =
最大パス長(1023バイト) パッケージパス(org/apache/jsp/ : 15バイト) Webアプリケーション内のJSP格納ディレクトリパス(ユーザ任意) JSPコンパイル結果(JSPファイル名_jsp.class)
例
以下の構成でJSPが格納されている場合に指定可能なパスの長さを説明します。
sample.war
/jsp
/sample.jsp
/WEB-INF
- 225 -
指定可能なパスの長さ =
最大パス長(255バイト) パッケージパス(org\apache\jsp\ : 15バイト) Webアプリケーション内のJSP格納ディレクトリパス(\jsp : 4バイト) JSPコンパイル結果(\sample_jsp.class : 17バイト) = 219バイト
指定可能なパスの長さ =
最大パス長(1023バイト) パッケージパス(org/apache/jsp/ : 15バイト) Webアプリケーション内のJSP格納ディレクトリパス(/jsp : 4バイト) JSPコンパイル結果(/sample_jsp.class : 17バイト) = 987バイト
lock-when-loaded (親タグ: consistency (親タグ:entity-mapping))
検索時のロック機能を定義します。本タグは<lock-when-loaded/>とするか値を空にして定義します。
このタグを定義すると、EJBコンテナが発行するSELECT文で検索した行に更新ロックをかけます。更新ロックとは検
索処理時に参照した行にロックをかけることにより、トランザクション処理が完了するまでデータの一貫性を保証する
ロックです。
log-service (親タグ:client-container)
ログの出力レベルを指定します。
指定可能な属性を以下に示します。
属性名
level
省略値
INFO
意味
ログの出力レベルを指定します。
・ INFO: 情報メッセージ、警告メッセージ、エラーメッセージを出
力します。 (注1)
・ WARNING: 警告メッセージ、エラーメッセージを出力します。
(注2)
・ SEVERE: エラーメッセージを出力します。
注1) トラブル調査用にログを採取する場合はINFOレベルを指定してください。
注2) -xmlオプションを指定しない場合に使用されるデフォルトのsun-acc.xmlファイルにはWARNINGを指定していま
す。
mdb-connection-factory (親タグ:ejb)
JMSからメッセージを受信するMessage-driven Beanに関連付けるConnectionFactory名(運用環境の実名)を指定しま
す。
<jndi-name>
JNDI名(絶対名)を指定します。
注意
本タグ配下には<default-resource-principal>タグが記述可能ですが、利用できません。
Message-driven Bean 単 位 に ConnectionFactory の 認 証 情 報 を 定 義 す る 場 合 、 ejb-jar.xml の <activation-configproperty>に定義してください。詳細は、「5.7.3 アプリケーションからJMSを利用する際の認証方法」を参照してください。
mdb-resource-adapter (親タグ:ejb)
Message-driven Beanの受信対象種別定義です。
<resource-adapter-mid>
Message-driven Beanがリソースアダプタからメッセージを受信する場合は、リソースアダプタ名を指定します。
- 226 -
JMSからメッセージを受信する場合は、「jmsra」を指定してください。または、<mdb-resource-adapter>定義を省略して
ください。
<activation-config>
activationに関する設定です。
<description>
activation configurationの説明文です。
<activation-config-property>
activation configurationプロパティを指定します。
<activation-config-property-name>
activation configurationプロパティ名を指定します。
<activation-config-property-value>
activation configurationプロパティ値を指定します。
webservice-endpoint (親タグ:ejb)
Stateless Session BeanをWebサービスのエンドポイントとして公開する場合の設定を定義します。
<port-component-name>
Webサービスの名前を記載します。javax.jws.WebServiceアノテーションのname属性などで指定した名前を記載します。
特に指定していない場合、ejb実装クラスのクラス名を記載します。
<login-config>
クライアントを認証する場合に、認証の方法を定義します。
<auth-method>
認証方法を定義します。以下の値がサポートされます。
- BASIC : HTTP Basic認証
<realm-name>
認証で使用するレルム名を定義します。省略した場合は、デフォルトレルムが選択されます。
message-destination (親タグ: sun-web-app、enterprise-beans、sun-application-client)
Java EE deployment descriptorの<message-destination>タグ、または@Resource、@Resourcesで定義した参照名に対
応する実際の運用環境におけるJMS DestinationオブジェクトのJNDI名を定義します。
<message-destination-name>
JMS Destination オブジェクトへの参照名を定義します。
ここで指定する参照名はJava EE deployment descriptorの<message-destination-ref>タグで定義した参照名を指定し
てください。
<jndi-name>
実際の運用環境におけるJMS DestinationオブジェクトのJNDI名を定義します。
参照
定義方法については、「2.13 JNDI」を参照してください。
message-destination-ref (親タグ:sun-web-app、ejb、sun-application-client)
Java EE deployment descriptorの<message-destination-ref>タグ、または@Resource、@Resourcesで定義した参照名
に対応する実際の運用環境におけるJMS DestinationオブジェクトのJNDI名を定義します。
Java EE deployment descriptorのmessage-destination-refタグでmessage-destination-linkを定義した場合は、対応する
実際の運用環境におけるJMS Destinationオブジェクトをmessage-destination定義で指定します。
<message-destination-ref-name>
JMS Destination オブジェクトへの参照名を定義します。
ここで指定する参照名はJava EE deployment descriptorの<message-destination-ref-name>タグで定義した参照名を
指定してください。
- 227 -
<jndi-name>
実際の運用環境におけるJMS DestinationオブジェクトのJNDI名を定義します。
参照
定義方法については、「2.13 JNDI」を参照してください。
parameter-encoding (親タグ:sun-web-app)
Webアプリケーション内で使用するエンコーディングを定義します。
指定可能な属性を以下に示します。
属性名
defaultcharset
省略値
意味
ISO-885
9-1
クライアントからのリクエストのパラメタ解析やボディの処理に使用す
るエンコーディングを指定します。
pass-by-reference (親タグ:ejb)
ServletまたはEnterprise JavaBeanが同一プロセス上の他のEnterprise JavaBeanのリモートインタフェース(Homeインタ
フェース、Remoteインタフェース、Remote Businessインタフェース)のメソッドを呼び出す場合、引数と返却値のコピー
を渡すか、または参照を渡すかを指定します。trueまたはfalseを指定してください。それ以外の値を指定した場合、
falseを指定した動作になります。それぞれの値を指定した場合の動作は以下です。
- true:
引数と返却値の参照を渡します。コピーを作成しないため性能が向上します。しかし、渡された値を呼出し元で
変更した場合、呼出し先の値を変更することになるため、アプリケーションの動作に影響があります。メソッドの引
数と返却値を更新しない場合だけ指定してください。
- false:(省略値)
引数と返却値のコピーを渡します。EJB規約通りの動作です。コピーを生成するため、性能のオーバーヘッドが
あります。しかし、渡された値を呼出し元で変更しても、呼出し先の値は変更されないため、別プロセスで同一の
Enterprise JavaBeanを呼び出した場合とアプリケーションの動作を同一とすることができます。
注意
- 本タグの指定は、呼び出し元のServletまたはEnterprise JavaBeanと、呼び出される側のEnterprise JavaBeanが、
同じEARファイルまたはJARファイルに配備されている場合だけ有効となります。
つまり、同じクラスローダでロードされる範囲で有効となります。
- sun-application.xmlのpass-by-referenceタグへ指定する方法はサポートしていません。
本機能を利用する場合、sun-ejb-jar.xmlのpass-by-referenceタグに指定してください。
principal (親タグ:ejb)
EJB application deployment descriptor (ejb-jar.xml)のrun-asタグまたは@RunAsのアノテーションに指定したセキュリ
ティロールに対応するprincipal名(ユーザ名)を指定します。
セキュリティロールに対応するユーザが1つしかない場合は、定義不要です。
<name>
principal名(ユーザ名)を指定します。
property (親タグ:sun-web-app、session-properties、cookie-properties、client-container)
親タグに関するプロパティを定義します。
指定可能な属性、プロパティを以下に示します。
属性名
省略値
意味
name
-
プロパティ名を指定します。
value
-
プロパティ値を指定します。
- 228 -
プロパティ名
省略値
description
-
意味
プロパティの説明を記述します。親タグがclient-containerタグの場合
には指定できません。
resource-env-ref (親タグ:sun-web-app、ejb、sun-application-client)
Java EE deployment descriptorの<resource-env-ref>タグ、または@Resource、@Resourcesで定義した参照名に対応
するJMS Destination(Queue,Topic)の運用環境のJNDI名を指定します。
このタグを定義することによって、IJServerクラスタの名前変換と同等の機能を使用できます。
<resource-env-ref-name>
JMS Destination(Queue,Topic)の参照名を定義します。
ここで指定する参照名はJava EE deployment descriptorの<resource-env-ref-name>タグで定義した参照名を指定して
ください。
<jndi-name>
実際の運用環境におけるJNDI名を定義します。
参照
定義方法については、「2.13 JNDI」を参照してください。
resource-ref (親タグ:sun-web-app、ejb、sun-application-client)
Java EE deployment descriptorの<resource-ref>タグ、または@Resource、@Resourcesのアノテーションで定義した参
照名に対応するJDBCデータソース、JMS(ConnectionFactory)、JavaMail、connector、URLの運用環境の実名を指定
します。
<res-ref-name>
リソースの参照名を定義します。
ここで指定する参照名はJava EE deployment descriptorの<res-ref-name>タグで定義した参照名を指定してください。
<jndi-name>
実際の運用環境におけるJNDI名を定義します。
参照
定義方法については、「2.13 JNDI」を参照してください。
schema (親タグ: sun-cmp-mapping)
capture-schemaコマンドにより取得したデータベースのスキーマ情報のファイルパスを指定します。
ejb-jarファイルのトップからの相対パスを指定して拡張子(".dbschema")を省略してください。パスの区切り文字は"/"(ス
ラッシュ)です。また、スキーマ情報を自動的に取得させる場合、タグの値を空にしてください
例1:スキーマファイル名がEJB.schemaで、ejb-jarファイル配下のMETA-INFディレクトリにスキーマファイルがある場
合
<schema>META-INF/EJB</schema>
例2:スキーマ情報を自動的に取得させる場合
<schema/>
または
<schema></schema>
- 229 -
security-role-mapping (親タグ:sun-application、sun-web-app、sun-ejb-jar)
Java EE deployment descriptorに定義されているセキュリティロールとInterstageディレクトリサービスに定義されている
ユーザまたはグループを対応付けます。
Java EEセキュリティを使用する場合に定義します。
<role-name>
Java EE deployment descriptorに定義されているセキュリティロールを定義します。
<principal-name>
Interstageディレクトリサービスに定義されているユーザIDを定義します。
<group-name>
Interstageディレクトリサービスに定義されているグループ名を定義します。
注意
1つのセキュリティロールに対して複数のユーザ(または、グループ)を対応付ける場合は以下のように1つの<securityrole-mapping>タグに複数の<principal-name>タグ(または、<group-name>タグ)を定義してください。
<security-role-mapping>
<role-name>roleA</role-name>
<principal-name>userA</principal-name>
<principal-name>userB</principal-name>
<group-name>GroupA</group-name>
<group-name>GroupB</group-name>
</security-role-mapping>
以下のように複数の<security-role-mapping>タグに分けて定義した場合は、セキュリティロールとユーザ(または、グ
ループ)の対応付けが正常に動作しません。
<security-role-mapping>
<role-name>roleA</role-name>
<principal-name>userA</principal-name>
</security-role-mapping>
<security-role-mapping>
<role-name>roleA</role-name>
<principal-name>userB</principal-name>
</security-role-mapping>
servlet (親タグ: sun-web-app)
サーブレットまたはJSPの動作について定義します。
<servlet-name>
サーブレットまたはJSPの名前を定義します。
ここで指定する名前はdeployment descriptor(web.xml)の<servlet-name>タグで定義された名前を使用してください。
<principal-name>
deployment descriptor(web.xml)の<run-as>タグまたは@RunAsのアノテーションに指定したセキュリティロールに対応
するprincipal名(ユーザ名)を指定します。
セキュリティロールに対応するユーザが1つしかない場合は、定義不要です。
session-config (親タグ:sun-web-app)
Webアプリケーション内のセッションを制御する共通の値を定義します。
session-properties (親タグ: session-config)
Webアプリケーション内のセッションを制御する共通の値を<property>タグを使用して定義します。
指定可能なプロパティを以下に示します。
- 230 -
プロパティ名
省略値
enableCooki
es
true
意味
セッションIDをcookieに設定するか指定します。設定した場合、cookie
を使用したセッションの追跡ができます。
・ true : 設定します。
・ false: 設定しません。
sun-application
Interstage application deployment descriptorの開始と終了を定義します。
sun-application-client
Interstage application client deployment descriptorの開始と終了を定義します。
sun-cmp-mapping (親タグ:sun-cmp-mappings)
特定のスキーマにマップするCMP Entity Beanのマッピング情報を定義します。
sun-cmp-mappings
Interstage CMP Mappings deployment descriptorの開始と終了を定義します。
sun-ejb-jar
Interstage EJB application deployment descriptorの開始と終了を定義します。
sun-web-app
Interstage Web application deployment descriptorの開始と終了を定義します。
また、Webアプリケーション内で共通の値を<property>タグを使用して定義できます。
指定可能なプロパティを以下に示します。
プロパティ名
省略値
crossContex
tAllowed
false
意味
他のWebアプリケーションへのディスパッチを許可するかどうかを指
定します。
・ true : 許可します。
・ false: 許可しません。
listings
false
ディレクトリの内容を一覧表示するかどうかを指定します。
・ true : 表示します。 (注)
・ false: 表示しません。
fileEncodin
g
OSデ
フォルト
のエン
コーディ
ング
サーブレットやJSPなどから静的リソースにディスパッチした場合に、
静的リソースの処理に使用するエンコーディングを指定します。
注) listingsにtrueを選択した場合、ディレクトリ内のファイルの増大やリクエストの同時処理数に依存して、メモリ使用
量が増大します。セキュリティの観点からもデフォルト値での運用を推奨します。
table-name (親タグ:entity-mapping)
使用するデータベースのテーブル名を指定します。
target-server (親タグ:client-container)
アクセスするサーバのIIOPリスナーを定義してください。リスナーには、ホスト名またはIPアドレスと、ポート番号を指定
します。
指定可能な属性を以下に示します。
- 231 -
属性名
省略値
意味
name
なし
一意な名前を指定します。
address
なし
クライアントからアクセスするサーバのDNSで解決できるホスト名ま
たはIPアドレスを指定します。
port
なし
クライアントからアクセスするサーバのネーミングサービスのポート番
号を指定します。
unique-id (親タグ:sun-application、enterprise-beans)
システムIDを-9223372036854775808~0および2~9223372036854775807の範囲で指定します。IPCOMと連携した
IIOP通信の負荷分散機能を使用する場合だけ使用してください。
注意
- 本タグを省略した場合、および0を設定した場合はシステムで自動的に採番されます。そのため、負荷分散機能
を使用する場合は0以外の値を設定してください。
- 本タグの設定値が、他アプリケーション (システムが内部処理のために実行するアプリケーションも含みます) の
番号と一致し、アプリケーションのロードに失敗する場合があります。この場合、本タグの設定値を変更し、再度
モジュールを配備してください。
use-thread-pool-id (親タグ:ejb)
リモート呼出しに使用するスレッドのプール名を指定します。
省略または定義されていないスレッドプール名を指定するとデフォルトスレッドプールが使用されます。
スレッドプール機能については、「チューニングガイド」-「スレッドプーリング」を参照してください。
3.3 アプリケーションのデバッグ
以下の方法で、アプリケーションのデバッグを行うことができます。
アプリケーションのデバッグ情報を利用したデバッグ
アプリケーション実行時に、標準出力や標準エラー出力に出力されるデバッグ情報を確認する方法です。
デバッガを利用したデバッグ
Interstage Studioのデバッガを利用して、プログラム中の変数を参照または変更しながらアプリケーションの動作を確
認する方法です。
スレッドダンプを利用したデバッグ
アプリケーションがタイムアウトまたは無応答になった場合に出力されるスレッドダンプをもとにアプリケーションの問題
箇所を確認する方法です。
Javaメソッドトレースを利用したデバッグ
Javaメソッドトレース機能を利用して、各メソッドの引数、復帰値を確認する方法です。
3.3.1 アプリケーションのデバッグ情報を利用したデバッグ
アプリケーションにデバッグ情報を出力する処理を記述しておくことで、ログファイルに出力されたデバッグ情報を参照し
てアプリケーションの問題箇所を特定できます。
標準出力、または標準エラー出力に出力されたアプリケーションのデバッグ情報は、IJServerクラスタのログファイルに出
力されます。
IJServerクラスタのログについては、「4.21 Java EEアプリケーションのログ」を参照してください。
- 232 -
3.3.2 デバッガを利用したデバッグ
Interstage Studioが提供するデバッガを利用してデバッグする方法です。
デバッガを利用すると、開発したアプリケーションを実行させながら、処理の論理的な誤りを検出できます。
通常、プログラムソース上にブレークポイントを設定し、ブレークポイントで停止した状態でプログラム中の変数を参照、ま
たは変更しながらデバッグを行います。
デバッガを利用したデバッグの詳細は、「Interstage Studio プログラマーズガイド」を参照してください。
注意
IJServerクラスタをデバッグする場合は、サーバーインスタンス数が2つ以上のIJServerクラスタを起動することができません。
IJServerクラスタのサーバーインスタンス数を1つに設定してください。
3.3.3 スレッドダンプを利用したデバッグ
スレッドダンプを利用してアプリケーションのデバッグを行う方法です。
スレッドダンプは下記の採取契機に、10秒間隔で2回、IJServerクラスタのJava VMログへ出力されます。2回のスレッドダ
ンプで変化がなかったスレッド上の動作アプリケーションで問題があることが検出できます。
スレッドダンプ採取契機
・ IJServerクラスタの起動時のタイムアウト
起動時実行クラス、サーブレットのinitメソッドなどIJServerクラスタの起動時に動作する処理に問題があるか、処理に
時間がかかっている可能性があります。タイムアウト値は、「プロセス起動待ち時間」で設定します。
・ アプリケーションのタイムアウト
アプリケーションに問題があるか、処理に時間がかかっている可能性があります。タイムアウト値は、「アプリケーショ
ン最大処理時間」で設定します。
・ IJServerクラスタの強制停止時のタイムアウト
IJServerクラスタの強制停止で、「プロセス強制停止時間」を超過した場合、自動的にスレッドダンプが採取されます。
タイムアウト値は、「プロセス強制停止時間」で設定します。
また、Interstage Java EE管理コンソール、またはasadminコマンドを利用して、任意のタイミングでスレッドダンプを参照で
きます。
詳細は、Interstage Java EE管理コンソールヘルプ、および「リファレンスマニュアル(コマンド編)」-asadminコマンドの
generate-jvm-reportサブコマンドを参照してください。
3.3.4 Javaメソッドトレースを利用したデバッグ
Javaメソッドトレース機能を利用してデバッグする方法です。
Java EEアプリケーションのメソッドレベルでのトレースを採取することにより、アプリケーションの処理がどこまで正常に行
われているか、どの処理で停止または異常が起こっているかを診断する上で有用な情報を得ることができます。
メソッドトレース機能については、「Interstage Application Server/Interstage Web Server トラブルシューティング集」の「Java
ツール機能」-「メソッドトレース機能」を参照してください。
メソッドトレース機能を利用するには、JVMオプションとネイティブライブラリパスを指定する必要があります。JVMオプショ
ンとネイティブライブラリパスの指定方法については、「6.8.15 Java VMの定義項目」を参照してください。
また、JVMオプションを設定する際は「リファレンスマニュアル(コマンド編)」-「asadmin」-「エスケープ文字の利用」を参
照し、エスケープが必要な文字に対してエスケープ文字を指定してください。
- 233 -
第4章 Java EEアプリケーションの運用
本章では、Java EEアプリケーションの運用について説明します。
Java EEのアプリケーションの運用は、以下のようなフローで行います。
なお、Webサーバを経由してJava EEのアプリケーションを運用するには、事前にInterstage JMXサービスの起動が必要
になります。
Interstage JMXサービスの起動については、「運用ガイド(基本編)」を参照してください。
4.1 Interstage Java EE管理コンソールを利用した運用
Java EE機能の運用操作を行うには、Interstage Java EE管理コンソールを使用します。Interstage Java EE管理コンソール
は、WebベースのGUIツールです。
Interstage Java EE管理コンソールは、Interstage Java EEの各機能に対する操作ビューを統合し、一元的な操作を実現し
ています。また、Interstage Java EE管理コンソールを利用すると、Java EEの構成定義やチューニング定義を簡単に操作
できます。
利用者は、WebブラウザでInterstage Java EE管理コンソールにアクセスします。Webブラウザからの要求は、Interstage
Java EE DASサービスのHTTPリスナー(admin-listener)に送信されてInterstage Java EE管理コンソールが処理要求を受
け付けます。Interstage Java EE管理コンソールは、各種定義ファイルの更新やInterstage Java EE Node Agentサービスに
対する操作を行って、Java EE機能の各種操作を行います。
以下に各サービスの関係図を示します。
- 234 -
Interstage Java EE管理コンソールの操作に必要なサービス
Interstage Java EE管理コンソールを使用する場合は、サーバ上で以下のサービスを起動しておく必要があります。
・ Interstage Java EE DASサービス
Java EE機能の各種サービスに対する要求を受け付けるサービスです。
上記の各サービスを起動するには、以下のように実施してください。
以下のWindowsサービスを起動します。
・ Interstage Java EE DAS
以下のコマンドを実行してサービスを起動します。
・ ijdasstart
それぞれのサービスの説明については、各機能説明を参照してください。
4.1.1 Interstage Java EE管理コンソールの運用方法について
Interstage Application Serverでは、以下の2つの管理コンソールを提供しています。
Interstage Java EE管理コンソール
Java EE機能に対する運用操作を行います。
インストール時に「Java EE」を選択した場合に利用できます。
Interstage管理コンソール
Java EE以外の機能に対する運用操作を行います。
インストール時に「Interstage管理コンソール」を選択した場合に利用できます。
インストール時に「Java EE」および「Interstage管理コンソール」をインストールすると、両方の管理コンソールを利用できま
す。
- 235 -
この場合、管理コンソールの運用方法は、以下の2つから選択できます。
・ GUI統合運用
・ Java EE単体運用
GUI統合運用
GUI統合運用は、Interstage Java EE管理コンソールおよびInterstage管理コンソールを、一つのWebブラウザ上で操作す
る運用です。
GUI統合運用の利用手順を以下に示します。
利用方法
1. 新規セッションでWebブラウザを起動して、Interstage Java EE管理コンソールにログインして、Java EE機能を操
作します。
2. Interstage管理コンソールを操作する場合は、[コンソール切替]ボタンを押下して、Interstage管理コンソールに
切り替えて操作します。Interstage管理コンソールには、[Interstage Java EE管理コンソール]のツリーノードは表
示されません。
注意
・ 新規セッションでWebブラウザを起動するには、以下の方法でInterstage管理コンソールを起動してください。
- Internet Explorer 8/9の場合
Webブラウザが起動中である場合、Webブラウザの[ファイル]メニューの[新規セッション]をクリックして、新しくWeb
ブラウザを起動します。
Webブラウザを起動していない場合、Webブラウザは、常に新規セッションで起動されます。
- Internet Explorer 6/7の場合
Webブラウザは、常に新規セッションで起動されます。
・ GUI統合運用は、同じユーザアカウントで操作する必要があります。異なるユーザアカウントでは、使用できません。
・ 管理コンソールの認証方式をデフォルト(OS認証)から変更する場合、それぞれの管理コンソールで共通にログイン
可能なユーザーアカウント(ユーザー/パスワード)を作成してから使用してください。ただし、共通にログイン可能な
ユーザアカウントを使用する場合でも、Interstage管理コンソールのログイン画面でログインした場合、GUI統合運用
は使用できません。
・ [コンソール切替]ボタンを押下しない場合は、Java EE単体運用と同等の運用方法になります。
・ [コンソール切替]ボタンは、画面の描画が完了してから押下してください。画面の描画が完了する前に[コンソール切
替]ボタンを押下すると、画面の表示や遷移に異常が発生する可能性があります。
Java EE単体運用
Java EE単体運用は、Interstage Java EE管理コンソールおよびInterstage管理コンソールを、それぞれ別のWebブラウザ
上で操作する運用方法です。
Java EE単体運用の利用手順を以下に示します。
利用方法
1. 新しくWebブラウザを起動して、Interstage管理コンソールにログインして、Interstage機能を操作します。
2. Interstage Java EE管理コンソールを操作する場合は、[Interstage Java EE管理コンソール]のツリーノードをクリッ
クし、起動されたInterstage Java EE管理コンソールのログイン画面からログインして操作します。どちらの管理コ
ンソールにも、[コンソール切替]ボタンは表示されません。
- 236 -
4.2 コマンドを利用した運用
Java EEの運用操作はコマンドでも行うことができます。
Java EEでは、asadminコマンドをはじめ複数のコマンドを提供しており、これらのコマンドにより、Java EEの運用操作や定
義変更を行うことができます。
各コマンドの操作方法については、「リファレンスマニュアル(コマンド編)」を参照してください。
4.3 Interstage Java EE DASサービスの運用
ここでは、Interstage Java EE DASサービスの運用方法について説明します。
4.3.1 運用操作
Interstage Java EE DASサービスの運用操作は、コマンドにより行います(※)。
運用操作方法の詳細は、以下を参照してください。
・ 「リファレンスマニュアル(コマンド編)」-「ijdasstart」
・ 「リファレンスマニュアル(コマンド編)」-「ijdasstat」
・ 「リファレンスマニュアル(コマンド編)」-「ijdasstop」
※
Windowsの場合、Windowsのサービス画面からも運用操作を行うことができます。
メッセージ
起動/停止操作が正常終了した場合、システムログ/イベントログに以下のメッセージが出力されます。
操作
メッセージ
サービス起動
ijdas10000
サービス停止
ijdas10001
メッセージの詳細については、「メッセージ集」-「ijdas10000番台のメッセージ」を参照してください。
4.3.2 設定変更
Interstage Java EE DASサービスの設定変更は、asadminコマンド、または、Interstage Java EE管理コンソールから行います。
運用操作方法の詳細については、以下を参照してください。
・ Interstage Java EE管理コンソールヘルプ
・ 「リファレンスマニュアル(コマンド編)」-「asadmin」の各サブコマンドの説明
4.3.3 環境変数の設定
以下の手順で、Interstage Java EE DASサービスへ環境変数を設定できます。
システム環境変数を編集後、システムを再起動してください。
ijdasstartコマンドを実行するコマンドプロンプトの環境変数を編集後、Interstage Java EE DASサービスを再起動して
ください。
4.3.4 アプリケーションの配備
Interstage Java EE DASサービスへアプリケーションを配備する場合は、Interstage Java EE管理コンソール、またはasadmin
deployサブコマンドを使用します。
- 237 -
その際、ターゲットには、Interstage Java EE DASサービスのインスタンス名の「server」を指定してください。
アプリケーションの配備の詳細については、「4.6 アプリケーションの配備」を参照してください。
4.3.5 リソースの作成
Interstage Java EE DASサービスへリソースを作成するには、Interstage Java EE管理コンソール、またはasadmin コマンド
のリソース関連サブコマンドを使用します。
その際、ターゲットには、Interstage Java EE DASサービスのインスタンス名の「server」を指定してください。
4.3.6 アプリケーションの運用
ここでは、以下について説明します。
・ Webアプリケーションの実行
共通事項
サーバーログ
配備したアプリケーション以外に、コマンド実行などのメッセージが出力されます。
ログの設定については、「2.2.2 Interstage Java EE DASサービスのログファイル」を参照してください。
4.3.6.1 Webアプリケーションの実行
以下にInterstage Java EE DASサービスでWebアプリケーションを実行する際の注意事項を説明します。
注意事項
各種設定の変更について
Interstage Java EE DASサービス上では配備したWebアプリケーションとは別に、Interstage Java EE管理コンソールな
ど管理用のアプリケーションが配備されています。そのため、配備したWebアプリケーションに対する各種設定の変更
は、管理用のアプリケーションに対しても有効になります。
設定の変更によって、管理用のアプリケーションが正常に動作しなくなった場合には、設定を変更前に戻してください。
また、Interstage Java EE DASサービスが起動できない場合には、「トラブルシューティング集」-「運用環境に関する
異常」を参照してください。
HTTPアクセスログ
HTTPアクセスログを有効にした場合、以下2つのファイルが生成されます。
- __asadmin_access_log
- server_access_log
__asadmin_access_logは、管理用のアプリケーションに対するHTTPアクセスログです。配備したWebアプリケーション
については、server_access_logを参照してください。
4.3.7 サービスの自動起動/自動停止
インストール直後の状態では、OSの起動時にInterstage Java EE DASサービスが自動的に起動します。
OSの起動時に自動起動しない運用にしたい場合、以下の手順で自動起動を無効に設定できます。
Interstage Java EE DASサービスの自動起動を解除するには、「Interstage Java EE DAS」サービスの「スタートアップ
の種別」を「手動」に変更します。
再度、自動起動するよう設定したい場合は、上記を「自動」に変更します。
Interstage Java EE DASサービスの自動起動を解除するには、以下の操作を行います。
- 238 -
# rm /etc/rc0.d/K01FJSVijdas
# rm /etc/rc2.d/S98FJSVijdas
再度、自動起動するよう設定したい場合は、削除したRCスクリプトを再登録する必要があります。
以下のように、/etc/rc0.d, /etc/rc2.dにそれぞれ /opt/FJSVisjee/bin/FJSVijdasのシンボリックリンクを作成してください。
# ln -s /opt/FJSVisjee/bin/FJSVijdas /etc/rc0.d/K01FJSVijdas
# ln -s /opt/FJSVisjee/bin/FJSVijdas /etc/rc2.d/S98FJSVijdas
Interstage Java EE DASサービスの自動起動を解除するには、以下の操作を行います。
# /sbin/chkconfig --del FJSVijdas
再度、自動起動するよう設定したい場合は、削除した起動スクリプトを再登録する必要があります。
以下のように、chkconfigコマンドを使用してシステムサービスの設定を行ってください。
# /sbin/chkconfig --add FJSVijdas
注意
本作業はrootユーザで実施してください。
4.4 Interstage Java EE Node Agentサービスの運用
ここでは、Interstage Java EE Node Agentサービスの運用方法について説明します。
4.4.1 運用操作
Interstage Java EE Node Agentサービスの運用操作は、コマンドにより行います(※)。
※
Windowsの場合、Windowsのサービス画面からも運用操作を行うことができます。
コマンドによる運用
Interstage統合コマンドを使用して運用操作を行います。
・ isstart
・ isstat
・ isstop
Interstage統合コマンドの詳細は、「Interstage Application Server/Interstage Web Server リファレンスマニュアル(コマンド
編)」の「Interstage統合コマンド」を参照してください。
以下のコマンドを使用することでInterstage Java EE Node Agentサービス単体の運用操作を行うこともできます。
・ 「ijnastart」
・ 「ijnastat」
・ 「ijnastop」
- 239 -
また、Interstage管理コンソール、Interstage Java EE管理コンソールを使用して運用操作を行うこともできます。Interstage
管理コンソール、Interstage Java EE管理コンソールで実施可能な運用操作は以下のとおりです。
運用操作
起動
停止
起動状態の確認
Interstage管理コンソール
○
○
×
Interstage Java EE管理コ
ンソール
×
×
○
Interstage管理コンソールによる運用
Interstage管理コンソールでは、Interstageの起動/停止と連動してInterstage Java EE Node Agentサービスの起動、停止を
行うことができます。Interstage管理コンソールで[システム]>[状態]タブを選択し、[起動]または[停止]を実行することで、
Interstageの起動/停止を行います。
Interstage Java EE管理コンソールによる運用
Interstage Java EE管理コンソールではInterstage Java EE Node Agentサービスの起動状態を確認することができます。
Interstage Java EE管理コンソールで[ノードエージェント]を選択し、Interstage Java EE Node Agentサービスの起動状態を
確認してください。
なお、Interstage Java EE Node Agentサービスの起動/停止の際は、配下のIJServerクラスタの自動起動/自動停止が行わ
れます。詳細は、「4.5.7 IJServerクラスタの自動起動/自動停止」を参照してください。
注意
Interstage Java EE DASサービスの起動が完了していない状態で本操作を実行した場合、リポジトリの同期化処理は行
われません。この場合、システムログ/イベントログにOM1068が出力されます。リポジトリの同期化処理についての詳細は
「2.1.4 リポジトリの同期化処理」を参照してください。
メッセージ
起動/停止操作が正常終了した場合、システムログ/イベントログに以下のメッセージが出力されます。
操作
メッセージ
サービス起動
ijna10000
サービス停止
ijna10001
メッセージの詳細については、「メッセージ集」-「ijna10000番台のメッセージ」を参照してください。
4.4.2 設定変更
Interstage Java EE Node Agentサービスの設定変更は、asadmin コマンド、または、Interstage Java EE管理コンソールに
より行います。
詳細は、以下を参照してください。
・ Interstage Java EE管理コンソールヘルプ
・ 「6.2 Interstage Java EE Node Agentサービスの定義項目」
・ 「リファレンスマニュアル(コマンド編)」-「定義項目参照/更新」
4.4.3 環境変数の設定
以下の手順で、Interstage Java EE Node Agentサービスへ環境変数を設定できます。
- 240 -
システム環境変数を編集後、システムを再起動してください。
ijnastartコマンドを実行するコマンドプロンプトの環境変数を編集後、Interstage Java EE Node Agentサービスを再起
動してください。
4.4.4 サービスの自動起動/自動停止
Interstage Java EE Node AgentサービスはInterstageサービスの起動/停止と連動します。
OSの起動時にInterstageサービスが自動的に起動するため、Interstage Java EE Node Agentサービスも起動します。
4.5 IJServerクラスタの運用
ここでは、IJServerクラスタの運用方法について説明します。
4.5.1 IJServerクラスタの作成/削除
IJServerクラスタの作成について説明します。
IJServerクラスタの作成/削除は、Interstage Java EE管理コンソール、またはasadminコマンドにより行います。
操作方法の詳細については、以下を参照してください。
・ Interstage Java EE管理コンソールヘルプ
・ 「リファレンスマニュアル(コマンド編)」-「create-clusterサブコマンド」
・ 「リファレンスマニュアル(コマンド編)」-「delete-clusterサブコマンド」
メッセージ
IJServerクラスタの作成/削除操作が正常終了した場合、システムログ/イベントログに以下のメッセージが出力されます。
操作
メッセージ
IJServerクラスタ作成
OM2005
IJServerクラスタ削除
OM2006
メッセージの詳細については、「メッセージ集」-「OM2000番台のメッセージ」を参照してください。
4.5.2 設定の管理
IJServerクラスタを新規作成する際、IJServerクラスタが参照する設定を指定することができます。
IJServerクラスタ作成時に設定の指定がない場合は、デフォルト設定(default-config)からコピーされた「IJServerクラスタ
名-config」という名前の設定が自動で割り当てられます。
- 241 -
設定とIJServerクラスタは1:nの関係となり、以下のように複数のIJServerクラスタで1つの設定を共有することもできます。
なお、Interstage Java EE DASサービスにもserver-configという名前で設定が割り当てられています。この設定はIJServer
クラスタには使用できません。
注意
・ default-config/server-configは、削除できません。
・ IJServerクラスタ作成時、設定の指定がない場合、かつ、自動生成される予定の設定がすでに存在する場合は、
IJServerクラスタを作成できません。
作成済みの設定を指定するか、存在しない設定を指定して、IJServerクラスタを作成してください。
- 242 -
IJServerクラスタ作成の詳細については、以下を参照してください。
・ Interstage Java EE管理コンソールヘルプ
・ 「リファレンスマニュアル(コマンド編)」-「create-clusterサブコマンド」
・ 「リファレンスマニュアル(コマンド編)」-「copy-configサブコマンド」
・ 「リファレンスマニュアル(コマンド編)」-「delete-configサブコマンド」
・ 「リファレンスマニュアル(コマンド編)」-「list-configsサブコマンド」
4.5.3 サーバーインスタンスの追加/削除
IJServerクラスタでアプリケーションを運用するためには、IJServerクラスタに対してサーバーインスタンスを追加する必要
があります。
ここでは、IJServerクラスタにサーバーインスタンスを追加する方法について説明します。
IJServerクラスタ作成と同時にサーバーインスタンス追加する
IJServerクラスタ作成時にサーバーインスタンス名を指定すると、IJServerクラスタと同時にサーバーインスタンスを作成す
ることができます。詳細は、「リファレンスマニュアル(コマンド編)」-「create-clusterサブコマンド」を参照してください。
IJServerクラスタ作成後にサーバーインスタンスを追加する
定義済みのIJServerクラスタに対して、サーバーインスタンスを追加します。
この操作は、運用中のIJServerクラスタに対しても行うことができます。詳細は、「リファレンスマニュアル(コマンド編)」-
「create-instanceサブコマンド」を参照してください。
ポート番号の自動採番
サーバーインスタンスを追加した際、設定で定義されているポート番号が他のインスタンスにより利用されている場合は、
ポート番号が自動的に採番され(※)、サーバーインスタンスの定義にシステムプロパティが追加されます。システムプロ
パティ名、採番論理については、「6.8.1 定義時に利用できるプロパティ」を参照してください。
操作方法の詳細については、以下を参照してください。
- 243 -
・ Interstage Java EE管理コンソールヘルプ
・ 「リファレンスマニュアル(コマンド編)」-「create-clusterサブコマンド」
・ 「リファレンスマニュアル(コマンド編)」-「create-instanceサブコマンド」
※ポート番号はHTTPサービスのリスナーポートの設定が"${HTTP_LISTENER_PORT}"の場合に自動採番されます。
複数インスタンスを作成し、インスタンス毎にポート番号を変更したい場合は、「6.8.3 HTTPサービスの定義項目」の「リス
ナーポート」を参照してください。
サーバーインスタンスの削除
IJServerクラスタのサーバーインスタンスを個別に削除することができます。
IJServerクラスタが運用中であってもこの操作を実行できますが、削除対象のサーバーインスタンスについては事前に停
止操作を行う必要があります。
なお、配下のすべてのサーバーインスタンスを削除した場合、IJServerクラスタを起動することはできません。
操作方法の詳細については、以下を参照してください。
・ Interstage Java EE管理コンソールヘルプ
・ 「リファレンスマニュアル(コマンド編)」-「delete-instanceサブコマンド」
メッセージ
サーバーインスタンスの作成/削除操作が正常終了した場合、システムログ/イベントログに以下のメッセージが出力され
ます。
操作
メッセージ
サーバーインスタンス作成
OM2017
サーバーインスタンス削除
OM2018
メッセージの詳細については、「メッセージ集」-「OM2000番台のメッセージ」を参照してください。
4.5.4 IJServerクラスタの起動/停止/運用状態表示
IJServerクラスタの起動/停止/運用状態表示は、Interstage Java EE管理コンソール、またはasadminコマンドにより行います。
操作方法の詳細については、以下を参照してください。
・ Interstage Java EE管理コンソールヘルプ
・ 「リファレンスマニュアル(コマンド編)」-「start-clusterサブコマンド」
・ 「リファレンスマニュアル(コマンド編)」-「stop-clusterサブコマンド」
・ 「リファレンスマニュアル(コマンド編)」-「list-clustersサブコマンド」
通常停止と強制停止
停止方法には通常停止と強制停止の2種類があり、強制停止の場合は以下の動作となります。
・ アプリケーションの終了待ちは行われません。クライアントから呼び出し中のアプリケーションについても、処理終了
を待たずに停止されます。
・ ライフサイクルモジュールの停止処理が行われません。
・ 各リソースの接続プールでプーリングされている接続の解放処理が行われません。
強制停止では上記のように各種回収処理が行われないため、回収されずに残存した資源を必要に応じて個別に回収し
てください。サーバーインスタンスが何かしらの理由により異常終了した場合も同様です。
JDBCリソースの接続に対して解放処理が行われなかった場合の影響については、データベースもしくはJDBCドライバ
のマニュアルを参照してください。Java DBを使用している場合、サーバーインスタンスが停止したタイミングでシステム資
- 244 -
源は回収されるため問題ありません。
コネクタリソースの接続に対して解放処理が行われなかった場合の影響については、リソースアダプタ提供元のドキュメ
ントを参照してください。
メッセージ
IJServerクラスタの起動/停止操作が正常終了した場合、システムログ/イベントログに以下のメッセージが出力されます。
操作
メッセージ
IJServerクラスタ起動
OM1015
IJServerクラスタ通常停止
OM1016
IJServerクラスタ強制停止
OM1017
メッセージの詳細については、「メッセージ集」-「OM1000番台のメッセージ」を参照してください。
4.5.5 サーバーインスタンスの起動/停止/運用状態表示
サーバーインスタンスの起動/停止/運用状態表示は、Interstage Java EE管理コンソール、またはasadminコマンドにより行
います。
操作方法の詳細については、以下を参照してください。
・ Interstage Java EE管理コンソールヘルプ
・ 「リファレンスマニュアル(コマンド編)」-「start-instanceサブコマンド」
・ 「リファレンスマニュアル(コマンド編)」-「stop-instanceサブコマンド」
・ 「リファレンスマニュアル(コマンド編)」-「list-instancesサブコマンド」
通常停止と強制停止
停止方法には通常停止と強制停止の2種類があり、強制停止の場合は以下の動作となります。
・ アプリケーションの終了待ちは行われません。クライアントから呼び出し中のアプリケーションについても、処理終了
を待たずに停止されます。
・ ライフサイクルモジュールの停止処理が行われません。
・ 各リソースの接続プールでプーリングされている接続の解放処理が行われません。
強制停止では上記のように各種回収処理が行われないため、回収されずに残存した資源を必要に応じて個別に回収し
てください。サーバーインスタンスが何かしらの理由により異常終了した場合も同様です。
JDBCリソースの接続に対して解放処理が行われなかった場合の影響については、データベースもしくはJDBCドライバ
のマニュアルを参照してください。Java DBを使用している場合、サーバーインスタンスが停止したタイミングでシステム資
源は回収されるため問題ありません。
コネクタリソースの接続に対して解放処理が行われなかった場合の影響については、リソースアダプタ提供元のドキュメ
ントを参照してください。
メッセージ
サーバーインスタンスの起動/停止操作が正常終了した場合、システムログ/イベントログに以下のメッセージが出力され
ます。
操作
メッセージ
サーバーインスタンス起動
OM1044
サーバーインスタンス通常停止
OM1045
サーバーインスタンス強制停止
OM1046
- 245 -
メッセージの詳細については、「メッセージ集」-「OM1000番台のメッセージ」を参照してください。
4.5.6 縮退状態のIJServerクラスタの復旧
縮退状態のIJServerクラスタに対して、IJServerクラスタもしくはサーバーインスタンスの起動操作を行うことで、停止してい
るサーバーインスタンスを起動し、IJServerクラスタを運用状態へ復旧することができます。
サーバーインスタンスの復旧は、Interstage Java EE管理コンソール、またはasadminコマンドにより行います。
操作方法の詳細については、以下を参照してください。
・ Interstage Java EE管理コンソールヘルプ
・ 「リファレンスマニュアル(コマンド編)」-「start-clusterサブコマンド」
・ 「リファレンスマニュアル(コマンド編)」-「start-instanceサブコマンド」
メッセージ
IJServerクラスタの復旧操作が正常終了した場合、システムログ/イベントログに以下のメッセージが出力されます。
操作
メッセージ
IJServerクラスタ起動による復旧
OM1015
サーバーインスタンス起動による復旧
OM1044
メッセージの詳細については、「メッセージ集」-「OM1000番台のメッセージ」を参照してください。
4.5.7 IJServerクラスタの自動起動/自動停止
IJServerクラスタの自動起動
Interstage Java EE Node Agentサービスの起動時に、IJServerクラスタを自動起動させることができます。本機能とInterstage
Java EE Node Agentサービスの自動起動どちらも有効に設定しておくことで、OS起動時にIJServerクラスタを自動起動さ
せることができます。
IJServerクラスタを自動起動するかどうかは、Interstage Java EE Node Agentサービス配下で定義します。
詳細は、「6.2 Interstage Java EE Node Agentサービスの定義項目」を参照してください。
注意
IJServerクラスタの自動起動を有効に設定している場合、IJServerクラスタが起動に失敗しても、Interstage Java EE Node
Agentサービスの起動処理は正常終了します。このため、IJServerクラスタの状態は、Interstage Java EE Node Agentサー
ビスと別に確認する必要があります。
IJServerクラスタの状態の確認方法は、「2.4 IJServerクラスタ」を参照してください。
IJServerクラスタの自動停止
Interstage Java EE Node Agentサービスの停止を行うと、停止状態ではないすべてのIJServerクラスタは強制停止されます。
Interstage Java EE Node Agentサービスを停止する際は、事前にIJServerクラスタの起動状態を確認してください。
4.5.8 運用操作の同時実行
同一のIJServerクラスタに対して、複数の運用操作を同時に実行した場合、一方の操作がエラー復帰する場合があります。
操作ごとの競合操作の結果について、以下に説明します(操作1→操作2の順で実行)。
異なるクラスタ名に対する競合操作
- 246 -
操作2
操作1
クラスタ
起動
クラスタ
通常停止
クラスタ
強制停止
インスタンス
起動
インスタンス
通常停止
インスタンス
強制停止
クラスタ
起動
1:正常起動
2:正常起動
1:正常起動
2:正常停止
1:正常起動
2:正常停止
1:正常起動
2:正常起動
1:正常起動
2:正常停止
1:正常起動
2:正常停止
クラスタ
通常停止
1:正常停止
2:正常起動
1:正常停止
2:正常停止
1:正常停止
2:正常停止
1:正常停止
2:正常起動
1:正常停止
2:正常停止
1:正常停止
2:正常停止
クラスタ
強制停止
1:正常停止
2:正常起動
1:正常停止
2:正常停止
1:正常停止
2:正常停止
1:正常停止
2:正常起動
1:正常停止
2:正常停止
1:正常停止
2:正常停止
インスタンス
起動
1:正常起動
2:正常起動
1:正常起動
2:正常停止
1:正常起動
2:正常停止
インスタンス
通常停止
1:正常停止
2:正常起動
1:正常停止
2:正常停止
1:正常停止
2:正常停止
インスタンス
強制停止
1:正常停止
2:正常起動
1:正常停止
2:正常停止
1:正常停止
2:正常停止
-
異なるクラスタに属する異なるインスタンス名に対する競合操作
操作2
インスタンス
起動
操作1
インスタンス
通常停止
インスタンス
強制停止
インスタンス
起動
1:正常起動
2:正常起動
1:正常起動
2:正常停止
1:正常起動
2:正常停止
インスタンス
通常停止
1:正常停止
2:正常起動
1:正常停止
2:正常停止
1:正常停止
2:正常停止
インスタンス
強制停止
1:正常停止
2:正常起動
1:正常停止
2:正常停止
1:正常停止
2:正常停止
同一クラスタ名に対する競合操作
操作2
操作1
クラスタ
起動
クラスタ
通常停止
クラスタ
強制停止
インスタンス
起動
インスタンス
通常停止
インスタンス
強制停止
クラスタ
起動
1:正常起動
2:エラー
1:正常起動
2:エラー
1:エラー
2:正常停止
1:正常起動
2:エラー
1:正常起動
2:エラー
1:正常起動
2:エラー
クラスタ
通常停止
1:正常停止
2:エラー
1:正常停止
2:エラー
1:エラー
2:正常停止
1:正常停止
2:エラー
1:正常停止
2:エラー
1:正常停止
2:エラー
クラスタ
強制停止
1:正常停止
2:エラー
1:正常停止
2:エラー
1:正常停止
2:エラー
1:正常停止
2:エラー
1:正常停止
2:エラー
1:正常停止
2:エラー
インスタンス
起動
1:正常起動
2:エラー
1:正常起動
2:エラー
1:エラー
2:正常停止
インスタンス
通常停止
1:正常停止
2:エラー
1:正常停止
2:エラー
1:エラー
2:正常停止
インスタンス
強制停止
1:正常停止
2:エラー
1:正常停止
2:エラー
1:正常停止
2:エラー
同一クラスタに属する同一インスタンス名に対する競合操作
- 247 -
-
操作2
インスタンス
起動
操作1
インスタンス
通常停止
インスタンス
強制停止
インスタンス
起動
1:正常起動
2:エラー
1:正常起動
2:エラー
1:エラー
2:正常停止
インスタンス
通常停止
1:正常停止
2:エラー
1:正常停止
2:エラー
1:エラー
2:正常停止
インスタンス
強制停止
1:正常停止
2:エラー
1:正常停止
2:エラー
1:正常停止
2:エラー
同一クラスタに属する異なるインスタンス名に対する競合操作
操作2
インスタンス
起動
操作1
インスタンス
通常停止
インスタンス
強制停止
インスタンス
起動
1:正常起動
2:エラー
1:正常起動
2:正常停止
1:正常起動
2:正常停止
インスタンス
通常停止
1:正常停止
2:正常起動
1:正常停止
2:エラー
1:正常停止
2:正常停止
インスタンス
強制停止
1:正常停止
2:正常起動
1:正常停止
2:正常停止
1:正常停止
2:エラー
4.6 アプリケーションの配備
ここでは、以下について説明します。
・ Java EEの配備概要
・ アプリケーションの配備手順
- アプリケーションの検証
- ディレクトリ展開済みアプリケーションの配備
・ アプリケーションの配備解除手順
・ 配備済みアプリケーションの管理
- 配備済みアプリケーションの一覧
- アプリケーションの環境設定
- Deployment Descriptorの参照
- アプリケーションの展開
- アプリケーションの展開解除
- 展開中アプリケーション一覧
- アプリケーションの活性変更
・ 配備済みアプリケーションの更新
- アプリケーションの再配備
- アプリケーションのオートリロード
- 248 -
4.6.1 Java EEの配備概要
Java EEへ配備されたアプリケーションは中央リポジトリへ格納され、配備時、または、application-refで関連付けられた
ターゲットへ展開されます。ターゲットに指定されたIJServerクラスタ、サーバーインスタンスコンテナでは、アプリケーショ
ンが実行されます。
ターゲットには、Interstage Java EE DASサービス、IJServerクラスタ、ドメインを選択することができ、1つのアプリケーショ
ンに対して、ターゲットを複数指定することも可能です。
注意
・ アプリケーションをドメインに配備した場合、アプリケーションは有効になりません。ターゲット上への展開によりアプリ
ケーションは有効になります。
・ Webサーバーと連携する場合、同じWebサーバーと連携している複数のIJServerクラスタには、同じコンテキストルー
トのWebアプリケーションは配備できません。
・ 配備するアプリケーションのルートディレクトリに、deployment descriptorに定義しないJARファイルを配置すると、
Applicationクラスローダでロードされる(この動作は未サポートです。)ため配置しないでください。JARファイルの配置
については「2.22.1 クラスローダの構成」を参照してください。
・ 配備・配備解除操作は複数同時に実行することができません。配備・配備解除操作が復帰しないうちに新たな配備・
配備解除操作を投入した場合、後から投入した操作が、先に動作していた操作の完了を待機します。
・ 配備処理時、ドメインへの配備で異常が発生した場合はInterstage Java EE DASサービスのserver.logにエラーが出
力されますが、その後のターゲットへの展開時(クラスのロード時)に異常が発生した場合は、ターゲット先IJServerクラ
スタまたはInterstage Java EE DASサービスのserver.logにエラーが出力されます。このためGUIまたはコマンドで、
ターゲットにIJServerクラスタまたはInterstage Java EE DASサービスを指定して配備(または展開)を行った場合は、
GUIまたはコマンドで出力されないエラーが起こる可能性があるため、配備完了後に指定したターゲットのserver.log
でエラーが出力されていないかの確認を行ってください。
4.6.2 アプリケーションの配備手順
Java EEにアプリケーションを実行するためには、以下の手順で操作を行ってください。
1. 単一のターゲットへアプリケーションを配備
アプリケーションを配備します。配備アプリケーションに問題がある場合、メッセージを出力して処理を中断します。
例
asadmin deploy --name Sample --target IJServer001 sample.ear
- 249 -
また、ターゲットにdomainを指定して配備することで、展開先ターゲットが無い状態での配備も可能です。
例
asadmin deploy --name Sample --target domain sample.ear
2. 複数ターゲットへアプリケーションを展開
複数ターゲットへアプリケーションを展開したい場合、1の手順に加えて、新たなターゲットに対してapplication-ref
の作成を行います。
例
asadmin create-application-ref --target IJServer002 Sample
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を
参照してください。
- Interstage Java EE管理コンソール
- asadminコマンドの以下のサブコマンド
- deploy
- create-application-ref
4.6.3 アプリケーションの検証
配備時に配備モジュールの検証を有効にすることで、アプリケーションの移植性を検証できます。
開発するアプリケーションの移植性を高めたい場合に本機能を有効にします。デフォルトは無効です。
移植性の検証のために以下のチェックを行ないます。
問題を検出した場合、配備に失敗します。
注意
Interstage Java EE環境で動作可能なアプリケーションにおいても、規約上で推奨されていないものは検証エラーで配備
に失敗する場合があります。
チェック内容
- Java EE規約準拠チェック
- deployment descriptorのXMLファイル妥当性チェック
- JSPプリコンパイルによるコンパイルエラーチェック
- アプリケーションのファイル構成のチェック
- アプリケーションサーバ依存機能の利用チェック
検証結果は以下に出力されます。
ファイル名
アプリケーション名+タイムスタンプ.txt、または、アプリケーション名+タイムスタンプ.xml
- 250 -
出力先
[Java EE共通ディレクトリ]\domains\interstage\logs\verifier-results
[Java EE共通ディレクトリ]/domains/interstage/logs/verifier-results
注意
検証機能を繰り返し使用した場合、検証結果出力先ディレクトリにファイルが多数生成され、ディスクを圧迫する可能性
があります。
そのため、検証結果のうち問題点の確認、および対処が完了したものについては、必要に応じて手動で削除してください。
4.6.4 ディレクトリ展開済みアプリケーションの配備
ディレクトリに展開されている配備モジュールを配備します。
Interstage Java EE管理コンソール、またはasadminコマンドを使用します。詳細は、Interstage Java EE管理コンソールの
ヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参照してください。
・ Interstage Java EE管理コンソール
・ asadminコマンドの以下のサブコマンド
- deploydir
注意
・ ディレクトリ展開済みアプリケーションの配備は、対象ドメインが同じマシンにある時のみ可能です。
・ ディレクトリ展開済みアプリケーションの配備機能は、下記に記述するアプリケーションの種類でのみ使用可能です。
- エンタープライズアプリケーション
- Webアプリケーション
- EJBアプリケーション
- コネクタモジュール
※ライフサイクルモジュール、アプリケーションクライアントモジュールではディレクトリ配備の機能は使用できません。
・ またエンタープライズアプリケーションの構成には以下の注意点があります。
エンタープライズアプリケーションに含めるアプリケーションはそれぞれディレクトリ展開し、それぞれのアプリケーショ
ンの先頭のフォルダ名が下記となるようにしてください。
- J2EEアプリケーションクライアント(アプリケーション名.jar) ⇒ アプリケーション名_jar
- Webアプリケーション(アプリケーション名.war) ⇒ アプリケーション名_war
- EJBアプリケーション(アプリケーション名.jar) ⇒ アプリケーション名_jar
- リソースアダプタ(アプリケーション名.rar) ⇒ アプリケーション名_rar
例
sample(エンタープライズアプリケーション名)
|
+-sample_war(Webアプリケーション)
||
- 251 -
| +-ディレクトリ展開したもの
+-sample_jar(EJBアプリケーション)
||
| +-ディレクトリ展開したもの
+-sample.jar(jarファイル)
4.6.5 アプリケーションの配備解除手順
アプリケーションを配備解除するためには、以下の手順で操作を行ってください。
1. 複数ターゲットへのアプリケーションを配備解除
複数ターゲットへアプリケーションを展開している場合、まずターゲットを一つだけ残し、展開を解除してください。
その後、2.の操作を行ってください。
例
asadmin delete-application-ref --target IJServer002 Sample
2. 単一ターゲットからアプリケーションを配備解除
一つだけターゲットが存在する状態で、アプリケーションを配備解除します。
例
asadmin undeploy --target IJServer001 Sample
また、展開先ターゲットの無いアプリケーションはターゲットにdomainを指定して配備解除してください
例
asadmin undeploy --target domain Sample
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を
参照してください。
- Interstage Java EE管理コンソール
- asadminコマンドの以下のサブコマンド
- delete-application-ref
- undeploy
4.6.6 配備済みアプリケーションの一覧
Java EEに配備済みのJava EEアプリケーションを表示します。
Interstage Java EE管理コンソール、またはasadminコマンドを使用します。詳細は、Interstage Java EE管理コンソールの
ヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参照してください。
・ Interstage Java EE管理コンソール
- 252 -
・ asadminコマンドの以下のサブコマンド
- show-component-status
- list-components
- list-sub-components
4.6.7 配備済みアプリケーションの環境設定
Interstage Java EE管理コンソール、およびasadminコマンドのset/getサブコマンドを使用して、配備済みJava EEアプリケー
ションの環境設定や参照ができます。
詳細は、Interstage Java EE管理コンソールのヘルプ、または「6.5 アプリケーションに関する定義項目」を参照してください。
4.6.8 配備済みアプリケーションのDeployment Descriptor参照
配備済みアプリケーションに内包されたdeployment descriptorの一覧が表示できます。
この一覧でdeployment descriptorを選択して、内容を確認することが可能です。
参照可能なdeployment descriptorは、下記のとおりです。
・ application.xml
・ web.xml
・ ejb-jar.xml
・ ra.xml
・ application-client.xml
・ sun-application.xml
・ sun-web.xml
・ sun-ejb-jar.xml
・ sun-application-client.xml
詳細は、Interstage Java EE管理コンソールのヘルプを参照してください。
・ Interstage Java EE管理コンソール
- deployment descriptor一覧
- deployment descriptor参照
なお、deployment descriptorを保存した際のエンコードが、Interstage Java EE DASサービス起動時に下記で設定されて
いたロケールに対応していない場合、文字化けが発生する可能性があります。
[コントロールパネル]の[地域(または地域のオプション)]
注意
Windows Server(R) 2003の場合の説明です。使用するOSにより操作方法は異なる場合があります。
環境変数"LANG"
文字化けが発生する場合は、下記に展開されている配備済みアプリケーションのdeployment descriptorを、テキストエディ
タなどから参照してください。
- 253 -
・ earの場合
[Java EE共通ディレクトリ]\domains\interstage\applications\j2ee-apps\[アプリケーション名]
・ war、jar、rar単体の場合
[Java EE共通ディレクトリ]\domains\interstage\applications\j2ee-modules\[アプリケーション名]
・ earの場合
[Java EE共通ディレクトリ]/domains/interstage/applications/j2ee-apps/[アプリケーション名]
・ war、jar、rar単体の場合
[Java EE共通ディレクトリ]/domains/interstage/applications/j2ee-modules/[アプリケーション名]
Interstage全体のディレクトリ構成に関しては「2.4.2 IJServerクラスタのファイル構成」を参照してください。
4.6.9 アプリケーションの展開
配備済みアプリケーションをターゲットに展開します。Interstage Java EE管理コンソール、またはasadminコマンドのcreateapplication-refサブコマンドを使用します。
例) asadmin create-application-ref --target IJServer001 Sample
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参照し
てください。
・ Interstage Java EE管理コンソール
・ asadminコマンドの以下のサブコマンド
- create-application-ref
4.6.10 アプリケーションの展開解除
アプリケーションの展開先からターゲットを解除します。Interstage Java EE管理コンソール、またはasadminコマンドのdeleteapplication-refサブコマンドを使用します。
例
asadmin delete-application-ref --target IJServer002 Sample
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参照し
てください。
・ Interstage Java EE管理コンソール
・ asadminコマンドの以下のサブコマンド
- delete-application-ref
4.6.11 展開中アプリケーションの一覧
ターゲットに展開しているのアプリケーションの一覧を表示します。Interstage Java EE管理コンソール、またはasadminコ
マンドのcreate-application-refサブコマンドを使用します。
例
asadmin list-application-refs IJServer001
- 254 -
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参照し
てください。
・ Interstage Java EE管理コンソール
・ asadminコマンドの以下のサブコマンド
- list-application-refs
4.6.12 アプリケーションの活性変更
ターゲットへ展開中のアプリケーションの活性状態を無効に設定することで、ターゲット上のアプリケーションを非活性状
態とし、リクエストの受付を停止できます。
・ 有効
アプリケーションに対するリクエストを受付けます。
・ 無効
アプリケーションに対するリクエストの受付けを停止します。アプリケーションの設定などはそのまま保持します。
ターゲットへ展開中のアプリケーションの活性状態は、以下二つの状態で決定されます。
・ 配備されたアプリケーションの活性状態
getサブコマンドで、アプリケーションの定義項目である"状態"を指定することで確認できます。
例)asadmin get applications.[アプリケーションの種類].[アプリケーション名].enabled
・ アプリケーションとターゲットの関連付けの状態
getサブコマンドで、ターゲットの定義項目である"アプリケーション参照の可否"を指定することで確認できます。
例)asadmin get [ターゲット].application-ref.[アプリケーション名].enabled
上記二つの状態とアプリケーションの活性状態の関係は、以下の表を参照してください。
配備されたアプリケーションの活性状 アプリケーションとターゲットの関連
態
付けの状態
アプリケーションの活性状態
true
true
有効
true
false
無効
false
true
無効
false
false
無効
注意
・ 配備されたアプリケーションの活性状態を"false"にすることで、全ての展開先ターゲットのアプリケーションの活性状
態を無効にすることができます。
・ 配備されたアプリケーションの活性状態は、サービスの再起動前後では状態を引継ぎますが、アプリケーションの再
配備後は必ず"true"となります。
・ アプリケーションとターゲットの関連付けの状態は、サービスの再起動やアプリケーションの再配備の前後で状態を
引き継ぎます。
アプリケーションの活性状態の変更
アプリケーションの活性状態は、Interstage Java EE管理コンソール、またはasadminコマンドのenable/disableサブコマンド
で変更可能です。コマンドで実行の場合は、ターゲットにIJServerクラスタを指定してください。
- 255 -
例
asadmin enable --target IJServer001 Sample
複数IJServerクラスタに展開されたアプリケーションの活性状態の変更
複数IJServerクラスタに展開されたアプリケーションの活性状態を変更するには、ターゲットにdomainを指定して実行して
ください。
例
asadmin enable --target domain Sample
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参照し
てください。
・ Interstage Java EE管理コンソール
・ asadminコマンドの以下のサブコマンド
- enable
- disable
4.6.13 アプリケーションの再配備
配備済みアプリケーションを配備モジュール単位に更新します。
Interstage Java EE管理コンソール、およびasadminコマンドのdeployサブコマンドを使用して、配備済みアプリケーション
の下記設定を引き継いだままアプリケーションを更新します。
・ Interstage Java EE管理コンソール
- context-root(Web Applicationだけ)
- アプリケーションの展開先ターゲット
- 展開先アプリケーションの関連付けの状態
- アプリケーションから参照するライブラリ(JARファイル)
・ deployサブコマンド
- アプリケーションの展開先ターゲット
- 展開先アプリケーションの関連付けの状態
- アプリケーションから参照するライブラリ(JARファイル)
※deployサブコマンドから再配備を実行した場合、context-rootは引き継がれません。
またアプリケーションの再配備を行うと、配備されたアプリケーションの活性状態は必ず"true"となります。
例
asadmin deploy --force=true --target IJServer001 --name Sample sample.ear
- 256 -
複数ターゲットに展開しているアプリケーションを、deployサブコマンドで再配備する場合はターゲットにdomainを指定し
てください。
※domain以外を指定するとエラーとなります。
例
asadmin deploy --force=true --target domain --name Sample sample.ear
また、Interstage Java EE管理コンソールからの再配備時は、配備時に指定可能な設定のうち、下記の設定だけ指定可能
です。
・ ベリファイアを実行
・ JSPをプリコンパイル
Interstage Java EE管理コンソールからの再配備で上記以外の設定を変更する場合は、配備解除してから再度配備して
ください。
IJServerクラスタを停止することなく、モジュールの再配備を行うことが可能ですが、業務運用中にアプリケーション入れ
替えが行われると、クラスファイルの不整合などが発生する可能性があります。
IJServerクラスタを停止するか、夜間など業務アプリケーションに対するリクエストがない時に実施してください。
なお、配備モジュールに問題がある場合は、メッセージが出力されて、処理が中断されます。
Interstage Java EE管理コンソール、またはasadminコマンドを使用します。
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参照し
てください。
・ Interstage Java EE管理コンソール
- 再配備
・ asadminコマンドの以下のサブコマンド
- deploy
注意
注意事項については、「使用上の注意」-「配備時の注意事項」を参照してください。
4.6.14 アプリケーションのオートリロード
Java EEに配備済みアプリケーションを対象に、中央リポジトリ内のアプリケーションをリロードします。
Java EEに配備済みのアプリケーションは、ディレクトリに展開された形式で中央リポジトリに格納されています。中央リポ
ジトリ内のクラスファイルの更新と組み合わせることで、クラスファイル単位のアプリケーション更新を行うことができます。
アプリケーションのオートリロードを行うためには、次に示す手順によりオートリロードを行います。
1. Java EEのオートリロード機能を有効にします。
オートリロード機能は初期状態では無効化されています。
Interstage Java EE管理コンソール あるは asadminコマンドを使用しオートリロード機能を有効化します。
- Interstage Java EE管理コンソール
- スタンドアロンインスタンス>server(Admin Server)の詳細
- 257 -
- asadminコマンド
setサブコマンドを利用して、以下の定義項目を有効(true)に変更します。
server.admin-service.das-config.dynamic-reload-enabled
例)asadmin set server.admin-service.das-config.dynamic-reload-enabled=true
※Java EEのオートリロード機能を有効後にInterstage Java EE DASサービスの再起動が必要となります。
2. 配備済みアプリケーションのクラスファイルを更新します。
Java EEに配備済みアプリケーションは、以下のディレクトリに配備モジュールを展開した形式で格納されています。
[ファイル格納先]
[Java EE共通ディレクトリ]\domains\interstage\applications\[アプリケーションタイプ]\[アプリケーション名]
[Java EE共通ディレクトリ]/domains/interstage/applications/[アプリケーションタイプ]/[アプリケーション名]
3. オートリロードの監視リストへの登録
アプリケーションのディレクトリ直下に”.reload”ファイルを作成してください。オートリロード処理の監視対象にアプ
リケーションに登録されます。
例)
echo.> [Java EE共通ディレクトリ]\domains\interstage\applications\j2ee-apps\[アプリケーション名]\.reload
touch [Java EE共通ディレクトリ]/domains/interstage/applications/j2ee-apps/[アプリケーション名]/.reload
※“.reload”ファイルの内容は問いません。また、アプリケーションを継続して更新する場合、“.reload”ファイルのタ
イムスタンプを更新してください。
アプリケーションのオートリロードに関する定義項目については、「リファレンスマニュアル(コマンド編)」-「Java EE編」-
「Java EE運用コマンド」-「asadminコマンドで操作できる定義項目」-「configsの定義項目」-「configs.config.adminserviceの定義項目」を参照してください。
注意
・ オートリロード機能はInterstage Java EE DASサービスのみ(ターゲットにserverだけが指定されている場合のみ)で使
用できる機能です。
・ またオートリロード機能は以下のアプリ種別のみで使用可能です。
- エンタープライズアプリケーション
- Webアプリケーション
- EJBアプリケーション
※コネクタモジュール、ライフサイクルモジュール、アプリケーションクライアントモジュールでは使用できません。
・ オートリロードにより更新されたアプリケーションの状態は必ず“有効”になります。
・ 注意事項については、「使用上の注意」-「注意事項」-「Java EEの注意事項」-「配備時の注意事項」-「オートリ
ロード機能使用時の注意事項」も参照してください。
- 258 -
4.7 Webコンテナの運用準備
Webコンテナの運用準備について説明します。
4.7.1 Webアプリケーションへアクセスする場合の運用
ここでは、Webアプリケーションへアクセスする場合の運用形態や、その変更方法について説明します。
運用形態を検討する場合、以下やその組み合わせについて考慮する必要があります。
通信経路の違いによる運用形態
- Webサーバを経由するか、どうか。
多重度の違いによる運用形態
- 多重プロセスでの運用を行うか、どうか。
- 複数台のマシンでの運用を行うか、どうか。
4.7.1.1 通信経路の違いによる運用形態
通信経路の違いによる運用形態について説明します。
WebブラウザなどのクライアントからIJServerクラスタ/Interstage Java EE DASサービス上に配備されたWebアプリケーショ
ンへアクセスする際に、その通信経路の違いによって以下の運用形態があります。
Webサーバを経由しない運用
Webブラウザなどのクライアントから直接Webコンテナへアクセスしたり、クライアントから負荷分散装置を経由してWeb
コンテナにアクセスする運用形態です。
標準インストールで提供される運用形態です。
Webサーバを経由する運用
WebブラウザなどのクライアントからWebサーバを経由してWebコンテナへアクセスする運用形態です。
クライアントとWebサーバの間に負荷分散装置を配置する場合もこの運用形態になります。
Webサーバを経由する運用については以下も参照してください。
「4.8 Webサーバを経由する場合の運用準備」
- 259 -
ポイント
Webサーバを経由する運用とWebサーバを経由しない運用では使用できる機能に差があります。
以下を参照し、必要な機能が使用できる運用形態を選択してください。
「付録C Interstage HTTP Serverとの機能比較」
Java EEに該当する機能がない場合は、Webサーバを経由する運用形態にして、Interstage HTTP Serverの機能を使用
してください。
注意
・ Webサーバを経由する/しないの運用形態にあわせて、「6.8.3 HTTPサービスの定義項目」の「Webコンテナへアクセ
スする運用形態の設定」を適宜設定してください。
・ Webサーバを経由する運用の場合、カスタムインストールで"Webサーバコネクタ/J2EE互換"機能を選択してインス
トールをしてください。
4.7.1.2 多重度の違いによる運用形態
多重度の違いによる運用形態について説明します。
4.7.1.2.1 単一プロセスによる運用
小規模な単一業務のシステムや開発環境などで選択される運用形態です。
Webサーバを経由しない場合
Webサーバ固有の機能を使用する必要がない場合はこの運用形態を選択します。
デフォルトではWebブラウザからIJServerクラスタ上に配備されたWebアプリケーションへアクセスするポート番号は80
番ではなく、28090番からの連番です。必要に応じてHTTPリスナーのポート番号を変更してください。
ポート番号の変更方法については「システム設計ガイド」-「ポート番号」を参照してください。
Webサーバを経由する場合
Webサーバ固有の機能を利用する場合はこの運用形態を選択します。
- 260 -
4.7.1.2.2 1台のマシンでの多重プロセスによる運用
小規模な複数業務のシステムを運用する場合に選択される運用形態です。
多重プロセスによる運用には、1つのIJServerクラスタの中に複数のサーバーインスタンスを作成する場合と、複数の
IJServerクラスタを作成して運用する場合があります。
この運用形態の場合は通常Webブラウザから多重プロセスを意識させずにアクセスさせるために負荷分散装置を必要と
します。
負荷分散装置がない場合はWebブラウザでアクセスする際に各プロセスのポート番号を指定する必要があります。
多重プロセスの詳細は、「2.4.3 IJServerクラスタの複数プロセス構成」を参照してください。
Webサーバを経由しない場合
Webブラウザからのリクエストを各プロセスに振り分けるための負荷分散装置を別途用意する必要があります。
通常、IJServerクラスタを運用するマシンとは別に負荷分散装置を用意する必要があるため、小規模なシステムでは
選択しません。
負荷分散装置の設定は、負荷分散装置のマニュアルを参照してください。
Webサーバを経由する場合
Webブラウザからのリクエストを各プロセスに振り分けるためにWebサーバ(Webサーバコネクタ)を使用します。
IJServerクラスタを運用するマシンと別に負荷分散装置を用意する必要がないため、小規模な複数業務を運用する
システムの場合はこの運用形態を選択します。
また、Webサーバ固有の機能を使用したい場合もこの運用形態を選択する必要があります。
- 261 -
Webサーバコネクタによるリクエストの振り分けに関する詳細は、「4.9 Webサーバコネクタにおけるリクエストの振り分
け制御」を参照してください。
4.7.1.2.3 複数台のマシンによる運用
中大規模なシステムで同一構成のマシンを複数用意し負荷を分散するシステムを運用する場合にこの運用形態を選択
します。
この運用形態ではIJServerクラスタを運用するマシンの他に負荷分散装置が必要になります。
Webサーバを経由しない場合
Webサーバ固有の機能を使用しない場合はこの運用形態を選択します。
リクエストが適切なサーバーインスタンスに割り振られるように負荷分散装置を設定する必要があります。
Webサーバを経由する場合
Webサーバ固有の機能を利用する場合はこの運用形態を選択します。
リクエストが適切なサーバーに割り振られるように負荷分散装置を設定する必要があります。
サーバーに割り振られたリクエストはWebサーバコネクタによってサーバーインスタンスにリクエストが割り振られます。
- 262 -
4.7.1.3 SSLアクセラレータを使用する場合の運用形態
Webサーバを経由しない運用の場合、クライアントとWebコンテナの間にSSLアクセラレータや負荷分散装置などを配置
している環境では、Webコンテナに到達するホスト名、ポート番号、スキームのリクエスト情報が、クライアントからみたリク
エスト先の情報と異なる場合があります。
そのため、リクエスト情報に依存するServletAPIやリダイレクトの処理が正常に動作しない場合があります。
以下に例として、"SSLアクセラレータを中間に配置し、クライアント-SSLアクセラレータ間をhttps、SSLアクセラレータ-Web
コンテナ間をhttpで通信している場合"の図を示します。
必要に応じて、意図した動作となるようにSSLアクセラレータの機能を使用して、HOSTヘッダの付加(※)やリダイレクト先
の設定を行ってください。
※SSLアクセラレータの機能で付加しない場合でも、HOSTヘッダが設定されていれば、その情報からホスト名、ポート番
号を取得できます。
4.7.1.4 Webアプリケーションへのアクセスの運用形態を変更する場合
IJServerクラスタ/Interstage Java EE DASサービス上に配備されたWebアプリケーションへアクセスする際の運用形態には、
Webサーバを経由する場合とWebサーバを経由しない場合があります。
この運用形態を変更する場合の設定方法について説明します。
Webサーバを経由しない運用からWebサーバを経由する運用へ変更する場合
IJServerクラスタまたはInterstage Java EE DASサービスと、経由するWebサーバを連携してください。
連携するWebサーバの変更は、Interstage Java EE管理コンソール、またはasadminコマンドにより行います。
操作方法の詳細については、以下を参照してください。
- 263 -
- Interstage Java EE管理コンソールヘルプ
- リファレンスマニュアル(コマンド編)」-「create-web-server-refサブコマンド」
注意
- IJServerクラスタまたはInterstage Java EE DASサービスのHTTPリスナーポートに1~5000が設定されている場合、
Webサーバとの連携ができません。
「HTTPサービスの定義項目」の「リスナーポート」の設定値を5001~65535に変更してから、Webサーバと連携し
てください。
「HTTPサービスの定義項目」の「リスナーポート」の設定値の変更は、Interstage Java EE管理コンソール、または
asadminコマンドにより行います。
操作方法の詳細については、以下を参照してください。
- Interstage Java EE管理コンソールヘルプ
- 「リファレンスマニュアル(コマンド編)」-「setサブコマンド」
※Interstage Java EE DASサービスのHTTPリスナーポートはInterstage Java EE管理コンソールからは設定できま
せん。
asadminコマンドから設定してください。
- ひとつのWebサーバに対して、同一のアプリケーションが配備されているIJServerクラスタまたはInterstage Java EE
DASサービスを連携することはできません。
別のWebサーバまたはバーチャルホストを選択してください。
また必要に応じて、ひとつのアプリケーションに対して、ターゲットがひとつになるように設定を変更してください。
上記の各設定はInterstage Java EE管理コンソール、またはasadminコマンドにより行います。
操作方法の詳細については、以下を参照してください。
- Interstage Java EE管理コンソールヘルプ
連携するWebサーバの変更
- 「リファレンスマニュアル(コマンド編)」-「create-web-server-refサブコマンド」
- 「リファレンスマニュアル(コマンド編)」-「delete-web-server-refサブコマンド」
連携するWebサーバのバーチャルホストの変更
- 「リファレンスマニュアル(コマンド編)」-「create-virtual-host-refサブコマンド」
- 「リファレンスマニュアル(コマンド編)」-「delete-virtual-host-refサブコマンド」
アプリケーションのターゲットの変更
- 「リファレンスマニュアル(コマンド編)」-「create-application-refサブコマンド」
- 「リファレンスマニュアル(コマンド編)」-「delete-application-refサブコマンド」
Webサーバを経由する運用からWebサーバを経由しない運用へ変更する場合
IJServerクラスタまたはInterstage Java EE DASサービスと、経由しているWebサーバとの連携を外してください。
連携するWebサーバの変更は、Interstage Java EE管理コンソール、またはasadminコマンドにより行います。
操作方法の詳細については、以下を参照してください。
- Interstage Java EE管理コンソールヘルプ
- リファレンスマニュアル(コマンド編)」-「delete-web-server-refサブコマンド」
- 264 -
注意
- Webサーバとの連携を外した場合、Webサーバ固有の機能は使用できなくなります。
- Webサーバを経由しない運用では、SSL通信をサポートしていません。
「HTTPサービスの定義項目」の「セキュリティ」を有効に設定している場合、設定を無効に変更してからWebサー
バとの連携を外してください。
「HTTPサービスの定義項目」の「セキュリティ」の設定はInterstage Java EE管理コンソール、またはasadminコマン
ドにより行います。
操作方法の詳細については、以下を参照してください。
- Interstage Java EE管理コンソールヘルプ
- 「リファレンスマニュアル(コマンド編)」-「setサブコマンド」
- 「HTTPサービスの定義項目」の以下の項目でアクセスを制限している場合、運用形態を変更した後の環境にあ
わせて設定を見直してください。
- 「ネットワークアドレス」
- 「要求を受け付けるクライアントのアドレス」
上記の各設定はInterstage Java EE管理コンソール、またはasadminコマンドにより行います。
操作方法の詳細については、以下を参照してください。
- Interstage Java EE管理コンソールヘルプ
- 「リファレンスマニュアル(コマンド編)」-「setサブコマンド」
ポイント
運用形態を変更する場合、以下を参照して各定義項目を見直してください。
・ 「6.8.3 HTTPサービスの定義項目」
・ 「チューニングガイド」-「Webコンテナのチューニング」
なお、自動的にWebサーバとの連携が設定/解除される場合があります。その場合にも定義項目の見直しを行ってください。
自動的にWebサーバとの連携が設定/解除される場合については以下を参照してください。
・ 「インストールガイド」-「Webサーバコネクタ/J2EE互換機能をアンインストールする場合」
・ 「4.8.2 WebサーバとIJServerクラスタの連携」
4.8 Webサーバを経由する場合の運用準備
Webサーバを経由する場合の運用準備について説明します。
4.8.1 Webサーバの環境設定
Webコンテナとの接続をサポートするWebサーバは以下のとおりです。
・ Interstage HTTP Server
・ Microsoft(R) Internet Information Services
4.8.1.1 Interstage HTTP Serverの環境設定
ここでは、IJServerクラスタとInterstage HTTP Serverを連携させるための環境設定方法について説明します。
- 265 -
WebサーバからWebコンテナへの通信はWebサーバコネクタが行います。
WebサーバコネクタはApache APIを使用したDSO(Dynamic Shared Objects)モジュールとしてWebサーバ上で動作する
ため、Webサーバの起動と停止に連動します。
IJServerクラスタとWebサーバをそれぞれ別のマシンに分離して運用する場合には、Webサーバコネクタの環境設定を行
う必要があります。詳細は、「4.8.2.2 WebサーバとIJServerクラスタを別のマシンで運用する場合」を参照してください。
ポイント
Interstage HTTP Serverの環境定義ファイル(httpd.conf)に以下に示すWebサーバコネクタの定義情報が設定されていま
す。Interstage管理コンソールを使用せずにInterstage HTTP Serverの環境定義ファイル(httpd.conf)を直接編集する場合
には、本定義情報の削除、または編集をしないでください。
LoadModule ihs2_redirector2_module "C:/Interstage/F3FMjs5/gateway/ihs2/mod_ihs2_redirector2.so"
LoadModule ihs2_redirector2_module "/opt/FJSVjs5/gateway/ihs2/mod_ihs2_redirector2.so"
4.8.1.2 Microsoft(R) Internet Information Services 6.0の環境設定
ここでは、IJServerクラスタとMicrosoft(R) Internet Information Services 6.0を連携させるための環境設定方法について説
明します。
Microsoft(R) Internet Information Services のWebサーバコネクタはISAPI APIを使用した組み込みISAPIフィルタとISAPI
エクステンションとしてWebサーバ上で動作するため、Webサーバの起動と停止に連動します。
IJServerクラスタとWebサーバをそれぞれ別のマシンに分離して運用する場合には、Webサーバコネクタの環境設定を行
う必要があります。詳細は、「4.8.2.2 WebサーバとIJServerクラスタを別のマシンで運用する場合」を参照してください。
ポイント
Microsoft(R) Internet Information ServicesのWebサーバコネクタでは、Webサーバ名が「FJapache」のInterstage HTTP
ServerのWebサーバコネクタの設定を参照することで同様の動作を実施しているため、Microsoft(R) Internet Information
ServicesのWebサーバコネクタを使用する場合でもWebサーバ名が「FJapache」のInterstage HTTP Serverを使用する際と
同様に、Interstage HTTP Server とWebサーバコネクタの設定をInterstage管理コンソールから行う必要があります。
注意
同一マシン上において、Interstage HTTP ServerとMicrosoft(R) Internet Information Servicesは、それぞれのWebサーバ
に異なるポート番号を設定することにより、共存することは可能ですが、Webサーバ名が「FJapache」のInterstage HTTP
ServerのWebサーバコネクタを同時に利用することはできません。
InterstageとMicrosoft(R) Internet Information Servicesの連携は、以下の手順で行います。
1. Microsoft(R) Internet Information ServicesとInterstageのインストール
2. Interstage HTTP Serverの自動起動の抑止
3. IIS Admin Serviceサービス、またはサーバマシンの再起動
4. Microsoft(R) Internet Information Servicesの環境設定
5. Interstageの環境設定
Microsoft(R) Internet Information ServicesとInterstageのインストール
サーバマシンに、Microsoft(R) Internet Information ServicesとInterstageをインストールします。
- 266 -
ポイント
Microsoft(R) Internet Information Servicesを使用する場合は、Interstage HTTP Serverを必ずインストールしてください。
Interstage HTTP Serverをインストールしないと、Microsoft(R) Internet Information ServicesとInterstageを連携させることが
できません。
また、Interstage HTTP Serverをインストール後、Webサーバ名が「FJapache」のInterstage HTTP Serverを削除した場合、
Microsoft(R) Internet Information Servicesを連携させることができません。この場合、「FJapache」の名前でInterstage HTTP
Serverを作成し直す必要があります。
Interstage HTTP Serverの自動起動の抑止
Interstage HTTP Serverの自動起動を抑止するための設定を行います。
1. Interstage HTTP Serverの停止
Interstage管理コンソールの[サービス] > [Webサーバ] > [FJapache] > [状態]タブで、[停止]ボタンをクリックして
Interstage HTTP Serverを停止します。
2. Interstage HTTP Serverの自動起動の抑止
Interstage HTTP Serverの自動起動を抑止します。詳細は、「Interstage HTTP Server運用ガイド」の「運用・保守」の
「自動起動の設定」を参照してください。
注意
Interstage HTTP ServerとMicrosoft(R) Internet Information Servicesを共存させる場合、Interstageの再起動を行った際に
は、Webサーバ名が「FJapache」のInterstage HTTP Server以外のWebサーバを個別に起動してください。
IIS Admin Serviceサービス、またはサーバマシンの再起動
Microsoft(R) Internet Information Services6.0でIIS 5.0 プロセス分離モードを使用している場合、IIS Admin Serviceサー
ビス、またはサーバマシンを再起動します。
・ Microsoft(R) Internet Information Services6.0でIIS 5.0 プロセス分離モードを使用している場合
IIS Admin Serviceサービスを再起動します。再起動は、Administrator権限でログインし、「コントロールパネル」の
「サービス」または「コントロールパネル」-「管理ツール」-「サービス」を起動後、「IIS Admin Service」を選択し、[操
作]から[再起動]を選択します。
Microsoft(R) Internet Information Servicesの環境設定
Microsoft(R) Internet Information ServicesのWebサーバコネクタをISAPIフィルタとISAPIエクステンションとして動作させ
るために設定を以下のように更新します。Microsoft(R) Internet Information Servicesのインターネットサービスマネージャ
を用いて更新します。
・ WebサーバコネクタをISAPIフィルタとISAPIエクステンションとして動作できるように登録します。
Webアプリケーションにアクセス制限を設定する場合は、セキュリティの環境を定義します。
詳細な登録手順については、Microsoft(R) Internet Information Servicesのマニュアルを参照してください。
注意
Microsoft(R) Internet Information Servicesの環境設定は、バックアップリストアおよび移出移入の対象となりません。
Microsoft(R) Internet Information Servicesの停止
Microsoft(R) Internet Information Servicesが起動されている場合は、停止してください。停止は、Administrator権限
でログインして、「コントロールパネル」の「サービス」または「コントロールパネル」-「管理ツール」-「サービス」を起
動した後、「World Wide Web Publishing Service」を選択して、[操作]を選択し、一覧から[停止]を選択します。
- 267 -
ISAPIフィルタへの登録
コンソールツリーの[Webサイト]配下に作成されているWebサイトの“ISAPIフィルタ”にWebサーバコネクタを設定します。
フィルタの実行ファイルには、以下のWebサーバコネクタのファイル名を設定します。
- C:\Interstage\F3FMjs5\gateway\isapi\isapi_redirector2.dll
ISAPIエクステンションへの登録
コンソールツリーの[Webサイト]配下に作成されているWebサイトに“仮想ディレクトリ”を作成します。
設定する値は以下のとおりです。
ローカルパス
C:\Interstage\F3FMjs5\gateway\isapi
名前(エイリアス)
F3FMjs5
仮想ディレクトリのアクセス許可においてISAPIアプリケーションの実行を許可してください。
Webサービス拡張への登録
ISAPIフィルタへの登録で設定したWebサーバコネクタのファイルをWeb サービス拡張に追加して、状態を「許可」に
設定します。
ワーカー プロセスの設定
最大ワーカー プロセス数に1を、ワーカー プロセスのリサイクルを無効にします。
ワーカー プロセスのリサイクルを無効にするには、ISAPIエクステンションへの登録で作成した仮想ディレクトリに設定
されているアプリケーションプールの「プロパティ」-「リサイクル」タブですべての項目の選択を解除してください。
アクセス制限の設定
Webアプリケーションにアクセス制限を設定する場合は、Webサーバコネクタに対してアクセス制限を設定します。
「仮想ディレクトリ」の「ディレクトリセキュリティ」で設定してください。
Microsoft(R) Internet Information Servicesの起動
Microsoft(R) Internet Information Servicesの起動は、Administrator権限でログインし、「コントロールパネル」の「サー
ビス」または「コントロールパネル」-「管理ツール」-「サービス」を起動後、「World Wide Web Publishing Service」を
選択し、[操作]を選択後、一覧から[起動]を選択します。
注意
Windows Server(R) x64 Editions(32ビット互換)でInterstage Application Serverを運用する場合は、32ビットモードを有効
にして動作させてください。32ビットモードを有効にするには、コマンドプロンプトから以下のコマンドを実行します。
cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1
Interstageの環境設定
Interstageの環境設定(ワークユニットの作成、Webアプリケーションの配備など)は、Interstage管理コンソールで、Interstage
HTTP Serverを使用する場合と同様の操作で行います。
ただし、Interstage HTTP Serverを使用する場合と、Microsoft(R) Internet Information Servicesを使用する場合とでは、以
下の差異があります。
・ Microsoft(R) Internet Information Servicesを使用する場合は、同一マシン上では、複数のWebサイトに対して、Web
サーバコネクタを設定して使用することはできません。また、Interstage管理コンソールで、Interstage HTTP Serverの
設定でWebサーバのバーチャルホストを設定して使用することはできません。
・ Webサーバの設定は、Microsoft(R) Internet Information Servicesが提供するインターネットサービスマネージャで行
います。
- 268 -
注意
・ WebサーバコネクタとWebコンテナ間でSSL通信を行う場合には、Microsoft(R) Internet Information Servicesを実行
するユーザがInterstage証明書環境へのアクセスを許可する、Administrators権限を所有している必要があります。一
般権限のユーザでSSL機能を使用する場合、エクスプローラでInterstage証明書環境のディレクトリを選択し、「プロパ
ティ」メニューの「セキュリティ」タブの画面で、ユーザまたはグループを追加することでアクセス権限を追加できます。
追加したユーザまたはグループについては「フルコントロール」を設定してください。
Interstage証明書環境へのアクセス権限の詳細については、「セキュリティシステム運用ガイド」の「Interstage証明書
環境の構築と利用」の「Interstage証明書環境のアクセス権限の設定」を参照してください。
Webサーバコネクタのログ出力ディレクトリ、およびWebサーバコネクタのログファイルに対して、一般ユーザ権限で
フルコントロール可能なアクセス許可を付与してください。
・ ワークユニットの作成時、Webサーバは必ず「FJapache」を選択してください。Webサーバに「FJapache」を選択しない、
またはワークユニットの環境設定で、Webサーバを「FJapache」から変更した場合は、Microsoft(R) Internet Information
ServicesのWebサーバコネクタを使用することはできません。
4.8.1.3 Microsoft(R) Internet Information Services 7.0/7.5の環境設定
ここでは、IJServerクラスタとMicrosoft(R) Internet Information Services 7.0/7.5を連携させるための環境設定方法につい
て説明します。
Microsoft(R) Internet Information Services のWebサーバコネクタはISAPI APIを使用した組み込みISAPIフィルタとISAPI
エクステンションとしてWebサーバ上で動作するため、Webサーバの起動と停止に連動します。
IJServerクラスタとWebサーバをそれぞれ別のマシンに分離して運用する場合には、Webサーバコネクタの環境設定を行
う必要があります。詳細は、「4.8.2.2 WebサーバとIJServerクラスタを別のマシンで運用する場合」を参照してください。
ポイント
Microsoft(R) Internet Information ServicesのWebサーバコネクタでは、Webサーバ名が「FJapache」のInterstage HTTP
ServerのWebサーバコネクタの設定を参照することで同様の動作を実施しているため、Microsoft(R) Internet Information
ServicesのWebサーバコネクタを使用する場合でもWebサーバ名が「FJapache」のInterstage HTTP Serverを使用する際と
同様に、Interstage HTTP Server とWebサーバコネクタの設定をInterstage管理コンソールから行う必要があります。
注意
同一マシン上において、Interstage HTTP ServerとMicrosoft(R) Internet Information Servicesは、それぞれのWebサーバ
に異なるポート番号を設定することにより、共存することは可能ですが、Webサーバ名が「FJapache」のInterstage HTTP
ServerのWebサーバコネクタを同時に利用することはできません。
InterstageとMicrosoft(R) Internet Information Servicesの連携は、以下の手順で行います。
1. Microsoft(R) Internet Information ServicesとInterstageのインストール
2. Interstage HTTP Serverの自動起動の抑止
3. Microsoft(R) Internet Information Servicesの環境設定
4. Interstageの環境設定
Microsoft(R) Internet Information ServicesとInterstageのインストール
サーバマシンに、Microsoft(R) Internet Information ServicesとInterstageをインストールします。
- 269 -
ポイント
Microsoft(R) Internet Information Servicesを使用する場合は、Interstage HTTP Serverを必ずインストールしてください。
Interstage HTTP Serverをインストールしないと、Microsoft(R) Internet Information ServicesとInterstageを連携させることが
できません。
また、Interstage HTTP Serverをインストール後、Webサーバ名が「FJapache」のInterstage HTTP Serverを削除した場合、
Microsoft(R) Internet Information Servicesを連携させることができません。この場合、「FJapache」の名前でInterstage HTTP
Serverを作成し直す必要があります。
Interstage HTTP Serverの自動起動の抑止
Interstage HTTP Serverの自動起動を抑止するための設定を行います。
1. Interstage HTTP Serverの停止
Interstage管理コンソールの[サービス] > [Webサーバ] > [FJapache] > [状態]タブで、[停止]ボタンをクリックして
Interstage HTTP Serverを停止します。
2. Interstage HTTP Serverの自動起動の抑止
Interstage HTTP Serverの自動起動を抑止します。詳細は、「Interstage HTTP Server運用ガイド」の「運用・保守」の
「自動起動の設定」を参照してください。
注意
Interstage HTTP ServerとMicrosoft(R) Internet Information Servicesを共存させる場合、Interstageの再起動を行った際に
は、Webサーバ名が「FJapache」のInterstage HTTP Server以外のWebサーバを個別に起動してください。
Microsoft(R) Internet Information Servicesの環境設定
Microsoft(R) Internet Information Services上でWebサーバコネクタを動作させるための設定を行います。以降の操作は、
Administrator権限でログインした状態で操作を行ってください。
注意
Microsoft(R) Internet Information Servicesの環境設定は、バックアップリストアおよび移出移入の対象となりません。
ISASPI 拡張とISAPI フィルタのインストール
サーバーマネージャの[役割] > [Webサーバ (IIS)]画面で「役割サービスの追加」をクリックして「ISAPI 拡張」と「ISAPI
フィルタ」をインストールします。
サービスの停止
サーバーマネージャの[役割] > [Webサーバ (IIS)]画面で「World Wide Web Publishing Service」および「Windows
Process Activation Service」を停止します。
ISAPIフィルタの追加
以下の手順でISAPIフィルタを追加します。
1. IISマネージャの[サイト] > 「サイト名」 > 「ISAPIフィルタ」をダブルクリックしてISAPIフィルタ画面を開きます。
2. 操作ペインの「追加」をクリックして、表示された「ISAPI フィルタの追加」ダイアログボックスで以下の値を入力
して[OK]ボタンをクリックします。
フィルタ名
F3FMjs5 (任意の値)
実行可能ファイル
C:\Interstage\F3FMjs5\gateway\isapi\isapi_redirector2.dll
アプリケーションの追加
以下の手順でアプリケーションを追加します。
- 270 -
1. IISマネージャの[サイト] > 「サイト名」を右クリックして「アプリケーションの追加」をクリックします。
2. 表示された「アプリケーションの追加」ダイアログボックスで以下の値を入力して[OK]ボタンをクリックします。
エイリアス
F3FMjs5
アプリケーション プー
ル
DefaultAppPool または任意のアプリケーション プール
物理パス
C:\Interstage\F3FMjs5\gateway\isapi
注意
Webサーバコネクタは、ISAPIフィルタでURLの書き換え処理を行っています。
また、Microsoft(R) Internet Information Servicesでは、元URLと書き換え後のURLの両方が同じアプリケーション
プール内で実行されるように設定する必要があります。
そのため、以下のいずれかの設定を行ってください。
- デフォルトのサイト(Default Web Site)でデフォルトのアプリケーション プール(DefaultAppPool)を使用する場合
デフォルトのサイト(Default Web Site)と"F3FMjs5"に、デフォルトのアプリケーション プール(DefaultAppPool)
を設定してください。
設定例:デフォルトのサイト(Default Web Site)でデフォルトのアプリケーション プール(DefaultAppPool)を
使用する場合
IISマネージャ
├[アプリケーション プール]
│ └[DefaultAppPool]
└[サイト]
└[Default Web Site]:DefaultAppPoolを設定
└[F3FMjs5]:DefaultAppPoolを設定
- デフォルトのサイト(Default Web Site)で任意のアプリケーション プールを使用する場合
デフォルトのサイト(Default Web Site)と"F3FMjs5"に、任意のアプリケーション プールを設定してください。
設定例:デフォルトのサイト(Default Web Site)で任意のアプリケーション プール(IASPool)を使用する場合
IISマネージャ
├[アプリケーション プール]
│ ├[DefaultAppPool]
│ └[IASPool]
└[サイト]
└[Default Web Site]:IASPoolを設定
└[F3FMjs5]:IASPoolを設定
- 任意のサイト(IAS Web Site)で任意のアプリケーション プールを使用する場合
任意のサイト(IAS Web Site)と"F3FMjs5"に、任意のアプリケーション プールを設定してください。
設定例:任意のサイト(IAS Web Site)で任意のアプリケーション プール(IASPool)を使用する場合
IISマネージャ
├[アプリケーション プール]
│ ├[DefaultAppPool]
│ └[IASPool]
└[サイト]
- 271 -
└[IAS Web Site]:IASPoolを設定
└[F3FMjs5]:IASPoolを設定
3. IISマネージャの[サイト] > 「サイト名」 > [F3FMjs5] > 「ハンドラ マッピング」をダブルクリックしてハンドラ マッピ
ング画面を開きます。
4. 「ISAPI-dll」を選択して、操作ペインの「編集」をクリックします。
5. 表示された「モジュール マップの編集」ダイアログボックスで以下の値を入力して[OK]ボタンをクリックします。
要求パス
*.dll
モジュール
IsapiModule
実行可能ファイル
C:\Interstage\F3FMjs5\gateway\isapi\isapi_redirector2.dll
6. 続いて表示されるダイアログボックスで[はい]をクリックします。
7. 「ISAPI-dll」を再度選択して、操作ペインの「機能のアクセス許可の編集」をクリックします。
8. 表示された「機能のアクセス許可の編集」ダイアログボックスですべてのチェックボックスを選択状態にして[OK]
ボタンをクリックします。
ワーカー プロセスの設定
以下の手順でワーカー プロセスの設定をします。
1. IISマネージャの[アプリケーション プール] > 「上記のアプリケーションの追加で選択したアプリケーション プー
ル名」を選択して操作ペインの「リサイクルの設定」をクリックします。
2. 表示された「アプリケーション プールのリサイクル設定の編集」ダイアログボックスですべてのチェックボックスの
選択を解除して[次へ]をクリックします。次の画面では何も選択せずに[終了]ボタンをクリックします。
3. 上記の1.で選択したアプリケーション プールを再度選択して、操作ペインの「詳細設定」をクリックします。
4. 表示された「詳細設定」ダイアログボックスで以下の値を入力して[OK]ボタンをクリックします。
ワーカー プロセスの最大数
1
32 ビット アプリケーションの有効化 (注)
True
注) Windows Server(R) x64 Editions(32ビット互換)でInterstage Application Serverを運用する場合にだけ設定
します。
サービスの開始
サーバーマネージャの[役割] > [Webサーバー (IIS)]画面で「World Wide Web Publishing Service」および「Windows
Process Activation Service」を開始します。
Interstageの環境設定
Interstageの環境設定(ワークユニットの作成、Webアプリケーションの配備など)は、Interstage管理コンソールで、Interstage
HTTP Serverを使用する場合と同様の操作で行います。
ただし、Interstage HTTP Serverを使用する場合と、Microsoft(R) Internet Information Servicesを使用する場合とでは、以
下の差異があります。
・ Microsoft(R) Internet Information Servicesを使用する場合は、同一マシン上では、複数のWebサイトに対して、Web
サーバコネクタを設定して使用することはできません。また、Interstage管理コンソールで、Interstage HTTP Serverの
設定でWebサーバのバーチャルホストを設定して使用することはできません。
・ Webサーバの設定は、Microsoft(R) Internet Information Servicesが提供するIISマネージャで行います。
注意
・ WebサーバコネクタとWebコンテナ間でSSL通信を行う場合には、Microsoft(R) Internet Information Servicesを実行
するユーザがInterstage証明書環境へのアクセスを許可する、Administrators権限を所有している必要があります。一
- 272 -
般権限のユーザでSSL機能を使用する場合、エクスプローラでInterstage証明書環境のディレクトリを選択し、「プロパ
ティ」メニューの「セキュリティ」タブの画面で、ユーザまたはグループを追加することでアクセス権限を追加できます。
追加したユーザまたはグループについては「フルコントロール」を設定してください。
Interstage証明書環境へのアクセス権限の詳細については、「セキュリティシステム運用ガイド」の「Interstage証明書
環境の構築と利用」の「Interstage証明書環境のアクセス権限の設定」を参照してください。
・ Webサーバコネクタのログ出力ディレクトリ、およびWebサーバコネクタのログファイルに対して、一般ユーザ権限で
フルコントロール可能なアクセス許可を付与してください。
・ ワークユニットの作成時、Webサーバは必ず「FJapache」を選択してください。Webサーバに「FJapache」を選択しない、
またはワークユニットの環境設定で、Webサーバを「FJapache」から変更した場合は、Microsoft(R) Internet Information
ServicesのWebサーバコネクタを使用することはできません。
4.8.2 WebサーバとIJServerクラスタの連携
ここではWebサーバコネクタの運用方法について、WebサーバとIJServerクラスタを同じマシン(同一筐体)で運用する場
合と、別マシン(別筐体)で運用する場合のそれぞれについて説明します。
ポイント
WebサーバとIJServerクラスタの連携を行う場合、運用形態に合わせて「Webコンテナへアクセスする運用形態」の設定
が必要な場合があります。特に以下の運用形態の場合に必要となります。
・ WebサーバとIJServerクラスタを別のマシンで運用する場合
・ Webサーバを経由する かつ 負荷分散装置などでWebコンテナに対して故障監視を行う場合
詳細の設定については、「6.8.3 HTTPサービスの定義項目」の「Webコンテナへアクセスする運用形態」を参照してくださ
い。
4.8.2.1 WebサーバとIJServerクラスタを同じマシンで運用する場合
WebサーバとIJServerクラスタを同じマシンで運用する場合は、以下の手順で環境設定します。
WebサーバとIJServerクラスタの連携設定の詳細は、asadminコマンドの「サブコマンド-カテゴリ: Webサーバコネクタ」を
参照してください。
1. Webサーバの作成
Interstage管理コンソールまたはihscreateコマンドでWebサーバを作成します。
2. IJServerクラスタの作成
Interstage Java EE管理コンソール、またはasadminコマンドのcreate-clusterサブコマンド、create-instanceサブコマン
ドでIJServerクラスタおよびサーバーインスタンスを作成します。
3. IJServerクラスタへのアプリケーションの配備
Interstage Java EE管理コンソール、またはasadminコマンドのdeployサブコマンドでアプリケーションを配備します。
4. IJServerクラスタの起動
Interstage Java EE管理コンソール、またはasadminコマンドのstart-clusterサブコマンドでIJServerクラスタを起動しま
す。
5. Webサーバの起動
Interstage管理コンソールまたはihsstartコマンドでWebサーバを作成します。
6. アプリケーションの実行
Webブラウザなどからアプリケーションを実行します。
- 273 -
ポイント
・ WebサーバとIJServerクラスタは、以下の場合に自動的に連携するよう設定されます。
- IJServerクラスタを作成時にサーバーインスタンスを1つ以上作成した場合で、同じマシン内に1つだけWebサー
バが存在する場合
- サーバーインスタンスが作成されていないIJServerクラスタに対してサーバーインスタンスを作成した時に、同じ
マシン内に1つだけWebサーバが存在する場合
・ WebサーバとIJServerクラスタは、以下の場合に自動的に連携が解除されます。
- IJServerクラスタ削除時
- IJServerクラスタからすべてのサーバーインスタンスを削除した時
注意
・ Interstage管理コンソールまたはisj2eeadminコマンドで「Webサーバとワークユニットを同一のマシンで運用する」の設
定を「運用しない」に設定した場合、IJServerクラスタへの接続先情報がInterstage管理コンソールのWebサーバコネ
クタ環境設定画面に表示されますが、これらの設定をInterstage管理コンソールまたはisj2eeadminコマンドから更新、
削除することはできません。
・ Interstage管理コンソールまたはisj2eeadminコマンドでIJServerクラスタへの接続先情報を作成しないでください。作
成した場合は、IJServerクラスタの環境設定とWebサーバコネクタの環境設定の不整合が発生し、アプリケーションの
動作異常を引き起こす場合があります。
この場合はInterstage管理コンソールまたはisj2eeadminコマンドで作成したIJServerクラスタへの接続先情報を削除し
て、Interstage Java EE管理コンソールまたはasadminコマンドを使用して連携するWebサーバを設定してください。
4.8.2.2 WebサーバとIJServerクラスタを別のマシンで運用する場合
WebサーバとIJServerクラスタを別のマシンで運用する場合は、システムの環境設定の「Webサーバとワークユニットを同
一のマシンで運用する」を「運用しない」に設定したうえで、WebサーバコネクタとIJServerクラスタの設定をそれぞれのマ
シンで行います。
具体的な運用方法は、「J2EE ユーザーズガイド(旧版互換)」の「IJServerとWebサーバを分離して運用する場合」を参照
してください。
以下にIJServerクラスタとWebサーバを別のマシンで連携させる場合の代表的な例を示します。
1. Webサーバの作成
Interstage管理コンソールまたはihscreateコマンドでWebサーバを作成します。
2. IJServerクラスタおよびサーバーインスタンスの作成
Interstage Java EE管理コンソール、またはasadminコマンドのcreate-clusterサブコマンド、create-instanceサブコマン
ドでIJServerクラスタおよびサーバーインスタンスを作成します。
3. IJServerクラスタへのアプリケーションの配備
Interstage Java EE管理コンソール、またはasadminコマンドのdeployサブコマンドでアプリケーションを配備します。
4. Webサーバコネクタの接続先情報の作成
Webサーバを運用するマシンでInterstage管理コンソールまたはisj2eeadminコマンドでWebサーバコネクタの接続
先情報を作成します。
接続先情報の設定項目には手順2、3.で作成、配備したIJServerクラスタの情報を指定します。
IJServerクラスタのポート番号は、以下の定義項目から確認します。
- ${instanceName}.system-property.HTTP_LISTENER_PORT
- ${clusterName}.system-property.HTTP_LISTENER_PORT
- 設定名.system-property.HTTP_LISTENER_PORT
- 274 -
定義項目が設定されていない場合や重複して設定されている場合は、サーバーインスタンス>IJServerクラスタ>
設定の優先順位でIJServerクラスタが実際に使用するポート番号が決まります。
5. Webコンテナへアクセスする運用形態の設定
Intersrtage Java EE管理コンソール、または、asadminコマンドのsetサブコマンドで、Webコンテナへアクセスする運
用形態の設定をします。
- プロパティ名:requestCheck
- 設定値:webserver
詳細は、「6.8.3 HTTPサービスの定義項目」の「Webコンテナへアクセスする運用形態」を参照してください。
6. IJServerクラスタの起動
Interstage Java EE管理コンソール、またはasadminコマンドのstart-clusterサブコマンドでIJServerクラスタを起動しま
す。
7. Webサーバの起動
Interstage管理コンソールまたはihsstartコマンドでWebサーバを起動します。
8. アプリケーションの実行
Webブラウザなどからアプリケーションを実行します。
ポイント
WebサーバとIJServerクラスタでは、同一バージョンのInterstageを使用してください。
4.8.2.3 Webサーバコネクタのログ
Webサーバコネクタのログ設定は、Interstage管理コンソールまたはisj2eeadminコマンドで行います。詳細については、
Interstage管理コンソールのヘルプおよび「リファレンスマニュアル(コマンド編)」を参照してください。
4.8.2.4 IJServer(J2EE)とIJServerクラスタの共存
IJServer(J2EE)とIJServerクラスタは同じWebサーバに対して連携させることが可能です。
ここでは、IJServer(J2EE)とIJServerクラスタの共存している場合の留意事項を説明します。
IJServer(J2EE)とIJServerクラスタで名前が重複している場合
WebサーバとIJServerクラスタを同じマシンで運用している場合は名前が重複しているIJServerクラスタを同じWebサーバ
と連携させることはできません。
WebサーバとIJServerクラスタを別のマシンで運用している場合は、Webサーバコネクタの接続先情報を作成する時に、
IJServer(J2EE)とIJServerクラスタを別の名前に設定することで、名前が重複しているIJServerクラスタを同じWebサーバと
連携させることができます。
- 275 -
1. マシンAのInterstage管理コンソールで、[Webサーバ] > 「Webサーバ名」 > [Webサーバコネクタ] > [新規作成]タ
ブを選択し、IJServer(J2EE)への接続先情報を作成します。
項目名
設定値例
ワークユニット名
MyIJServer
ServletコンテナのIPアドレス:ポート番号
172.16.30.2:9000
2. マシンAのInterstage管理コンソールで、[Webサーバ] > 「Webサーバ名」 > [Webサーバコネクタ] > [新規作成]タ
ブを選択し、IJServerクラスタへの接続先情報を作成します。
項目名
設定値例
ワークユニット名
MyIJServer_2
ServletコンテナのIPアドレス:ポート番号
172.16.30.2:9001
isinitコマンドの-fオプション指定時の初期化対象について
isinitコマンドに-fオプションを指定して実行するとWebサーバコネクタの環境設定も初期化されます。この時、IJServer(J2EE)
への接続情報とIJServerクラスタへの接続情報の両方が初期化されますがIJServerクラスタは削除されません。
このため、IJServerクラスタが存在していてもIJServerクラスタにリクエストが振り分けられなくなります。
4.8.2.5 システム環境設定「Webサーバとワークユニットを同一のマシンで運用す
る」の設定変更について
ここでは、システム環境設定の「Webサーバとワークユニットを同一のマシンで運用する」の設定を「運用しない」から「運
用する」に設定変更する時の留意事項を説明します。
・ Webサーバコネクタの環境設定画面で設定した、別のマシンのIJServerクラスタへの接続情報は削除されます。
・ 以下のように、Webサーバが1つだけ存在するマシン内に同じ名前のIJServer(J2EE)とIJServerクラスタが存在し、
IJServerクラスタが同じマシンのWebサーバと連携している場合は、「運用しない」から「運用する」に設定変更をする
とエラーとなり操作が失敗します。
この場合はIJServer(J2EE)を削除するか、IJServerクラスタとWebサーバの連携を解除してから「運用する」に設定変
更してください。
4.9 Webサーバコネクタにおけるリクエストの振り分け制御
Webサーバコネクタにおけるリクエストの振り分け制御について、コマンドによる制御と故障監視による制御について説明
します。
- 276 -
4.9.1 コマンドによる振り分け操作と状態表示
Webサーバコネクタでは、各IJServerクラスタに対しリクエスト振り分け制御を行っています。
以下のコマンドを使用することにより、WebサーバコネクタにおけるIJServerクラスタのリクエスト振り分け制御状態(振り分
け対象にする/しない)の変更や、現在のリクエスト振り分け制御状態の表示ができます。
例えばWebアプリケーションの定期保守、ネットワーク障害やマシンのハード障害などの場合に当該IJServerクラスタ(ま
たは当該マシン)を一時的にリクエスト振り分け対象から外し、保守完了後や障害対処後に振り分け対象に戻します。こ
の操作により、安定かつ継続的なシステムの運用ができます。
・ 振り分け操作コマンド(ijsdispatchcont)
IJServerクラスタをリクエストの振り分け対象にする/しないの操作を、IPアドレスまたはIPアドレス:ポート番号で指定し
て行います。
振り分け操作コマンドで操作した状態は、Webサーバの再起動後や異常停止後でも保持されます。振り分けの状態
を変更したい場合は、再度振り分け操作コマンドを実行します。
・ 振り分け状態表示コマンド(ijsprintdispatchcont)
IJServerクラスタへの振り分け状態を「IPアドレス:ポート番号 IJServerクラスタ名」の一覧で表示します。
振り分け操作コマンドで指定するIJServerクラスタのIPアドレスまたはIPアドレス:ポート番号は、事前に振り分け状態表示
コマンドを使用して確認します。振り分け状態表示コマンドで表示されたIPアドレスまたはIPアドレス:ポート番号だけで操
作可能です。
各コマンドの詳細は、「リファレンスマニュアル(コマンド編)」を参照してください。
ポイント
Webサーバコネクタから各IJServerクラスタへのリクエスト振り分けは処理中リクエストが最も少ないところに振り分けられま
す。ただし、Webアプリケーションでセッション管理を使用している場合には、セッションを生成したIJServerクラスタと同じ
IJServerクラスタに以降のリクエストも振り分けられます。
以下に運用パターンの例を示します。サーバマシンの構成とコマンドパラメータの指定方法によって様々な運用パター
ンがあります。
・ パターン1:マシン単位の振り分け操作
・ パターン2:IJServerクラスタ単位の振り分け操作(1)
・ パターン3:IJServerクラスタ単位の振り分け操作(2)
・ パターン4:IJServerクラスタの接続抑止
パターン1:マシン単位の振り分け操作
マシンの保守を行う場合やマシンのハード障害が発生した場合などにマシンへの振り分けを制御するには、以下のよう
に運用します。
IPアドレス123.123.123.110のマシン(マシン1)とIPアドレス123.123.123.111のマシン(マシン2)をそれぞれ2つのIJServerク
ラスタ(IJServerA、IJServerB)で構成しています。
IJServerAにはapl01、IJServerBにはapl02のWebアプリケーションを配備しています。
マシン1を停止するため、IPアドレス123.123.123.110を振り分け対象からはずして運用します。
ijsdispatchcont OFF 123.123.123.110
負荷分散のためマシン1とマシン2に振り分けられていたapl01、apl02は共にマシン2だけでの運用になります。
- 277 -
マシン1復旧時には、以下のコマンドで振り分け対象に戻します。
ijsdispatchcont ON 123.123.123.110
パターン2:IJServerクラスタ単位の振り分け操作(1)
Webアプリケーションの保守を行う場合などにIJServerクラスタへの振り分けを制御するには、以下のように運用します。
パターン1同様、IPアドレス123.123.123.110のマシン(マシン1)とIPアドレス123.123.123.111のマシン(マシン2)をそれぞれ
2つのIJServerクラスタ(IJServerA、IJServerB)で構成しています。
IJServerAにはapl01、IJServerBにはapl02のWebアプリケーションを配備しています。
マシン1のIJServerAを停止するため、振り分け対象からはずして運用します。
ijsdispatchcont OFF 123.123.123.110:9000
負荷分散のためマシン1とマシン2に振り分けられていたapl01はマシン2だけでの運用となります。apl02は変わらずマシ
ン1とマシン2に振り分けられます。
- 278 -
マシン1のIJServerA復旧時には、以下のコマンドで振り分け対象に戻します。
ijsdispatchcont ON 123.123.123.110:9000
パターン3:IJServerクラスタ単位の振り分け操作(2)
IJServerクラスタのサーバーインスタンスが2つ以上の場合で、Webアプリケーションの保守を行うためIJServerクラスタへ
の振り分けを制御するには、以下のように運用します。
IPアドレス123.123.123.110のマシン(マシン1)とIPアドレス123.123.123.111のマシン(マシン2)をそれぞれ2つのIJServerク
ラスタ(IJServerA、IJServerB)で構成しています。
IJServerAのサーバーインスタンスを2つ作成し、2つのWebコンテナ(コンテナα、コンテナβ)を起動しています。IJServerA
にはapl01、IJServerBにはapl02のWebアプリケーションを配備しています。
マシン1のIJServerAを停止するため、振り分け対象からはずして運用します。Webコンテナ数分の振り分け操作コマンド
を実行します。
ijsdispatchcont OFF 123.123.123.110:9000
ijsdispatchcont OFF 123.123.123.110:9001
負荷分散のため、マシン1のコンテナα、コンテナβとマシン2のコンテナα、コンテナβに振り分けられていたapl01は、
マシン2のコンテナα、コンテナβでの運用となります。apl02は変わらず、マシン1のIJServerBとマシン2のIJServerBに振
り分けられます。
マシン1のIJServerA復旧時には、以下のコマンドで振り分け対象に戻します。
- 279 -
ijsdispatchcont ON 123.123.123.110:9000
ijsdispatchcont ON 123.123.123.110:9001
パターン4:IJServerクラスタの接続抑止
IJServerクラスタ側のマシンが1台の構成の場合でWebアプリケーションの保守を行うためIJServerクラスタへの接続を抑
止するには、以下のように運用します。
IPアドレス123.123.123.110のマシンを2つのIJServerクラスタ(IJServerA、IJServerB)で構成しています。
IJServerAにはapl01、IJServerBにはapl02のWebアプリケーションを配備しています。
IJServerAを停止するため、振り分け対象からはずして運用します。
ijsdispatchcont OFF 123.123.123.110:9000
振り分け対象がIJServerAだけだったapl01は処理不可となります。apl02は変わらずIJServerBでの処理が可能です。
※)apl01のように振り分け先が1つも存在しなくなった場合は、リクエスト時にHTTPステータスコード503(Service Temporarily
Unavailable)をWebブラウザへ返却します。
IJServerA復旧時には、以下のコマンドで振り分け対象に戻します。
ijsdispatchcont ON 123.123.123.110:9000
4.9.2 Webサーバコネクタの故障監視
注意
本機能は、以下の製品で使用可能です。
・ Interstage Application Server Enterprise Edition
・ Interstage Application Server Standard-J Edition
・ Interstage Application Server Enterprise Edition同梱のWeb Package
(Standard-J Edition同梱のWeb Packageでは、本機能は使用できません。)
- 280 -
64bit版の製品では、Web Packageを提供していません。
IJServerクラスタとWebサーバをそれぞれ別のサーバマシンに分離して負荷分散運用を行う場合に、分散先のIJServerク
ラスタマシンやWebコンテナの稼動状況を監視し、故障したIJServerクラスタマシンやWebコンテナを自動的に振り分けの
対象から除外することや、故障から復旧したIJServerクラスタマシンやWebコンテナを自動的に振り分けの対象に戻すこ
とができます。
Webサーバコネクタの故障監視機能によって振り分けの対象から除外されたIJServerクラスタマシンやWebコンテナに対
しては、Webサーバコネクタがリクエストの振り分けを抑止します。
故障監視方式
故障監視機能には、以下の2種類の故障監視方式があります。
ping監視
IJServerクラスタマシンのIPアドレスに対してping(ICMP ECHO)を発行し、応答(ICMP ECHO REPLY)の有無によって、
稼動状況を監視します。
例えば、上図のように、故障監視機能はマシン1とマシン2のIPアドレスに対して定期的(例えば60秒ごと)にpingを発
行し、応答があるかどうかを監視します。マシン1のハード故障などによってpingの応答がなくなると、自動的に振り分
けの対象から除外され、Webサーバコネクタはマシン1へのリクエストの振り分けを停止します。
故障したマシンを修理して、再びpingの応答が返るようになると、自動的に振り分けの対象に戻され、Webサーバコネ
クタは再びマシン1へリクエストの振り分けを開始します。
ポート監視
Webコンテナがリクエストを受け付けるTCPポートに対して、socketのconnectによるTCPコネクションの接続可否によっ
て、Webコンテナの稼動状況を監視します。
- 281 -
例えば、上図のように、故障監視機能はマシン1とマシン2上でオープンされているWebコンテナがリクエストを待ち受
けているTCPポートに対して定期的(例えば60秒ごと)にconnectを行い、接続できるかどうかを監視します。マシン1の
IJServerAの停止などによりWebコンテナがリクエストを待ち受けるTCPポートがクローズし、connectによるTCPコネク
ション接続ができなくなると、自動的に振り分け対象から除外され、Webサーバコネクタは、マシン1のIJServerAのWeb
コンテナへのリクエストの振り分けを停止します。
IJServerAを起動して、再びconnectによるTCPコネクション接続ができるようになると、自動的に振り分けの対象に戻さ
れ、Webサーバコネクタは再びマシン1のIJServerAのWebコンテナへのリクエストの振り分けを開始します。
事前準備
故障監視機能を使用する場合には、事前に以下の設定が必要です。
IJServerクラスタとWebサーバを分離して運用する場合の手順の実施
故障監視機能は、IJServerクラスタとWebサーバを分離して運用する構成の場合だけ使用できます。Webサーバ用マ
シンのInterstage管理コンソールで、[システム] > [環境設定]タブ > [Servletサービス詳細設定] > [Webサーバとワー
クユニットを同一のマシンで運用する]で[運用しない]を選択します。また、isj2eeadminコマンドを使用して設定するこ
ともできます。詳細は、「リファレンスマニュアル(コマンド編)」を参照してください。
設定項目
故障監視機能の設定は、[Webサーバ] > 「Webサーバ名」 > [Webサーバコネクタ] > [故障監視設定]タブで行います。
また、isj2eeadminコマンドを使用して設定することもできます。詳細は、「リファレンスマニュアル(コマンド編)」を参照して
ください。
以下の設定項目があります。
項目名
故障監視方式
意味
以下のいずれかの監視方法を選択します。
・ 使用しない
故障監視機能を使用しません。
・ ping監視
IJServerクラスタマシンの稼動状況をpingで行います。
・ ポート監視
IJServerクラスタマシンの稼動状況をpingで行うと同時に、Webコン
テナの稼動状況をconnectで行います。
故障監視間隔
ping監視またはポート監視による稼動状況の監視を実施する間隔を設
定します。
応答待ち時間
IJServerクラスタマシンにpingまたはconnectを発行してから、応答が返る
までの待ち時間を設定します。
待ち時間を超えても応答がなかった場合、再度、故障時のリトライ回数
- 282 -
項目名
意味
に設定した回数のpingまたはconnectを発行し、そのすべてに応答がな
かった場合に故障と判断されます。
故障時のリトライ回数
IJServerクラスタマシンにpingまたはconnectを発行してから、応答待ち時
間を超えても応答がなかった場合のリトライ回数を設定します。
起動待ち時間
Webサーバコネクタ起動時に、故障監視機能が未起動の場合、故障監
視機能の起動待ちをする時間を設定します。
この時間を超えても故障監視機能が起動しなかった場合、Webサーバ
コネクタは故障監視機能を使用せずに動作します。
故障監視機能を使用せずに動作する場合、Webサーバコネクタは、クラ
イアントからのリクエストを、故障中のIJServerクラスタマシンやWebコンテ
ナに振り分けてしまうことがあります。
運用準備の具体例
以下のような運用を行う場合について、具体的な運用手順例を説明します。
・ 2台のIJServerクラスタマシンに負荷分散を行う構成で、IJServerクラスタマシンの稼動状況を監視する
・ 2台のIJServerクラスタマシンに負荷分散を行う構成で、IJServerクラスタマシンの稼動状況およびWebコンテナの稼
動状況を監視する
運用準備の具体例1
2台のIJServerクラスタマシンに負荷分散を行う構成で、IJServerクラスタマシンの稼動状況を監視する例を示します。
条件
サーバマシンA(IPアドレス:172.16.30.1)
Webサーバを運用
サーバマシンB(IPアドレス:172.16.30.2)
IJServerクラスタを運用
サーバマシンC(IPアドレス:172.16.30.3)
IJServerクラスタを運用
設定手順
1. サーバマシンBでIJServerクラスタを作成します。
2. サーバマシンCでIJServerクラスタを作成します。
3. サーバマシンAのInterstage管理コンソールで、[Webサーバ] > 「Webサーバ名」 > [Webサーバコネクタ] > [新規
作成]タブを選択し、以下の設定内容の接続先情報を作成します。
項目名
設定値例
ワークユニット名
MyIJServer
ServletコンテナのIPアドレス:ポート番号
172.16.30.2:28090
172.16.30.3:28090
4. サーバマシンAのInterstage管理コンソールで、[Webサーバ] > 「Webサーバ名」 > [Webサーバコネクタ] > [故障
監視設定]タブを選択し、以下の設定内容で故障監視機能を設定します。
項目名
設定値例
故障監視方式
ping監視
故障監視間隔
60
応答待ち時間
10
- 283 -
項目名
故障時のリトライ回数
設定値例
3
5. サーバマシンAのInterstage管理コンソールで、[サービス] > [Webサーバ] > 「Webサーバ名」 > [状態]タブを選択
し、Webサーバを再起動してください。
運用準備の具体例2
2台のIJServerクラスタマシンに負荷分散を行う構成で、IJServerクラスタマシンの稼動状況およびWebコンテナの稼動状
況を監視する例を示します。
条件
サーバマシンA(IPアドレス:172.16.30.1)
Webサーバを運用
サーバマシンB(IPアドレス:172.16.30.2)
IJServerクラスタを運用
サーバマシンC(IPアドレス:172.16.30.3)
IJServerクラスタを運用
設定手順
1. サーバマシンBでIJServerクラスタを2つ作成します。
2. サーバマシンCでIJServerクラスタを2つ作成します。
3. サーバマシンAのInterstage管理コンソールで、[Webサーバ] > 「Webサーバ名」 > [Webサーバコネクタ] > [新規
作成]タブを選択し、以下の設定内容の、2つの接続先情報を作成します。
項目名
設定値例
ワークユニット名
MyIJServer1
ServletコンテナのIPアドレス:ポート番号
172.16.30.2:28090
172.16.30.3:28090
項目名
設定値例
ワークユニット名
MyIJServer2
ServletコンテナのIPアドレス:ポート番号
172.16.30.2:28091
172.16.30.3:28091
4. サーバマシンAのInterstage管理コンソールで、[Webサーバ] > 「Webサーバ名」 > [Webサーバコネクタ] > [故障
監視設定]タブを選択し、以下の設定内容で故障監視機能を設定します。なお、ポート監視を選択した場合の監
視先は、3の手順の「ServletコンテナのIPアドレス:ポート番号」で設定したすべてのIPアドレス:ポート番号となります。
項目名
設定値例
故障監視方式
ポート監視
故障監視間隔
60
応答待ち時間
10
故障時のリトライ回数
3
5. サーバマシンAのInterstage管理コンソールで、[サービス] > [Webサーバ] > 「Webサーバ名」 > [状態]タブを選択
し、Webサーバを再起動してください。
稼動状況の表示
Webサーバマシンで、以下のコマンドを使用することにより、分散先のIJServerクラスタの稼動状況を表示できます。コマ
ンドの詳細は、「リファレンスマニュアル(コマンド編)」を参照してください。
- 284 -
svmondspstat
すべてのIJServerクラスタの状態を表示する
オプション指定なしでsvmondspstatコマンドを実行することにより、すべての分散先についてのIJServerクラスタの稼動状
況が表示されます。
条件
- IJServerクラスタ名がMyIJServer1とMyIJserver2の2つのIJServerクラスタへの振り分け
- 振り分け先のServletコンテナのIPアドレス:ポート番号が以下の4つ
- 172.16.30.2:9000
- 172.16.30.3:9000
- 172.16.30.2:9001
- 172.16.30.3:9001
- 故障監視方式がポート監視
- MyIJServer2の172.16.30.2:9001だけ故障中
表示例
上記の条件の場合、以下のように表示されます。
Status IP Address : Port Number : WorkUnit Name : WebServer Name
--------------------------------------------------------------------ACTIVE 172.16.30.2 : 9000
: MyIJServer1
: FJapache
ACTIVE 172.16.30.3 : 9000
: MyIJServer1
: WEB001
DOWN
172.16.30.2 : 9001
: MyIJServer2
: FJapache
ACTIVE 172.16.30.3 : 9001
: MyIJServer2
: WEB001
特定のIJServerクラスタの状態だけを表示する
以下のように、Webサーバコネクタの「ワークユニット名」で設定したワークユニット名を指定してコマンドを実行することに
より、特定のIJServerクラスタの稼動状況だけを表示できます。
実行例
svmondspstat -i MyIJServer1
条件
- IJServerクラスタ名がMyIJServer1とMyIJserver2の2つのIJServerクラスタへの振り分け
- 振り分け先のServletコンテナのIPアドレス:ポート番号が以下の4つ
- 172.16.30.2:9000
- 172.16.30.3:9000
- 172.16.30.2:9001
- 172.16.30.3:9001
- 故障監視方式がポート監視
- MyIJServer1のServletコンテナがすべて稼働中
表示例
上記の条件の場合、以下のように表示されます。
- 285 -
Status IP Address : Port Number : WorkUnit Name : WebServer Name
--------------------------------------------------------------------ACTIVE 172.16.30.2 : 9000
: MyIJServer1
: FJapache
ACTIVE 172.16.30.3 : 9000
: MyIJServer1
: WEB001
留意点
故障監視機能を使用する場合、下記の留意点があります。
・ Webサーバコネクタの「ServletコンテナのIPアドレス:ポート番号」の項目で設定したすべての分散先を、故障監視設
定で設定した条件で監視します。IJServerクラスタごとに別条件での監視を行うことはできません。
・ WebサーバマシンとIJServerクラスタマシンの間にファイアウォールを設置する場合、ファイアウォールで、Webサー
バマシンのIPアドレスから分散先のIJServerクラスタマシンのIPアドレス宛てにpingの通過を許可する設定を行う必要
があります。
・ WebサーバマシンとIJServerクラスタマシンの間の経路に設置されたネットワーク機器の高負荷などによってpingまた
はconnectの応答の遅延やロストが発生すると、IJServerクラスタが実際には稼動状態であっても故障と判定されてし
まう場合があります。WebサーバとIJServerクラスタマシンの経路の状態に沿って、「応答待ち時間」や「故障時のリト
ライ回数」に適切な値を設定してください。
・ WebサーバマシンとIJServerクラスタマシンの間にIPCOMを設置して負荷分散を行う場合、本機能を使用することは
できません。
・ 故障監視機能を有効にした場合や故障監視機能の設定変更を行った場合、Webサーバを起動または再起動した
時点で設定変更された内容で振り分け先の故障監視を開始します。
また、設定変更後に、Webサーバの再起動を行わない場合、クライアントからの最初のアクセスが発生した時点で、
設定変更された内容で振り分け先の故障監視を開始します。
・ Webサーバの起動直後から、故障監視機能によって故障と判定されるまでの間、故障中の振り分け先にリクエストが
振り分けられてしまうことがあります。
振り分け先の状態の取得開始から、故障と判定されるまでの時間は、「応答待ち時間×故障時のリトライ回数」です。
・ 故障監視機能を有効にした後や故障監視機能の設定変更を行った後、Webサーバの再起動を行わなかった場合、
クライアントからの最初のアクセスが発生した時点で振り分け先が故障していても、故障監視機能によって故障と判
定されるまでの間、故障中の振り分け先にリクエストが振り分けられてしまうことがあります。
振り分け先の状態の取得開始から、故障と判定されるまでの時間は、「応答待ち時間×故障時のリトライ回数」です。
・ 実際に振り分け先が故障してから、故障監視機能によって故障と判定されるまでの間、故障中の振り分け先にリクエ
ストが振り分けられてしまうことがあります。
実際に振り分け先が故障してから、故障と判定されるまでの時間は、「故障監視間隔+応答待ち時間×故障監視の
リトライ回数」以内です。
・ 実際に振り分け先が故障してから、故障監視機能によって故障と判定されるまでの間に、故障中の振り分け先にリク
エストが振り分けられた場合、そのリクエストについては、応答が1分程度以上遅延するか、またはWebブラウザから
「500 Internal Server Error」のステータスコードやエラーメッセージが通知されます。
この場合、故障検出が行われた後に再度アクセスすることにより、稼動中の振り分け先にリクエストが振り分けられます。
・ 故障中の振り分け先が復旧してから、故障監視機能によって復旧と判断されるまでの間は、復旧した振り分け先にリ
クエストは振り分けられません。
実際に振り分け先が復旧してから、復旧と判定されるまでの時間は、「故障監視間隔」以内です。
・ 故障しているサーバが存在する状態で、故障監視する設定を行うか、または故障監視条件を変更するか、または監
視対象のサーバを動的に追加した場合、故障していたサーバの復旧時に、いったん故障検出のメッセージが出力
され、すぐに復旧検出のメッセージが表示される場合があります。
4.10 Java EEアプリケーションクライアントの運用
Java EEアプリケーションクライアントの運用について説明します。
4.10.1 Java EEアプリケーションクライアントの環境設定
- 286 -
クラスパスの設定
Java EEアプリケーションクライアントが動作するためにクラスパスを追加する必要がある場合には、環境変数APPCPATH
に追加するクラスパスを指定してください。複数設定する場合には、環境変数CLASSPATHと同様にWindowsの場合に
は「;」区切りで設定し、Solaris/Linuxの場合には「:」区切りで設定してください。
例
APPCPATH=C:\util\MyUtil.jar;C:\test\TestTool.jar
Javaアプリケーションの起動コマンドのオプション設定
アプリケーションクライアントコンテナを起動する場合、通常のJavaアプリケーションと同様に内部的にJavaアプリケーショ
ンの起動コマンド(javaコマンド)を使用します。
このJavaアプリケーションの起動コマンドで指定可能なオプション(-Xmxオプションなど)を指定する場合には、環境変数
VMARGSを指定してください。
例
VMARGS= -Xmx512m
複数のオプションを設定する場合、以下のように指定してください。
例
VMARGS=-Xmx512m -Xms128m
VMARGS="-Xmx512m -Xms128m"
注意
・ -classpathオプションは指定しないでください。クラスパスを設定する場合には、環境変数APPCPATHに指定してくだ
さい。
・ 空白を含むシステムプロパティは設定できません。
・ 以下のように不当な値を指定した場合、javaコマンドのエラーが発生します。オプションの指定方法はjavaコマンドの
説明を参照してください。
無効なオプションを指定した場合
>set VMARGS=-option
>appclient -client TestApplicationClient.jar -xml sun-acc.xml
Unrecognized option: -option
Could not create the Java virtual machine.
定義設定
アプリケーションクライアントコンテナの環境設定を行う場合、Interstage ACC deployment descriptor(sun-acc.xml)ファイル
に必要な設定を行います。以下にInterstage ACC deployment descriptor(sun-acc.xml)ファイルに接続するサーバの情報
を定義した場合の例を記載します。詳細は、「3.2.3 Interstage deployment descriptor」を参照してください。
- 287 -
<?xml version="1.0" encoding="UTF-8"?>
<client-container>
<target-server name="server1" address="myhost" port="33700"/>
</client-container>
作成したInterstage ACC deployment descriptor(sun-acc.xml)は、appclientコマンド実行時に-xmlオプションで指定してく
ださい。-xmlオプションを指定しなかった場合には、以下のファイルを参照します。
[Java EE共通ディレクトリ]\domains\interstage\config\sun-acc.xml
[Java EE共通ディレクトリ]/domains/interstage/config/sun-acc.xml
アプリケーションクライアントコンテナによるネーミングサービス接続に、ロードバランス機能を利用することができます。
ロードバランス機能の詳細は「4.23 IIOP通信におけるリクエストの振り分け制御」を参照してください。
Javaバージョンの確認
アプリケーションクライアントが利用するJavaのバージョンを確認するためには、環境変数VMARGSに「-version」を設定
した後、appclientコマンドを実行してください。Javaのバージョンがコンソールに表示されます。
例
> set VMARGS=-version
> appclient
4.10.2 Java EEアプリケーションクライアントの運用操作
Java EEアプリケーションクライアントを運用する場合、以下のように操作してください。
1. クライアントJARファイルの生成
2. EARファイルの生成
3. 配備
4. クライアントスタブJARファイルをダウンロード
5. Java EEアプリケーションクライアントの実行
以下に各操作について説明します。
1. クライアントJARファイルの生成
以下のファイル構成でクライアントJARファイルを生成してください。
ファイル構成
説明
クラスファイル
Java EEアプリケーションクライアントのクラスファイル
METAINF
MANIFEST.MF
マニフェストファイル
application-client.xml
deployment descriptorファイル
sun-application-client.xml
Interstage deployment descriptorファイル
- 288 -
Java EEアプリケーションクライアントのクラスファイル
Java EEアプリケーションクライアントには、メインクラスが必要です。メインクラスとメインクラスから利用するクラスをクラ
イアントJARファイルに含めてください。
メインクラスの作成方法については「3.1.6 クライアントアプリケーションの作成方法」を参照してください。
マニフェストファイル
マニフェストファイルにはJava EEアプリケーションクライアントのメインクラスを定義してください。メインクラスを定義し
なかった場合、アプリケーションクライアントコンテナ起動時にappclientコマンドのオプションでメインクラスを指定する
必要があります。
マニフェストファイルの定義方法については「3.1.6 クライアントアプリケーションの作成方法」を参照してください。
deployment descriptorファイル
Java EEアプリケーションクライアントのdeployment descriptorファイル(appliaction-client.xml)を定義します。このファイ
ルは必須ではないため、必要な場合だけ作成してください。詳細は、Java EE規約を参照してください。
Interstage deployment descriptorファイル
IJServerクラスタではInterstage deployment descriptor (sun-appliaction-client.xml)を定義することによって、Java EEア
プリケーションクライアントの動作を拡張することが可能です。このファイルは必須ではないため、必要な場合だけ作
成してください。詳細は、「3.2.3 Interstage deployment descriptor」を参照してください。
2. EARファイルの生成
Java EEアプリケーションクライアントから参照するアプリケーションがある場合、必要に応じて参照するモジュールと合わ
せてEARファイルにパッケージしてください。
3. 配備
ファイルをIJServerクラスタに配備してください。
4. クライアントスタブJARファイルをダウンロード
配備時に生成されるクライアントスタブJARファイルをダウンロードしてください。
JARファイルのダウンロードには以下の方法があります。
・ asadminコマンドのdeployサブコマンドでEARファイルを配備する際に、「--retrieve」オプションを指定してダウンロー
ドする
・ asadminコマンドのget-client-stubsサブコマンドでダウンロードする
・ Interstage Java EE管理コンソールからダウンロードする
クライアントスタブJARファイルのダウンロードは配備担当者の権限が必要です。配備担当者がダウンロードした後、利用
ユーザへクライアントスタブJARファイルを配布してください。
なお、クライアントスタブJARファイルの構成は、配備したモジュールによってそれぞれ下記のようになります。
earファイルの場合は、クライアントスタブJARファイルに下記を内包します。
・ サブモジュール(ejb-jarファイル、および、App Clientファイル)
・ サブモジュール内のマニフェストファイルのクラスパスに定義されたライブラリ
・ application.xmlのlibrary-directoryタグで指定したディレクトリに格納されたライブラリ、または、library-directoryタグを
省略した場合は、earファイルのlibディレクトリに格納されたライブラリ
・ 配備時に更新された、earファイル、およびサブモジュールのdeployment descriptor
ejb-jarファイル、または、App Clientファイルの場合は、配備モジュール内の資産と、配備時に更新されたdeployment
descriptorを内包します。
なお、配備時に更新されたdeployment descriptorを内包するため、配備したアプリケーションよりファイルサイズが増加す
る場合があります。
asadminコマンドの詳細は、「リファレンスマニュアル(コマンド編)」-「asadmin」を参照してください。
- 289 -
5. Java EEアプリケーションクライアントの実行
アプリケーションクライアントコンテナを起動してJava EEアプリケーションクライアントを実行する場合にはappclientコマン
ドを使用します。以下のようにダウンロードしたクライアントスタブJARファイルを指定してappclientコマンドを実行してくだ
さい。以下はクライアントスタブJARファイルがMyApplicationClient.jarファイルの場合です。appclientコマンドの詳細は、
「リファレンスマニュアル(コマンド編)」-「appclient」を参照してください。
appclient -client MyApplicationClient.jar -xml sun-acc.xml
Java EEアプリケーションクライアントがInjectionExceptionにより処理が中断する場合、Dependency Injectionに失敗して
います。「トラブルシューティング集」-「Dependency Injection失敗時の異常」を参照して原因を特定し対処してください。
各種リソースにアクセスするJava EEアプリケーションクライアントが停止した場合、各リソースの接続プールでプーリング
されている接続の解放処理が行われません。
JDBCリソースの接続に対して解放処理が行われなかった場合の影響については、データベースもしくはJDBCドライバ
のマニュアルを参照してください。Java DBを使用している場合、停止したタイミングでシステム資源は回収されるため問
題ありません。
4.11 Webサービスを利用する場合の手順
Interstage Java EEでは、APIにJAX-WSを使用し、Web Services for Java EE 1.2に従って作成されたWebサービスアプリ
ケーションをIJServerクラスタに配備して運用できます。
注意
JAX-WSのjavax.xml.ws.WebServiceProviderアノテーションを使用したWebサービスアプリケーションについては、これら
の運用機能は使用できない場合があります。
Webサービスの運用環境
JAX-WSを使用して作成されたWebサービスアプリケーションは、IJServerクラスタ上で動作します。
IJServerクラスタを作成し、Webサービスアプリケーションを配備してください。Webサービスアプリケーションの開発につ
いては「3.1.2 Webサービスアプリケーションの開発」、「3.1.3 Webサービスクライアントアプリケーションの開発」、「3.1.4
Webサービスの通信で利用できるデータ型」を、配備については「4.11.1 Webサービスアプリケーションの配備」を参照し
てください。
また、運用環境のカスタマイズについては、「4.11.2 Webサービス運用環境のカスタマイズ」を参照してください。
注意
Webサービス機能を使用するにはJDKが必要です。JREでの運用はサポートされません。
4.11.1 Webサービスアプリケーションの配備
JAX-WSを使用して作成されたWebサービスアプリケーションは、IJServerクラスタに対して、通常のWAR、ejb-jar、EAR
モジュールと同様に配備します。配備方法については、「4.6 アプリケーションの配備」を参照してください。
また、プロキシを経由してWSDLファイルから参照されているリソースを取得する場合、Interstage Java EE DASサービス
が使用するjavaプロセスのシステムプロパティを設定する必要があります。
配備されたWebサービスの一覧を参照する
asadminコマンドのlist-componentsサブコマンドでアプリケーションの一覧を参照できます。Webサービスとして配備され
たアプリケーションは、配備されたモジュールのほかに、Webサービスとしても表示されます。
- 290 -
WebサービスのWSDLを参照・取得する
Webサービスアプリケーションを配備し有効にすると、ijwsimportコマンドでWSDLを取得できます。詳細は、「3.1.2 Web
サービスアプリケーションの開発」を参照してください。
WAR、ejb-jar、EARモジュールとしての情報取得・運用操作
配備されたWebサービスアプリケーションは、Webサービス固有の情報取得・運用操作の他に、通常のWAR、ejb-jar、
EARモジュールとしての一般的な情報取得・運用操作を行うことも可能です。
4.11.2 Webサービス運用環境のカスタマイズ
受信するリクエストメッセージサイズ(添付ファイルおよびSOAPメッセージ込み)の上限指定
下記の方法で、Webサービスで受け付けるリクエストのサイズ(添付ファイルおよびSOAPメッセージの合計)を制限できま
す。
Webサービスを運用するIJServerクラスタのJava VMオプションで、以下のシステムプロパティを指定してください。
プロパティ名
com.sun.xml.ws.transport.http.servlet.ServletConnectionImpl.maxRequestLength
指定値
処理を受け付ける最大のリクエストのサイズをbyte単位で指定してください。負の値、不正な値、またはint型の範囲を
超えた値が指定された場合は、制限は無効(無制限)になります。
例
IJServerクラスタ 「MyIJServer」で運用されるWebサービスで処理するリクエスト上限サイズを1Mbyte(1048576byte)に制限
する場合の設定例
>
asadmin
create-jvm-options
--target
MyIJServer
Dcom.sun.xml.ws.transport.http.servlet.ServletConnectionImpl.maxRequestLength=1048576
Command create-jvm-options executed successfully.
-
注意
処理されるリクエストサイズは、Webサーバによって制限される場合もあります。詳細は、「Interstage HTTP Server 運用ガ
イド」を参照してください。なお、上記の指定による制限は、Webサーバによる制限が無効な場合についても有効です。
Webサービス側で発生した例外のスタックトレースをクライアントへ返信する
原因の調査を迅速に行えるように、Webサービスまたはその運用環境で発生した例外のスタックトレースを、呼出元の
Webサービスクライアントに返信することができます。Webサービスを運用するIJServerクラスタのJavaVMオプションで、
以下のシステムプロパティを指定してください。
プロパティ名
com.sun.xml.ws.fault.SOAPFaultBuilder.enableCaptureStackTrace
指定値
任意
例
IJServerクラスタ 「MyIJServer」で運用されるWebサービスへのリクエスト元へ、例外のスタックトレースを返信する設定例
- 291 -
>
asadmin
create-jvm-options
--target
Dcom.sun.xml.ws.fault.SOAPFaultBuilder.enableCaptureStackTrace=true
Command create-jvm-options executed successfully.
MyIJServer
-
Webサービスを監視する
Web サービス処理の統計情報を追跡することができます。監視の設定は、管理コンソールまたは asadmin コマンドの
configure-webservice-management を使用して行ってください。
3つのWeb サービスの監視レベル「LOW」、「HIGH」、「OFF」をサポートしています。詳細は、「リファレンスマニュアル(コ
マンド編)」-「configure-webservice-managementサブコマンド」を参照してください。
注意
「HIGH」は開発時および呼量が極めて少ないシステムでのトラブル調査用です。呼量が多いWebサービスでは、本設定
を行うと性能の低下を招く場合がありますので指定しないでください。
「HIGH」を設定した場合には、SOAP通信メッセージがメモリに保存されるようになるため、保持するSOAP通信メッセージ
のサイズ分のメモリが必要です。Webサービスで受け付けるリクエストのサイズを制限し、サイズの大きいリクエスト受信時
にメモリ不足が発生しないようにしてください。詳細は、「受信するリクエストメッセージサイズ(添付ファイルおよびSOAP
メッセージ込み)の上限指定」を参照してください。
4.12 Webサービスクライアントを利用する場合の手順
Webサービスクライアントを利用する場合の手順について説明します。
4.12.1 Webサービスクライアントの運用環境
JAX-WSを使用して作成されたWebサービスクライアントアプリケーションは、以下の環境で運用できます。
IJServerクラスタ
WebアプリケーションやEJBアプリケーションなどのJava EEアプリケーションとして作成されたWebサービスクライアン
トアプリケーションを運用できます。
アプリケーションクライアントコンテナ
Java EEアプリケーションクライアントとして作成されたWebサービスクライアントアプリケーションを運用できます。
注意
アプリケーションクライアントコンテナが動作するためには、クライアントアプリケーションの処理に関わらず、JNDI接続を
一律必要とします。このため、Webサービスアプリケーションをアプリケーションクライアントコンテナ上で動かす場合、Web
サービスのアクセス先URLに関わらず、アプリケーションクライアントコンテナが接続可能なIIOPリスナーをInterstage ACC
deployment descriptorのtarget-serverタグに指定してください。
アプリケーションクライアントコンテナの環境設定については、「4.10.1 Java EEアプリケーションクライアントの環境設定」
を参照してください。
4.12.2 Webサービスクライアントの実行
WSDLのURLのカスタマイズ
Webサービスクライアントは実行時に、ijwsimportコマンドで指定されたWSDLのURLにアクセスします。
Webサービスクライアントの実行時に、WSDLのURLがijwsimport実行時と異なる場合は、以下の方法でURLを指定して
ください。
・ deploment descriptor(web.xml,ejb-jar.xml,application-client.xml)のservice-ref/wsdl-fileタグに定義する
- 292 -
・ Webサービスクライアントアプリケーションで、@javax.xml.ws.WebServiceRefアノテーションのwsdlLocation属性に定
義する
両方定義した場合は、deploment descriptorの定義が優先されます。
WebサービスのURLのカスタマイズ
javax.xml.ws.service.endpoint.addressプロパティによって、WebサービスのURLをカスタマイズできます。
4.13 JNDIの環境設定
JNDIの環境設定について説明します。
4.13.1 環境変数の設定
JNDIサービスプロバイダを使用する場合に設定が必要な環境変数について以下に説明します。データベースにアクセ
スする場合には、「4.15 データベースの環境設定」も参照してください。
IJServerクラスタとアプリケーションクライアントコンテナを使用する場合
環境変数の設定は不要です。動作するために必要な環境設定はコンテナが起動する際に自動的に設定されます。
スタンドアロンクライアントの場合
javaコマンドでJava SEスタンドアロンアプリケーションを実行する場合、以下のJARファイルをクラスパスに設定してくださ
い。
C:\Interstage\F3FMisjee\lib\appserv-rt.jar
C:\Interstage\F3FMisjee\lib\javaee.jar
/opt/FJSVisjee/lib/appserv-rt.jar
/opt/FJSVisjee/lib/javaee.jar
上記のクラスパスの設定に加えてJava SEスタンドアロンアプリケーションで各種リソースのオブジェクトを参照する場合に
は、以下のJARファイルにクラスパスの設定が必要です。
C:\Interstage\F3FMisjee\lib\appserv-admin.jar
C:\Interstage\F3FMisjee\lib\appserv-ws.jar
C:\Interstage\F3FMisjee\lib\install\applications\jmsra\imqjmsra.jar
/opt/FJSVisjee/lib/appserv-admin.jar
/opt/FJSVisjee/lib/appserv-ws.jar
/opt/FJSVisjee/lib/install/applications/jmsra/imqjmsra.jar
4.13.2 初期コンテキスト生成時の設定
アプリケーションでJNDI APIを使用する場合、まず、javax.naming.InitialContextクラスをnewして初期コンテキストを生成
します。初期コンテキストにはContextインタフェースが実装され、名前を解決する開始点が提供されます。
初期コンテキストが生成されると、コンストラクタに渡される環境パラメタによって環境が初期化されますが、この環境パラ
メタの指定値は使用するJNDIサービスプロバイダによって異なります。このため、プロパティをアプリケーション内で指定
するとアプリケーションの移植性が損なわれます。Java EEではこの問題を解決するため、コンテナ起動時に自動的に必
要な環境設定を行うことでアプリケーションの汎用性を向上しています。
- 293 -
IJServerクラスタまたはアプリケーションクライアントコンテナの場合
コンテナが自動的に環境設定するため、JNDIの環境プロパティの指定は必要ありません。
IJServerクラスタまたはアプリケーションクライアントコンテナを起動する時にクラスパスに自動設定するappserv-rt.jarファイ
ルに、Interstage Java EEサービスが提供するJNDIサービスプロバイダ用に編集されたjndi.propertiesファイルを内包して
います。これによりJava EEコンポーネント内でファクトリを指定しなくてもIJServerクラスタ上のネーミングサービスにアクセ
スできます。
スタンドアロンクライアントの場合
スタンドアロンクライアントで動作させる場合には、appserv-rt.jarファイルを優先的に環境変数クラスパスに設定することで
プロパティが自動設定されます。また、明示的にJNDIの環境プロパティを指定する場合には以下を指定してください。
プロパティ名
値
説明
java.naming.factor
y.initial (注)
com.sun.enterprise.naming.S
erialInitContextFactory
IJServerクラスタのネーミングサービスにアク
セスするための標準の初期コンテキストファ
クトリです。
java.naming.factor
y.url.pkgs
com.sun.enterprise.naming
URL コンテキストファクトリをロードする時に
使用するパッケージ接頭辞のリストを指定す
るための、プロパティです。
注) java.naming.factory.initialには以下のファクトリを指定しても動作しますが、動作保証しません。上記のプロパティを
使用してください。
値
説明
com.sun.jndi.cosnaming.CNCtxFactory
CosNaming用の初期コンテキストファクトリです。
com.sun.appserv.naming.S1ASCtxFactory
ロードバランス用の初期コンテキストファクトリです。
4.13.3 クライアントからサーバに接続する場合の設定
クライアントからサーバのネーミングサービスにリモート接続をする場合、接続先をJNDIの環境プロパティに指定する必
要があります。リモートサーバにはIIOP通信するため、接続先のホスト名とIIOPリスナーのポート番号を設定する必要が
あります。
ポート番号は以下の定義項目から確認できます。Interstage Java EE管理コンソールでも確認できます。
・ ${clusterName_instanceName_configName}.iiop-service.iiop-listener.${iiop-listener-id}.port
初期設定ではこの設定はシステムプロパティのIIOP_LISTENER_PORTを参照しているため、以下にポート番号が設定
されています。
・ ${instanceName}.system-property.IIOP_LISTENER_PORT
IJServerクラスタの場合
IJServerクラスタから他プロセスまたはリモートサーバのネーミングサービスに登録されたEnterprise JavaBeanにアクセス
する場合には、以下の2つの方法があります。
1. 他ネーミングサービス連携機能を使用する(推奨)
他ネーミングサービス連携機能を使用して、クラスタのJNDIサービスの設定で外部ネーミングサービスURLに他プ
ロセスまたはリモートサーバのホスト名、IIOPリスナーのポート番号を指定する必要があります。定義方法の詳細は
「6.4.2 JNDIサービスの定義項目」を参照してください。
2. Interstage deployment descriptorファイルにINSの規則を使用して接続先を指定する
INSの規則を使用して、他プロセスまたはリモートサーバのホスト名、IIOPリスナーのポート番号、JNDI名をInterstage
deployment descriptorファイルに指定する必要があります。定義方法の詳細は「2.13.2 環境ネーミングコンテキスト
(Environment Naming Context)」を参照してください。
- 294 -
アプリケーションクライアントコンテナの場合
アプリケーションクライアントコンテナを使用する場合には、Interstage deployment descriptor (sun-acc.xml)ファイルの
<target-server>タグに接続先のサーバを指定してください。name属性に一意の名前を指定し、addresss属性には接続先
のホスト名またはIPv4のIPアドレス、port属性には接続するIIOPリスナーのポート番号を指定してください。
例
<client-container>
<target-server name="server1" address="host1" port="23700"/>
</client-container>
Interstage deployment descriptor (sun-acc.xml)ファイルの詳細は、「3.2.3 Interstage deployment descriptor」を参照してく
ださい。
スタンドアロンクライアントの場合
スタンドアロンクライアントの場合は、ロードバランス機能を使用してください。詳細は、「4.23 IIOP通信におけるリクエスト
の振り分け制御」を参照してください。
4.13.4 オブジェクトリファレンスのキャッシュの設定
サーバー環境でオブジェクトリファレンスのキャッシュ機能を使用する場合、JNDIサービスのネーミングサービス連携設
定において、"オブジェクトリファレンスキャッシュ"を有効にしてください。
クライアント環境でオブジェクトリファレンスのキャッシュ機能を使用する場合、以下の
com.fujitsu.appserv.jndi.remote.object.cacheプロパティを指定します。
プロパティ名
com.fujitsu.appserv.jndi.remote.object.cache
値
・ true
・ false(デフォルト)
大文字小文字を区別しません。true
とfalse以外の文字が指定された場
合にはfalseが指定されたと見なしま
す。
説明
一度接続先からlookupしたオブジェ
クトをクライアントプロセスにキャッシュ
するかを指定します。trueを指定す
るとキャッシュして再利用します。
falseを指定するとキャッシュせず、参
照されるたびにリモートサーバから
オブジェクトを参照します。
アプリケーションクライアントコンテナの設定
Interstage ACC deployment descriptor(sun-acc.xml)にproperty要素を定義してプロパティを指定してください。
例
<client-container>
<target-server name="server1" address="host1" port="23700"/>
<property name="com.fujitsu.appserv.jndi.remote.object.cache" value="true"/>
</client-container>
スタンドアロンクライアントの設定
システムプロパティにcom.fujitsu.appserv.jndi.remote.object.cacheを指定してください。
例
-Dcom.fujitsu.appserv.jndi.remote.object.cache=true
- 295 -
4.14 リソース定義の準備
リソース定義の準備について説明します。
4.14.1 JMSを利用する場合の手順
JMSを使用するには、各種JMSリソースの作成と合わせてブローカの起動が必要です。詳細は、「4.16 JMSの運用方法」
を参照してください。
4.14.2 JavaMailを利用する場合の手順
ここではJavaMailを利用する場合に必要な操作について説明します。
アプリケーションの作成
メールを送信/受信するアプリケーションを作成します。詳細は、JavaMail 1.4の仕様を参照してください。
メールサーバの設定
JavaMailアプリケーションを使用してメールの送受信を行うには、メール送信用のSMTPサーバ、およびメール受信用の
POP3サーバ、またはIMAPサーバが必要となります。
メールの送信、および受信用のサーバの環境設定を行ってください。詳細は、メールサーバのマニュアルを参照してくだ
さい。
JavaMailセッションの作成、参照、更新、削除
JavaMailセッションの作成、参照、更新、削除は、Interstage Java EE管理コンソールまたはasadminコマンドで行います。
asadminコマンドを使用する場合、操作によって以下のサブコマンドを使用します。
操作内容
サブコマンド名
JavaMailセッションの作成
create-javamail-resourceサブコマンド
JavaMailセッションの参照
list-javamail-resourcesサブコマンド
getサブコマンド
JavaMailセッションの更新
setサブコマンド
JavaMailセッションの削除
delete-javamail-resourceサブコマンド
操作方法の詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」
を参照してください。
4.14.3 JDBCを利用する場合の手順
JDBCを利用する場合には、利用するデータベースに合わせて環境設定が必要です。詳細は、「4.15 データベースの環
境設定」を参照してください。
4.14.4 コネクタを利用する場合の手順
コネクタを利用するには、コネクタモジュールをIJServerクラスタに配備し、リソースアダプタの種別に応じた各種リソース
の定義が必要です。詳細は、「4.17 コネクタの運用方法」を参照してください。
4.14.5 その他リソースを利用する場合の手順
IJServerクラスタに定義されたリソースまたは配備されたEnterprise JavaBean以外に、ネーミングサービスで管理するリソー
スを独自に定義することもできます。
IJServerクラスタでローカルに管理できるリソースをカスタムリソースと呼びます。JNDI検索を指定して、IJServerクラスタプ
ロセス外で管理されているリソースを外部リソースと呼びます。これらのリソースはInterstage管理コンソール、またはasadmin
コマンドで定義できます。それぞれのリソースを使用する場合の定義方法を説明します。
- 296 -
4.14.5.1 カスタムリソースの定義方法
IJServerクラスタに定義されたリソースまたは配備されたEnterprise JavaBean以外に、ネーミングサービスで管理するオブ
ジェクトを独自に定義することもできます。これをカスタムリソースと呼びます。
カスタムリソースを定義する場合には以下のプロパティを指定する必要があります。
・ JNDI名
・ リソースタイプ
・ ファクトリクラス
・ 説明
・ 状態
また、指定したファクトリクラスで利用できる固有のプロパティを以下に定義することもできます。
・ 追加プロパティ
サーバーインスタンスは指定されたファクトリクラスに対してgetObjectInstanceメソッドを実行してインスタンスを生成します。
getObjectInstanceメソッドの第一引数にはjavax.naming.Referenceクラスのオブジェクトが渡され、このオブジェクトのフィー
ルドには以下のプロパティの値が設定されます。getObjectInstanceメソッドはjavax.naming.Referenceクラスのオブジェクト
からフィールドの値をgetメソッドで取得し、対応するオブジェクトを生成して返却します。
プロパティ
javax.naming.Refer
enceクラスのオブジェ
クトのフィールド
classFactory
ファクトリクラス
className
リソースタイプ
addrs
追加プロパティ。アドレス型(addrType)にプロパティ名、ア
ドレスの内容にプロパティ値が設定されます。
例
カスタムリソースのクラスとファクトリクラスの例を以下に記載します。
カスタムリソースのクラスの例
package com.mycompany;
public class Widget implements java.io.Serializable {
private String name;
public Widget() {
}
public Widget(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
ファクトリクラスの例
- 297 -
package com.mycompany;
import
import
import
import
import
java.util.Hashtable;
javax.naming.Name;
javax.naming.Context;
javax.naming.Reference;
javax.naming.StringRefAddr;
public class WidgetFactory implements javax.naming.spi.ObjectFactory {
public WidgetFactory() {
}
public Object getObjectInstance(Object obj,
Name name,
Context nameCtx,
Hashtable<?, ?> environment)
throws Exception {
Reference reference = (Reference)obj;
String className = reference.getClassName();
Widget widget = null ;
if( className.equals("com.mycompany.Widget") ) {
widget = new Widget() ;
}
StringRefAddr addrs = null;
if( widget != null ) {
if((addrs = (StringRefAddr)reference.get("name")) != null) {
String content = (String)addrs.getContent();
widget.setName(content) ;
}
}
return widget;
}
}
上記例の場合、カスタムリソースの各プロパティに以下を指定します。
プロパティ
値
JNDI名
任意の名前
リソースタイプ
com.mycompany.Widget
ファクトリクラス
com.mycompany.WidgetFactory
4.14.5.2 外部リソースの定義方法
カスタムリソースと同様にIJServerクラスタに定義されたリソースまたは配備されたEnterprise JavaBean以外に、ネーミング
サービスで管理するオブジェクトを独自に定義するリソースに外部リソースがあります。
外部リソースを定義する場合には以下を指定する必要があります。カスタムリソースとの違いはファクトリクラスが実装する
インタフェースとJNDI検索が指定できる点です。
・ JNDI名
・ リソースタイプ
・ ファクトリクラス
・ JNDI検索
- 298 -
・ 説明
・ 状態
カスタムリソースと異なり、外部リソースは外部リポジトリで管理されたオブジェクトをネーミングサービスに登録して管理で
きます。例えばJNDI検索に外部リポジトリの検索に使用する「ldap://ldap.umich.edu/o=umich,c=us」などのLDAP URLを
指定すると、指定した検索条件に該当するオブジェクトをネーミングサービスで管理できるようになります。
4.14.6 リソースの状態を変更する場合の手順
各種リソースはIJServerクラスタに対して状態を設定できます。状態は下記から選択します。
・ 有効
・ 無効
リソースを任意のIJServerクラスタで利用不可にしたい場合は、状態を無効に指定します。無効に指定したリソースはネー
ミングサービスに登録されないためアプリケーションから利用できません。
リソース作成時のデフォルトは、利用可能(有効)です。
リソースの状態は、以下の単位に設定できます。
・ 任意のIJServerクラスタ
・ Interstage Java EE DASサービス
・ すべてのIJServerクラスタやInterstage Java EE DASサービス
以下にリソースの状態を変更する手順を説明します。リソースは以下の2つの状態が両方とも「有効」の場合のみ利用で
きます。
・ リソース自体の状態(有効/無効)
・ ターゲットのリソースの状態(有効/無効)
Interstage Java EE管理コンソールを使用する方法
ツリービューから「リソース」を選択して、表示される名前の一覧から該当するリソース種類を選択してください。
リソース作成時に状態を指定する場合
1. 「新規...」を選択します。
2. リソースを利用不可にする場合は、「状態」の「有効」チェックボックスの選択を解除します。リソース作成時のデ
フォルトは、利用可能(有効)です。指定した状態に合わせて各ターゲットのリソースの状態が変更になります。
また、リソース自体の状態は、必ず有効の状態で定義されます。
リソースの状態を変更する場合
以下を実行することにより各ターゲットのリソースの状態が変更されます。また、この操作によって状態を有効に変更
すると、リソース自体の状態が無効の場合には自動的に有効に変更されます。
1. リソース名を選択します。
2. 「ターゲット」タブをクリックします。
3. ターゲット名を選択し「無効」または「有効」をクリックします。
リソース名を選択して表示される画面で表示される状態は、リソース自体の状態が無効の場合には「無効」と表示され
ます。リソース自体の状態と各ターゲットのリソースの状態が両方とも有効のターゲットのみ、「有効」と表示されます。
リソースの状態を有効に変更した場合、リソース自体の状態が自動的に無効から有効に変更されるため、ターゲット
のリソースの状態が有効であった他のターゲットの状態も「有効」と表示されるようになります。
以下の設定ではターゲットのリソースの状態は変更できますが、リソース自体の状態は変更されません。このため、上
記のリソース名を選択して状態を変更することを推奨します。
1. IJServerクラスタ名もしくはserverを選択します。
- 299 -
2. 「リソース」タブをクリックします。
3. 状態を変更するリソースを選択して「無効」または「有効」をクリックします。
注意
インストール時にすでに定義されている以下のリソースは、リソース自体の状態がデフォルトで無効となっているため、リ
ソースを利用する場合にはリソース自体の状態とターゲットのリソースの状態が両方とも有効になるように設定してください。
・ jdbc/__TimerPool
ターゲットを追加する場合
作成済みのリソースにターゲットを追加する場合、ターゲットのリソースの状態は初期状態で利用不可(無効)となりま
すので、必要に応じてリソースの状態を有効に変更してください。
asadminコマンドを使用する方法
リソース作成時に状態を指定する場合
各種リソース作成コマンドの--enabledオプションを使用します。リソース作成時のデフォルトは、利用可能(有効)です。-enabledオプション、--targetオプションの指定内容と、リソースの状態の関係を以下に示します。
--enabled
--target
作成したリソースの状態
true
指定あり
指定したターゲット(IJServerクラスタ名を指定した場合、IJServerクラス
タのサーバーインスタンス)で利用可能(有効)です。リソース自体の状
態も有効となります。
指定なし
有効です。
リソース自体の状態も有効となるため、ターゲットからの参照を作成す
ると利用できます。
指定あり
指定したターゲット(IJServerクラスタ名を指定した場合、IJServerクラス
タのサーバーインスタンス)で利用不可(無効)です。リソース自体の状
態は有効となります。
指定なし
無効です。
リソース自体の状態も無効となり、ターゲットからの参照を作成しても無
効なため、利用する前にリソース自体の状態を有効に変更する必要が
あります。
false
リソースの参照を作成する場合
create-resource-refコマンドによりリソースの参照を作成すると、指定したターゲットからリソースを利用できるようになり
ます。
リソースの参照を作成した時のターゲットの利用可否については、リソース自体の状態と同一となります。例えば、リ
ソースの状態が無効であれば、リソースの参照を作成したターゲットでは初期状態で利用不可(無効)となりますので、
必要に応じてリソースの状態を有効に変更してください。
リソースの状態を変更する場合
以下の定義項目をsetサブコマンドにより指定します。
- リソース参照の可否を示す「.enabled」で終わるserversの定義項目をfalseに指定すると、リソースが指定したター
ゲットで無効になります。IJServerクラスタの場合、各サーバーインスタンスに対して状態を同じ値に変更してくだ
さい。また、リソース参照の可否を示す「.enabled」で終わるclusters定義項目も同じ値に変更することを推奨します。
clusters定義項目を同じ値に変更しておくことで、IJServerクラスタにサーバーインスタンスを追加した場合に、追
加したサーバーインスタンスのリソースの状態が同じ値に設定されます。
- リソース種類に該当する「.enabled」で終わるresourcesの定義項目をfalseに指定すると、リソースがすべてのIJServer
クラスタやInterstage Java EE DASサービスで無効になります。
- 300 -
- 無効に指定したリソースを特定のターゲットで有効にするには該当リソースの「.enabled」で終わるserversの定義
項目とresourcesの定義項目を両方true(有効)に指定する必要があります。各サーバーインスタンスに対して状態
を同じ値に変更することを推奨します。
注意
リソース状態の変更後は、該当リソースを利用しているターゲット(IJServerクラスタまたはInterstage Java EE DASサービ
ス)を再起動してください。
4.14.7 リソースを利用するターゲットを選択する場合の手順
リソースを利用する際には、そのリソースを運用するターゲットを指定します。
運用するターゲットが指定されていない、または指定されているが状態が「無効」になっているリソースは利用できません。
ターゲットの選択は、リソース作成時に指定するか、またはリソース定義後にターゲットの参照を追加・削除することで行
います。同一のリソースに対し、複数のターゲットを指定することができます。
ターゲットを指定した後、リソースを有効化するために状態を「有効」に設定してください。
ターゲットは以下から選択できます。
ターゲット
説明
IJServerクラスタ名
リソースを利用するIJServerクラスタの名前を指定します。
server
Interstage Java EE DASサービスからリソースが参照できます。開発時にの
み使用してください。
domain、または指定
なし
すべてのIJServerクラスタやInterstage Java EE DASサービスから参照され
ていないリソースです(注)。
注)
ターゲットの参照を追加・削除するコマンド(create-resource-refサブコマンド、delete-resource-refサブコマンド)のtargetオ
プションに「domain」を指定することはできません。
ターゲットは、Interstage Java EE管理コンソール、およびasadminコマンドを使用して変更できます。詳細については、以
下のマニュアルを参照してください。
・ Interstage Java EE管理コンソールヘルプ
・ 「リファレンスマニュアル(コマンド編)」-「create-resource-refサブコマンド」、または「delete-resource-refサブコマンド」
デフォルトで定義されている以下のJDBCリソースは、ターゲットに「server」が指定されてセットアップされます。IJServerク
ラスタで利用する場合は、運用するIJServerをターゲットの参照に追加し、状態を「有効」に設定してください。また、これ
らのリソースを削除した場合は、手動で再作成するか、ijinitコマンドで復元することができます。
・ jdbc/__TimerPool
・ jdbc/__default
4.15 データベースの環境設定
以下の手順でデータベースの環境を構築してください。
1. サポートするデータベースをインストールしてください。
サポートするデータベースについては、「システム設計ガイド」の「ソフトウェア条件」-「アプリケーション実行時に
必要なソフトウェア」-「データベース関連(Java EE)」を参照してください。
2. データベースに接続するJDBCドライバをインストールしてください。
サポートするJDBCドライバについては、「システム設計ガイド」の「ソフトウェア条件」-「アプリケーション実行時に
必要なソフトウェア」-「データベース関連(Java EE)」を参照してください。
- 301 -
3. JDBCドライバを使用可能となるように環境設定してください。
JDBCドライバの環境設定方法については「4.15.1 JDBCドライバの環境設定」を参照してください。
4. データベースを作成してください。
データベースの運用方法については、使用するデータベースのマニュアルを参照してください。
5. データベースに対するJDBC接続プールを作成してください。
JDBC接続プールの作成方法については、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュ
アル(コマンド編)」-「asadmin」を参照してください。また、作成した接続プールに対し、Ping機能を利用できます。
詳細は、「4.15.8 Ping機能」を参照してください。
6. JDBC接続プールに対してJDBCリソースを作成してください。
JDBCリソースを作成する際には、そのJDBCリソースを使用するIJServerクラスタ、またはInterstage Java EE DAS
サービスをターゲットに指定します。ターゲット設定の詳細については、「4.14.7 リソースを利用するターゲットを選
択する場合の手順」を参照してください。
注意
作成したJDBC接続プールを削除する場合、cascadeオプションをtrueに設定することで関連するJDBCリソースを一括で
削除することができます。Interstage Java EE管理コンソールからJDBC接続プールの削除を実行する場合は、常にcascade
オプションがtrueに設定されて処理が実行されます。asadminコマンドから実行する場合は、cascadeオプションを指定す
ることができます。
4.15.1 JDBCドライバの環境設定
以下に各JDBCドライバの環境設定方法を説明します。使用するJDBCドライバによって環境設定が必要な項目が異なり
ます。各環境設定項目を以下のように設定してください。IJServerクラスタに対する設定以外に各種ユーティリティ機能
(Ping機能やデータベーステーブル自動生成機能など)を使用する場合にはInterstage Java EE DASサービスの環境設
定が必要です。また、Interstage Java EE DASサービスを開発環境として使用する場合も、Interstage Java EE DASサービ
スに環境設定を行ってください。
Type 2のJDBCドライバとは、一部ネイティブコードで実装されたJDBCドライバです。Type 4のJDBCドライバとは、すべて
Javaで実装されたJDBCドライバです。
クラスパスの設定
JDBCドライバのJARファイル(ZIP形式で提供している場合はZIPファイル)をIJServerクラスタ、またはInterstage Java EE
DASサービスが参照可能なように設定するには、次のいずれかを実行します。
クラスローダの詳細については、「2.22 クラスローダ」を参照してください。
Shared Chainクラスローダにアクセスできるドライバを設定する
1. ツリービューから「設定」を選択し、設定名を選択します。
2. 「JVM設定」を選択します。
3. 「パス設定」タブをクリックします。
4. 「クラスパスのサフィックス」フィールドで、ドライバのJARファイルの完全修飾パス名を入力します。
5. 「保存」をクリックします。
6. 環境設定の対象に応じて、IJServerクラスタ、またはInterstage Java EE DASサービスを再起動します。
コマンドから指定する場合は、asadminコマンドのsetサブコマンドでクラスパスのサフィックスに設定後、IJServerクラスタ、
またはInterstage Java EE DASサービスを再起動してください。詳細は、「6.8.15 Java VMの定義項目」を参照してくだ
さい。
- 302 -
共通クラスローダにアクセスできるドライバを設定する
1. ドライバのJARファイルを以下の共通ディレクトリにコピーしてください。
jar: [Java EE共通ディレクトリ]\domains\interstage\lib
クラス: [Java EE共通ディレクトリ]\domains\interstage\lib\classes
jar: [Java EE共通ディレクトリ]/domains/interstage/lib
クラス: [Java EE共通ディレクトリ]/domains/interstage/lib/classes
2. 環境設定の対象に応じて、IJServerクラスタ、またはInterstage Java EE DASサービスを再起動します。
上記のように共通クラスローダに設定するにはJARファイルをディレクトリにコピーする必要があります。JARファイルの
コピーが可能かどうかについては各JDBCドライバのマニュアルを参照してください。
パス/ライブラリパスの設定
Type2のJDBCドライバ(Oracle OCI JDBCドライバ、または、Symfoware JDBCドライバ)を使用する場合にパス/ライブラリ
パスをIJServerクラスタ、またはInterstage Java EE DASサービスが参照可能なように設定するには以下を実行します。
Interstage Java EE Node Agentサービス起動時の環境変数PATHにて指定を行ってください。指定する値は「4.15.4
Oracle OCI JDBCドライバ(Type2)」または「4.15.6 Symfoware JDBCドライバ(Type2)」を参照してください。Interstage
Java EE Node Agentサービスの環境変数設定については、「4.4.3 環境変数の設定」を参照してください。
1. ツリービューから「設定」を選択し、設定名を選択します。
2. 「JVM設定」を選択します。
3. 「パス設定」タブをクリックします。
4. 「ネイティブライブラリパスのサフィックス」フィールドで、ネイティブライブラリパスにパス/ライブラリパスを指定します。
パス/ライブラリパスの設定値は「4.15.4 Oracle OCI JDBCドライバ(Type2)」または「4.15.6 Symfoware JDBCドライバ
(Type2)」を参照してください。
5. 「保存」をクリックします。
6. 環境設定の対象に応じて、IJServerクラスタ、またはInterstage Java EE DASサービスを再起動します。
コマンドから指定する場合は、asadminコマンドのsetサブコマンドでネイティブライブラリパスのサフィックスに設定後、
IJServerクラスタを再起動してください。詳細は、「6.8.15 Java VMの定義項目」を参照してください。
環境変数の設定
IJServerクラスタの設定
JDBCドライバが動作するために環境変数(PATH、LD_LIBRARY_PATH、CLASSPATH以外)の設定が必要な場合に
は以下を実行します。
1. IJServerクラスタを選択します。
2. 「設定」タブをクリックします。
3. 「プロセス制御」を選択します。
4. 「環境変数」フィールドで、PARAM=VALUEの形式で値を入力します。
例) ORACLE_HOME=/opt/oracle
5. 「保存」をクリックします。
- 303 -
6. IJServerクラスタを再起動します。
コマンドから指定する場合は、asadminコマンドのsetサブコマンドで環境変数に設定後、IJServerクラスタを再起動してく
ださい。詳細は、「6.8.15 Java VMの定義項目」を参照してください。
Interstage Java EE DASサービスの設定
1. OSのシステム環境変数に環境変数を追加します。
2. システムを再起動してください。
1. OSのシステム環境変数に環境変数を追加します。
2. 1.が有効になっているコンソール上でijdasstopコマンドとijdasstartコマンドを実行してInterstage Java EE DASサー
ビスを再起動してください。
リソースタイプ
接続プールを作成する際に、リソースタイプを以下の3つから選択できます。使用するデータソースクラスが実装するイン
タフェースを指定してください。指定したリソースタイプによって、グローバルトランザクションでの利用可否とJDBCドライ
バに対して物理接続の獲得と破棄を要求するメソッドに違いがあります。リソースタイプを指定しなかった場合や、使用す
るデータソースクラスがリソースタイプに指定したインタフェースを実装していない場合には、javax.sql.DataSourceが指定
された場合と同様の動作をします。
リソースタイプ
説明
javax.sql.DataSource
ローカルトランザクションを使用する場合に指定します。
JDBC接続プールが物理接続を獲得する時にはデータソースクラスに
対してjavax.sql.DataSourceインタフェースのgetConnectionメソッドを実
行し、物理接続を破棄する時にはjava.sql.Connectionインタフェース
のcloseメソッドを実行します。
javax.sql.XADataSource
グローバルトランザクションを使用する場合に指定します。
JDBC接続プールが物理接続を獲得する時には、データソースクラス
に対してjavax.sql.XADataSourceインタフェースのgetXAConnectionメ
ソッドを実行します。物理接続を破棄する時には
javax.sql.XAConnectionインタフェースのcloseメソッドを実行します。
javax.sql.ConnectionPoo
lDataSource
ローカルトランザクションを使用する場合に指定します。
JDBC接続プールが物理接続を獲得する時には、データソースクラス
に対してjavax.sql.ConnectionPoolDataSourceインタフェースの
getPooledConnectionメソッドを実行します。物理接続を破棄する時に
はjavax.sql.PooledConnectionインタフェースのcloseメソッドを実行しま
す。
注意
JDBCドライバが提供するプーリング機能を利用した場合の注意事項
JDBCドライバ側のプーリング機能を有効にすると、Interstage側のプーリング機能と冗長に動作します。このため、Interstage
側のプーリング機能を無効にしてください。設定方法については「6.6.1 JDBC接続プールの定義項目」を参照してください。
例 え ば 、 Oracle が 提 供 す る oracle.jdbc.pool.OracleDataSource を 利 用 し 、 か つ 、 プ ロ パ テ ィ に お い て
ConnectionCachingEnabledプロパティをtrueに設定した場合は、Interstage側のプーリング機能を無効にしてください。
- 304 -
追加プロパティ
データベース名(URL)、ユーザ名、およびパスワードなど、使用するJDBCドライバにあわせて必要なプロパティを接続
プールの定義へ追加できます。
指定可能なプロパティは、JDBCドライバごとに異なるため詳細は、各JDBCドライバのマニュアルを確認してください。
JDBCドライバのJARファイルがInterstage Java EE DASサービスで参照可能となっている場合、デフォルトで表示される
データソースクラス名のクラスから、指定可能なプロパティの名前をロードして表示します。また、プロパティのデフォルト
値も合わせてロードして表示します。デフォルトで表示されるデータソースクラス名については、各JDBCドライバの環境
設定の説明を参照してください。
JDBCドライバのJARファイルがInterstage Java EE DASサービスで参照できない場合、以下をプロパティの名前としてデ
フォルトで表示します。必要によってプロパティを追加/削除してください。値を指定しない場合にはそのプロパティは無
視されます。
・ databaseName
・ datasourceName
・ networkProtocol
・ password
・ portNumber
・ roleName
・ serverName
・ user
注意
・ JDBCドライバのJARファイルがInterstage Java EE DASサービスで参照可能となっていても、指定したクラス名により
定義更新を行うとエラーが発生するプロパティ(Oracleの「connectionCachingEnabled」プロパティなど)が一部表示さ
れません。指定が必要な場合にはプロパティを追加してください。
・ プロパティにパスワードを指定する場合には、パスワードエイリアスを定義することを推奨します。パスワードエイリア
スについてはasadminコマンドの「create-password-aliasサブコマンド」を参照してください。
・ プロパティの名前の先頭文字は、大文字/小文字のどちらも使用可能です。
・ プロパティの値の型がjava.util.Propertiesの場合、プロパティに「{[name=value[,name=value]...]}」という形式で値を
指定してください。nameとvalueには特殊文字の(‘,’、‘=’)を使用できません。
データソースクラス名のデフォルト表示について
Interstage Java EE管理コンソールを使用する場合、JDBC接続プールの作成時にデータソースクラス名にはデフォルトで
以下の情報が表示されます。
データベース
ベンダー
Java DB
Oracle
リソースタイプ
データソースクラス名
javax.sql.DataSource
org.apache.derby.jdbc.ClientDataSource
javax.sql.XADataSource
org.apache.derby.jdbc.ClientXADataSource
javax.sql.ConnectionPoo
lDataSource
org.apache.derby.jdbc.ClientConnectionPoolDataSour
ce
javax.sql.DataSource
oracle.jdbc.pool.OracleDataSource
javax.sql.XADataSource
oracle.jdbc.xa.client.OracleXADataSource
javax.sql.ConnectionPoo
lDataSource
oracle.jdbc.pool.OracleConnectionPoolDataSource
- 305 -
データベース
ベンダー
Microsoft
SQL Server
Symfoware
PostgreSQL
リソースタイプ
データソースクラス名
javax.sql.DataSource
com.microsoft.sqlserver.jdbc.SQLServerDataSource
javax.sql.XADataSource
-
javax.sql.ConnectionPoo
lDataSource
com.microsoft.sqlserver.jdbc.SQLServerXADataSourc
e
javax.sql.DataSource
-
javax.sql.XADataSource
-
javax.sql.ConnectionPoo
lDataSource
com.fujitsu.symfoware.jdbc2.SYMConnectionPoolDat
aSource
javax.sql.DataSource
org.postgresql.ds.PGSimpleDataSource
javax.sql.XADataSource
-
javax.sql.ConnectionPoo
lDataSource
org.postgresql.ds.PGConnectionPoolDataSource
4.15.2 Java DB JDBCドライバ(Type4)
クラスパスの設定
Java DB JDBCドライバはアプリケーションサーバに同梱されています。javaコマンドでJava SEスタンドアロンアプリケー
ションを実行する場合、以下のクラスパスを設定してください。IJServerクラスタやアプリケーションクライアントコンテナで
Java DB JDBCドライバを使用する場合にはクラスパスの設定は不要です。
組み込み環境の場合
C:\Interstage\F3FMisjee\javadb\lib\derby.jar
C:\Interstage\F3FMisjee\javadb\lib\derbytools.jar
/opt/FJSVisjee/javadb/lib/derby.jar
/opt/FJSVisjee/javadb/lib/derbytools.jar
クライアント/サーバ環境の場合
C:\Interstage\F3FMisjee\javadb\lib\derbyclient.jar
C:\Interstage\F3FMisjee\javadb\lib\derbytools.jar
/opt/FJSVisjee/javadb/lib/derbyclient.jar
/opt/FJSVisjee/javadb/lib/derbytools.jar
注意
Java DBのシステムディレクトリは、Java SEスタンドアロンアプリケーション実行時のカレントディレクトリになります。
接続プールの設定
接続プールの設定に以下を指定してください。
リソースタイプにはデータソースクラスが実装するインタフェースを指定してください。
- 306 -
パラメタ
指定値
名前
任意の値
リソースタイプ
以下のいずれかを指定してください。
・ javax.sql.DataSource
・ javax.sql.XADataSource
・ javax.sql.ConnectionPoolDataSource
データベースベンダー
Java DB (注1)
データソースクラス名
以下のいずれかを指定してください。
組み込み環境の場合:Java SE 5.0/JDBC 3.0の場合
・ org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource
・ org.apache.derby.jdbc.EmbeddedDataSource
・ org.apache.derby.jdbc.EmbeddedXADataSource
組み込み環境の場合:Java SE 6/JDBC 4.0の場合
・ org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource40
・ org.apache.derby.jdbc.EmbeddedDataSource40
・ org.apache.derby.jdbc.EmbeddedXADataSource40
クライアント/サーバ環境の場合:Java SE 5.0/JDBC 3.0の場合
・ org.apache.derby.jdbc.ClientConnectionPoolDataSource
・ org.apache.derby.jdbc.ClientDataSource
・ org.apache.derby.jdbc.ClientXADataSource
クライアント/サーバ環境の場合:Java SE 6/JDBC 4.0の場合
・ org.apache.derby.jdbc.ClientConnectionPoolDataSource40
・ org.apache.derby.jdbc.ClientDataSource40
・ org.apache.derby.jdbc.ClientXADataSource40
注1) データベースベンダーは、Interstage Java EE管理コンソールから接続プールを作成するときにだけ指定してください。
リソースタイプごとに使用するデータソースクラス名については、以下のように指定してください。
リソースタイプ
javax.sql.DataSource
javax.sql.XADataSource
環境
データソースクラス名
組み込み環境の場合:Java
SE 5.0/JDBC 3.0の場合
org.apache.derby.jdbc.EmbeddedDataSource
組み込み環境の場合:Java
SE 6/JDBC 4.0の場合
org.apache.derby.jdbc.EmbeddedDataSource40
クライアント/サーバ環境の場
合:Java SE 5.0/JDBC 3.0の場
合
org.apache.derby.jdbc.ClientDataSource
クライアント/サーバ環境の場
合:Java SE 6/JDBC 4.0の場
合
org.apache.derby.jdbc.ClientDataSource40
組み込み環境の場合:Java
SE 5.0/JDBC 3.0の場合
org.apache.derby.jdbc.EmbeddedXADataSource
- 307 -
リソースタイプ
環境
javax.sql.ConnectionPoolDat
aSource
データソースクラス名
組み込み環境の場合:Java
SE 6/JDBC 4.0の場合
org.apache.derby.jdbc.EmbeddedXADataSource40
クライアント/サーバ環境の場
合:Java SE 5.0/JDBC 3.0の場
合
org.apache.derby.jdbc.ClientXADataSource
クライアント/サーバ環境の場
合:Java SE 6/JDBC 4.0の場
合
org.apache.derby.jdbc.ClientXADataSource40
組み込み環境の場合:Java
SE 5.0/JDBC 3.0の場合
org.apache.derby.jdbc.EmbeddedConnectionPoolDat
aSource
組み込み環境の場合:Java
SE 6/JDBC 4.0の場合
org.apache.derby.jdbc.EmbeddedConnectionPoolDat
aSource40
クライアント/サーバ環境の場
合:Java SE 5.0/JDBC 3.0の場
合
org.apache.derby.jdbc.ClientConnectionPoolDataSou
rce
クライアント/サーバ環境の場
合:Java SE 6/JDBC 4.0の場
合
org.apache.derby.jdbc.ClientConnectionPoolDataSou
rce40
プロパティ
以下のプロパティは一般的に指定が必要なプロパティです。指定可能なプロパティの詳細は、「A.6 データソースプロパ
ティ」を参照してください。
組み込み環境の場合
プロパティ名
値
DatabaseName
データベースの名前を指定してください。
ConnectionAttributes
データベースが存在しない場合、接続確立時にデータベースを自動作
成したい場合「;create=true」を指定してください。すでに指定のデータ
ベースが存在する場合、既存のデータベースへ接続します。
クライアント/サーバ環境の場合
プロパティ名
値
User
データベースのユーザIDを指定してください。
Password
データベースのパスワードを指定してください。
DatabaseName
データベースの名前を指定してください。
ServerName
Java DBのホスト名またはIPアドレスを指定してください。
PortNumber
ポート番号をデフォルトから変更した場合、変更したポート番号を指定し
てください。デフォルトは1527です。
ConnectionAttributes
データベースが存在しない場合、接続確立時にデータベースを自動作
成したい場合「;create=true」を指定してください。すでに指定のデータ
ベースが存在する場合、既存のデータベースへ接続します。
4.15.3 Oracle Thin JDBCドライバ(Type4)
- 308 -
環境変数の設定
Java EE実行環境のJDK/JREバージョンとドライバ・バージョンに応じて、Oracle JDBCドライバを動作させるための環境変
数の設定例を以下に記載します。Oracleホーム・ディレクトリは、Oracle製品のソフトウェアをインストールするために選択
したディレクトリです。使用するOracleがインストールされている、Oracleホーム・ディレクトリを指定してください。JDBCドラ
イバ・格納先ディレクトリは、必要なJDBCクラス・ライブラリを格納した任意のディレクトリです。ドライバを入手するには、
OracleのWebページから直接ダウンロードする方法や、Instant Clientをインストールする方法などがあります。詳細は、
Oracleのマニュアルを参照してください。環境変数ORACLE_HOMEやTNS_ADMINなどは、必要に応じて設定してくだ
さい。
設定項目
クラスパス
JDK/
JRE
5.0
5.0
5.0
ドライバ・バージョ
ン
設定値 (注1)
Oracle10g
Release2
Oracleホーム・ディレクトリ\jdbc\lib\ojdbc14.jar
Oracle11g
Release1
JDBCドライバ・格納先ディレクトリ\ojdbc5.jar
Oracle11g
Release2
JDBCドライバ・格納先ディレクトリ\ojdbc5.jar
Oracleホーム・ディレクトリ\jlib\orai18n.jar
JDBCドライバ・格納先ディレクトリ\orai18n.jar
JDBCドライバ・格納先ディレクトリ\orai18n.jar
JDBCドライバ・格納先ディレクトリ\ucp.jar(注2)
6
6
Oracle11g
Release1
JDBCドライバ・格納先ディレクトリ\ojdbc6.jar
Oracle11g
Release2
JDBCドライバ・格納先ディレクトリ\ojdbc6.jar
JDBCドライバ・格納先ディレクトリ\orai18n.jar
JDBCドライバ・格納先ディレクトリ\orai18n.jar
JDBCドライバ・格納先ディレクトリ\ucp.jar(注2)
注1) SolarisまたはLinuxの場合、「\」を「/」に読み替えてください。
注2) Oracle Universal Connection Pool (UCP) for JDBC機能を使用する場合にのみ設定が必要です。
接続プールの設定
接続プールの設定に以下を指定してください。
リソースタイプにはデータソースクラスが実装するインタフェースを指定してください。
パラメタ
指定値
名前
任意の値
リソースタイプ
以下のいずれかを指定してください。
・ javax.sql.DataSource
・ javax.sql.XADataSource
・ javax.sql.ConnectionPoolDataSource
データベースベンダー
Oracle (注1)
データソースクラス名
以下のいずれかを指定してください。
・ oracle.jdbc.pool.OracleDataSource
・ oracle.jdbc.xa.client.OracleXADataSource
・ oracle.jdbc.pool.OracleConnectionPoolDataSource
・ oracle.ucp.jdbc.PoolDataSourceImpl(注2)
・ oracle.ucp.jdbc.PoolXADataSourceImpl(注2)
- 309 -
注1) データベースベンダーは、Interstage Java EE管理コンソールから接続プールを作成するときにだけ指定してください。
注2) Oracle Universal Connection Pool (UCP) for JDBC機能を使用する場合、oracle.ucp.jdbc.PoolDataSourceImpl、また
はoracle.ucp.jdbc.PoolXADataSourceImplを指定してください。
リソースタイプごとに使用するデータソースクラス名については、以下のように指定してください。
リソースタイプ
データソースクラス名
javax.sql.DataSource
oracle.jdbc.pool.OracleDataSource
oracle.ucp.jdbc.PoolDataSourceImpl
javax.sql.XADataSource
oracle.jdbc.xa.client.OracleXADataSource
oracle.ucp.jdbc.PoolXADataSourceImpl
javax.sql.ConnectionPoolDataSource
oracle.jdbc.pool.OracleConnectionPoolDataSource
プロパティ
以下に、JDBCドライバへ設定するプロパティの例を示します。指定可能なプロパティの詳細は、JDBCドライバのマニュ
アルを参照してください。
プロパティ名
値
user
ユーザIDを指定します。
password
パスワードを指定します。
URL
以下を指定します。斜体部分は変数名です。
・ jdbc:oracle:thin:@//host_name:port_number/service_name
例) jdbc:oracle:thin:@//localhost:1521/customer_db_service
ConnectionFactoryCla
ssName(注)
以下のいずれかを指定してください。
データソースクラス名がoracle.ucp.jdbc.PoolDataSourceImplの場合
・ oracle.jdbc.pool.OracleDataSource
データソースクラス名がoracle.ucp.jdbc.PoolXADataSourceImplの場合
・ oracle.jdbc.xa.client.OracleXADataSource
注) Oracle Universal Connection Pool (UCP) for JDBC機能を使用する場合、プロパティ名ConnectionFactoryClassName
を指定してください。
注意
プロパティ名userおよびpasswordにユーザIDとパスワードを指定してください。
4.15.4 Oracle OCI JDBCドライバ(Type2)
環境変数の設定
Java EE実行環境のJDK/JREバージョンとドライバ・バージョンに応じて、Oracle JDBCドライバを動作させるための環境変
数の設定例を以下に記載します。Oracleホーム・ディレクトリは、Oracle製品のソフトウェアをインストールするために選択
したディレクトリです。使用するOracleがインストールされている、Oracleホーム・ディレクトリを指定してください。JDBCドラ
イバ・格納先ディレクトリは、必要なJDBCクラス・ライブラリやOCI共有ライブラリを格納した任意のディレクトリです。ドライ
バを入手するには、Instant Clientをインストールする方法などがあります。詳細は、Oracleのマニュアルを参照してください。
環境変数TNS_ADMINなどは、必要に応じて設定してください。ただし、Instant Client以外の環境でOCIドライバを使用
する場合は、必ず環境変数ORACLE_HOMEを設定してください。
- 310 -
設定項目
クラスパス
JDK/
JRE
5.0
5.0
5.0
ドライバ・バージョ
ン
設定値 (注)
Oracle10g
Release2
Oracleホーム・ディレクトリ\jdbc\lib\ojdbc14.jar
Oracle11g
Release1
JDBCドライバ・格納先ディレクトリ\ojdbc5.jar
Oracle11g
Release2
JDBCドライバ・格納先ディレクトリ\ojdbc5.jar
Oracleホーム・ディレクトリ\jlib\orai18n.jar
JDBCドライバ・格納先ディレクトリ\orai18n.jar
JDBCドライバ・格納先ディレクトリ\orai18n.jar
JDBCドライバ・格納先ディレクトリ\ucp.jar(注4)
6
6
Oracle11g
Release1
JDBCドライバ・格納先ディレクトリ\ojdbc6.jar
Oracle11g
Release2
JDBCドライバ・格納先ディレクトリ\ojdbc6.jar
JDBCドライバ・格納先ディレクトリ\orai18n.jar
JDBCドライバ・格納先ディレクトリ\orai18n.jar
JDBCドライバ・格納先ディレクトリ\ucp.jar(注4)
パス
ライブラリ
パス (注2)
-
Oracle10g
Release2
Oracleホーム・ディレクトリ\bin
-
Oracle11g
Release1
JDBCドライバ・格納先ディレクトリ
-
Oracle11g
Release2
JDBCドライバ・格納先ディレクトリ
-
Oracle10g
Release2
Oracleホーム・ディレクトリ/lib32 (注3)
Oracleホーム・ディレクトリ/lib
-
Oracle11g
Release1
JDBCドライバ・格納先ディレクトリ
-
Oracle11g
Release2
JDBCドライバ・格納先ディレクトリ
注1) SolarisまたはLinuxの場合、「\」を「/」に読み替えてください。
注2) ライブラリパスは上記表に記載している順序で設定してください。
注3) RHEL5(x86)の場合は、設定不要です。
注4) Oracle Universal Connection Pool (UCP) for JDBC機能を使用する場合にのみ設定が必要です。
接続プールの設定
接続プールの設定に以下を指定してください。
リソースタイプにはデータソースクラスが実装するインタフェースを指定してください。
パラメタ
指定値
名前
任意の値
リソースタイプ
以下のいずれかを指定してください。
・ javax.sql.DataSource
・ javax.sql.XADataSource
・ javax.sql.ConnectionPoolDataSource
データベースベンダー
Oracle (注1)
データソースクラス名
以下のいずれかを指定してください。
・ oracle.jdbc.pool.OracleDataSource
- 311 -
パラメタ
指定値
・ oracle.jdbc.xa.client.OracleXADataSource
・ oracle.jdbc.pool.OracleConnectionPoolDataSource
・ oracle.ucp.jdbc.PoolDataSourceImpl(注2)
・ oracle.ucp.jdbc.PoolXADataSourceImpl(注2)
注1) データベースベンダーは、Interstage Java EE管理コンソールから接続プールを作成するときにだけ指定してください。
注2) Oracle Universal Connection Pool (UCP) for JDBC機能を使用する場合、oracle.ucp.jdbc.PoolDataSourceImpl、また
はoracle.ucp.jdbc.PoolXADataSourceImplを指定してください。
リソースタイプごとに使用するデータソースクラス名については、以下のように指定してください。
リソースタイプ
データソースクラス名
javax.sql.DataSource
oracle.jdbc.pool.OracleDataSource
oracle.ucp.jdbc.PoolDataSourceImpl
javax.sql.XADataSource
oracle.jdbc.xa.client.OracleXADataSource
oracle.ucp.jdbc.PoolXADataSourceImpl
javax.sql.ConnectionPoolDataSource
oracle.jdbc.pool.OracleConnectionPoolDataSource
プロパティ
以下に、JDBCドライバへ設定するプロパティの例を示します。指定可能なプロパティの詳細は、JDBCドライバのマニュ
アルを参照してください。
プロパティ名
値
user
ユーザIDを指定します。
password
パスワードを指定します。
URL
以下を指定します。斜体部分は変数名です。
・ jdbc:oracle:oci:@tns_entry
例) jdbc:oracle:oci:@MyTNSAlias
ConnectionFactoryCla
ssName(注)
以下のいずれかを指定してください。
データソースクラス名がoracle.ucp.jdbc.PoolDataSourceImplの場合
・ oracle.jdbc.pool.OracleDataSource
データソースクラス名がoracle.ucp.jdbc.PoolXADataSourceImplの場合
・ oracle.jdbc.xa.client.OracleXADataSource
注) Oracle Universal Connection Pool (UCP) for JDBC機能を使用する場合、プロパティ名ConnectionFactoryClassName
を指定してください。
注意
プロパティ名userおよびpasswordにユーザIDとパスワードを指定してください。
4.15.5 PowerGres Plus JDBCドライバ(Type4)
- 312 -
環境変数の設定
設定する環境変数の設定項目と、動作環境ごとの設定方法は以下のとおりです。
設定項目
PowerGres Plusを動作させるために、以下を設定してください。
設定項目
クラスパス
設定項目
クラスパス
クライアントのバージョン
パス名
PowerGres Plus V2
PowerGres Plus V2クライアントインストール
ディレクトリ\share\java\jdbc3\postgresql.jar
PowerGres Plus V5
PowerGres Plus V5クライアントインストール
ディレクトリ\share\java\postgresql_jdbc3.jar
クライアントのバージョン
パス名
PowerGres Plus V2
PowerGres Plus V2クライアントインストール
ディレクトリ/share/java/jdbc3/postgresql.jar
PowerGres Plus V5
PowerGres Plus V5クライアントインストール
ディレクトリ/share/java/postgresql_jdbc3.jar
注)PowerGres PlusはJDBC 4.0をサポートしないため、JDBC 4.0固有のAPIは使用できません。そのため、PowerGres
Plus を使用する場合、JDK/JRE 5.0を利用してください。
接続プールの設定
接続プールの設定に以下を指定してください。
リソースタイプにはデータソースクラスが実装するインタフェースを指定してください。
パラメタ
指定値
名前
任意の値
リソースタイプ
以下のいずれかを指定してください。
・ javax.sql.DataSource
・ javax.sql.ConnectionPoolDataSource
データベースベンダー
PostgreSQL (注1)
データソースクラス名
以下のいずれかを指定してください。
・ org.postgresql.ds.PGSimpleDataSource
・ org.postgresql.ds.PGPoolingDataSource
・ org.postgresql.ds.PGConnectionPoolDataSource
・ org.postgresql.jdbc3.Jdbc3SimpleDataSource
・ org.postgresql.jdbc3.Jdbc3ConnectionPool (注2)
注1) データベースベンダーは、Interstage Java EE管理コンソールから接続プールを作成するときにだけ指定してください。
注2)データソースクラスorg.postgresql.jdbc3.Jdbc3ConnectionPoolではdefaultAutoCommitがデフォルトでfalseに設定さ
れています。以下のいずれかの方法でトランザクションがコミットされるように設定してください。
・ JDBC接続プールのプロパティにdefaultAutoCommit=trueに設定する。
・ アプリケーションでjava.sql.Connectionクラスのcommitメソッドを呼び出す。
- 313 -
・ アプリケーションでjava.sql.ConnectionクラスのsetAutoCommitメソッドを呼び出してAutoCommitをtrueに設定する。
指定するデータソースクラス名はPowerGres Plusのバージョンにより以下のように変更する必要があります。
データベースバー
ジョン
PowerGres Plus
V5.0
PowerGres Plus
V2.1/2.0
リソースタイプ
データソースクラス名
javax.sql.DataSource
org.postgresql.ds.PGSimpleDataSource
org.postgresql.ds.PGPoolingDataSource
javax.sql.XADataSource
-
javax.sql.ConnectionPoolDataSource
org.postgresql.ds.PGConnectionPoolDataSource
javax.sql.DataSource
org.postgresql.jdbc3.Jdbc3SimpleDataSource
javax.sql.XADataSource
-
javax.sql.ConnectionPoolDataSource
org.postgresql.jdbc3.Jdbc3ConnectionPool
注) PostgreSQLは分散トランザクションをサポートしないため、分散トランザクション機能を使用する場合は、PostgreSQL
は使用できません。
プロパティ
以下に指定できるプロパティを説明します。説明されているプロパティ以外は編集する必要はありません。指定するプロ
パティの詳細は、JDBCドライバのマニュアルを参照してください。
プロパティ名
値
user
ユーザIDを指定してください。
password
パスワードを指定してください。
databaseName
データベースの名前を指定してください。
serverName
データベースサーバのIPアドレスを指定してください。
portNumber
ポート番号をデフォルトから変更した場合、変更したポート番号を指定し
てください。
4.15.6 Symfoware JDBCドライバ(Type2)
環境変数の設定
以下の環境設定を行ってください。
各JDBCドライバがサポートするJavaバージョンの組み合わせなどの詳細は、Symfowareのマニュアルを参照してください。
設定項目
設定値
パス
Symfoware Server クライアント機能インストール先ディ
レクトリ\JDBC\fjjdbc\bin
Windows(R)システムディレクトリ\ESQL\BIN
クラスパス
Symfoware V9.x以前の場合
Symfoware Server クライアント機能インストール先ディ
レクトリ\JDBC\fjjdbc\lib\fjsymjdbc2.jar
Symfoware V10.0.0以降の場合
Symfoware Server クライアント機能インストール先ディ
レクトリ\JDBC\fjjdbc\lib\fjsymjdbc2.jar
または
- 314 -
設定項目
設定値
Symfoware Server クライアント機能インストール先ディ
レクトリ\JDBC\fjjdbc\lib\fjsymjdbc3.jar
または
Symfoware Server クライアント機能インストール先ディ
レクトリ\JDBC\fjjdbc\lib\fjsymjdbc4.jar
設定項目
設定値
ライブラリパス
FSUNrdb2bインストール先ディレクトリ/FSUNrdb2b/lib
(注)
JDBCドライバインストール先ディレクトリ/FJSVsymjd/
fjjdbc/bin (注)
クラスパス
Symfoware V9.x以前の場合
JDBCドライバインストール先ディレクトリ/FJSVsymjd/
fjjdbc/lib/fjsymjdbc2.jar (注)
Symfoware V10.0.0以降の場合
JDBCドライバインストール先ディレクトリ/FJSVsymjd/
fjjdbc/lib/fjsymjdbc2.jar (注)
または
JDBCドライバインストール先ディレクトリ/FJSVsymjd/
fjjdbc/lib/fjsymjdbc3.jar(注)
または
JDBCドライバインストール先ディレクトリ/FJSVsymjd/
fjjdbc/lib/fjsymjdbc4.jar(注)
設定項目
設定値
ライブラリパス
FJSVrdb2bインストール先ディレクトリ/FJSVrdb2b/lib (注)
JDBCドライバインストール先ディレクトリ/FJSVsymjd/
fjjdbc/bin (注)
クラスパス
Symfoware V9.x以前の場合
JDBCドライバインストール先ディレクトリ/FJSVsymjd/
fjjdbc/lib/fjsymjdbc2.jar (注)
Symfoware V10.0.0以降の場合
JDBCドライバインストール先ディレクトリ/FJSVsymjd/
fjjdbc/lib/fjsymjdbc2.jar (注)
または
JDBCドライバインストール先ディレクトリ/FJSVsymjd/
fjjdbc/lib/fjsymjdbc3.jar(注)
または
JDBCドライバインストール先ディレクトリ/FJSVsymjd/
fjjdbc/lib/fjsymjdbc4.jar(注)
注) 以下のディレクトリのデフォルトは、/optです。
- 315 -
・ FSUNrdb2bインストール先ディレクトリ
・ FJSVrdb2bインストール先ディレクトリ
・ JDBCドライバインストール先ディレクトリ
接続プールの設定
接続プールの設定に以下を指定してください。
リソースタイプにはデータソースクラスが実装するインタフェースを指定してください。
パラメタ
指定値
名前
任意の値
リソースタイプ
以下を指定してください。(注1)
・ javax.sql.ConnectionPoolDataSource
データベースベンダー
Symfoware (注2)
データソースクラス名
以下を指定してください。
・ com.fujitsu.symfoware.jdbc2.SYMConnectionPoolDataSource
注1) SymfowareのJDBCドライバ側のプーリング機能は、Interstage側のプーリング機能ですべて実現できます。そのため、
SymfowareのJDBCドライバ側のプーリング機能をサポートしません。Symfowareを利用する場合、Interstage側のプーリン
グ機能を利用してください。
注2) データベースベンダーは、Interstage Java EE管理コンソールから接続プールを作成するときにだけ指定してください。
プロパティ
以下に指定できるプロパティを説明します。説明されているプロパティ以外は編集する必要はありません。指定するプロ
パティの詳細は、JDBCドライバのマニュアルを参照してください。
プロパティ名
値
user
ユーザIDを指定してください。
password
パスワードを指定してください。
networkProtocol
接続するネットワークプロトコル名を指定します。以下のどちらかを指定
してください。指定は必須です。
・ symfold(ローカル)
・ symford(RDB2_TCP連携)
serverName
接続するサーバのホスト名またはIPアドレスを指定します。
本オプションは、プロトコルでリモートアクセス(RDB2_TCP連携)を設定
した場合に指定可能です。
portNumber
接続するサーバのポート番号を指定します。
本オプションは、リモートアクセス(RDB2_TCP連携)を設定した場合に指
定可能です。有効値は、1~65535の整数値です。
databaseName
接続するデータ資源名を指定してください。指定は必須です。
Symfoware ServerのConnection Managerと連携する場合には、
Connection ManagerのAPC動作環境ファイルのSQLSERVERパラメタで
指定したSQLサーバ名を指定します。
protocolにsymfold(ローカル)を指定した場合、以下のようにRDBシステ
ム名を付加する必要があります。RDBシステム名を付けない運用の場合
は必要ありません。
・ <RDBシステム名>.<データ資源名>
- 316 -
プロパティ名
値
description
このデータソースの説明を指定します。
SYMOption
JDBCドライバのオプションを指定します。
以下のオプションが指定可能です。
・ lang
・ schema
・ ctuneparam
・ javaconverter
・ default_isolation
・ default_readonly
・ autoclosestatement
・ statementcache
各オプションの設定値については、JDBCドライバのマニュアルを参照し
てください。
[SYMOptionの記述例]
statementcache=36;ctuneparam='CLI_MAX_SQL=(255);CLI_WAIT_T
IME=(30)'
[記述上の注意]
各オプションの設定値に空文字列は指定できません。
例) ctuneparam='CLI_MAX_SQL='
RDB2_TCPでSymfowareに接続するための設定
注意
Interstageと別のサーバシステム上にあるSymfowareにアクセスするために使用する接続形態を「RDB2_TCP」と呼びます。
RDB2_TCPでSymfowareに接続するためには、以下の作業が必要です。
以下の作業は、Interstageと同一のサーバシステム上にあるSymfowareにアクセスする場合は不要です。
・ RDB2_TCP接続用のパラメタの設定
・ RDB2_TCPのポート番号の設定
RDB2_TCP接続用のパラメタの設定
Symfowareのシステム用動作環境ファイル内に、以下のRDB2_TCP接続用のパラメタを追加してください。
MAX_CONNECT_TCP = (n)
n : 最大接続数(省略値は0)
参考
システム用動作環境ファイルは、Symfowareインストール時に指定した場所に格納されています。格納場所を指定しない
でインストールした場合は、以下の場所に格納されています。
[Symfowareがインストールされているドライブ]:\SFWETC\RDB\ETC\UXPSQLENV
/opt/FSUNrdb2b/etc/fssqlenv
- 317 -
/opt/FJSVrdb2b/etc/fssqlenv
注意
システム用動作環境ファイル内にMAX_CONNECT_TCPを設定していない、または最大接続数に0が指定されている場
合、Java EEコンポーネント実行時に、Symfoware ODBCドライバのエラーが出力されます。出力されるエラーの詳細につ
いては、Symfowareのマニュアルを参照してください。
RDB2_TCPのポート番号の設定
以下のファイルに、RDB2_TCP用のポート番号を設定してください。
システムフォルダ\system32\drivers\etc\services
※ システムフォルダは環境変数"SystemRoot"に設定されているフォルダです。
/etc/services
例
ポート番号に2050を割り当てる場合
RDBII 2050/TCP
4.15.7 Microsoft(R) SQL Server(TM) JDBCドライバ(Type4)
Microsoft(R) SQL Server(TM) JDBCドライバはMicrosoft(R) SQL Server(TM)には同梱されていません。Microsoft
Corporationのホームページより、SQL Server(TM) 2005 JDBC Driver 1.2をダウンロードし、インストールして使用してくだ
さい。
環境変数の設定
以下の環境設定を行ってください。
設定項目
クラスパス
JDK/JRE ドライバのバージョ
ン
設定値(注)
5.0
Microsoft(R)
SQL Server(TM)
2005 JDBC
Driver
Microsoft(R) SQL Server(TM) 2005 JDBC Driverイン
ストールディレクトリ\sqljdbc_<バージョン>\<言語>
\sqljdbc.jar
5.0
Microsoft SQL
Server JDBC
Driver 2.0
Microsoft SQL Server JDBC Driverインストール ディ
レクトリ\sqljdbc_<バージョン>\<言語>\sqljdbc.jar
6.0
Microsoft SQL
Server JDBC
Driver 2.0
Microsoft SQL Server JDBC Driverインストール ディ
レクトリ\sqljdbc_<バージョン>\<言語>\sqljdbc4.jar
5.0
Microsoft SQL
Server JDBC
Driver 3.0
Microsoft SQL Server JDBC Driverインストール ディ
レクトリ\sqljdbc_<バージョン>\<言語>\sqljdbc.jar
6.0
Microsoft SQL
Server JDBC
Driver 3.0
Microsoft SQL Server JDBC Driverインストール ディ
レクトリ\sqljdbc_<バージョン>\<言語>\sqljdbc4.jar
- 318 -
注)
<バージョン>: Microsoft(R) SQL Server(TM) 2005 JDBC Driver、またはMicrosoft SQL Server JDBC Driverのバージョ
ン(例:1.2、または2.0)。
<言語>: 使用する言語。日本語版の場合は「jpn」、英語版の場合は「enu」。
接続プールの設定
接続プールの設定に以下を指定してください。
リソースタイプにはデータソースクラスが実装するインタフェースを指定してください。
パラメタ
指定値
名前
任意の値
リソースタイプ
以下のいずれかを指定してください。
・ javax.sql.DataSource
・ javax.sql.ConnectionPoolDataSource
データベースベンダー
Microsoft SQL Server (注)
データソースクラス名
以下のいずれかを指定してください。
・ com.microsoft.sqlserver.jdbc.SQLServerDataSource
・ com.microsoft.sqlserver.jdbc.SQLServerXADataSource
注) データベースベンダーは、Interstage Java EE管理コンソールから接続プールを作成するときにだけ指定してください。
リソースタイプごとに使用するデータソースクラス名については、以下のように指定してください。
リソースタイプ
データソースクラス名
javax.sql.DataSource
com.microsoft.sqlserver.jdbc.SQLServerDataSource
javax.sql.XADataSource
-
javax.sql.ConnectionPoolDataSource
com.microsoft.sqlserver.jdbc.SQLServerXADataSource
注意
接続プールの設定に関する注意事項
・ リソースタイプ
SQL Serverのグローバルトランザクションは使用できません。このため、リソースタイプに「javax.sql.XADataSource」を
指定しないでください。
・ データソースクラス名
「com.microsoft.sqlserver.jdbc.SQLServerXADataSource」は「javax.sql.ConnectionPoolDataSource」を実装しています。
詳細は、JDBCドライバのマニュアルを参照してください。
プロパティ
以下のプロパティは一般的に指定が必要なプロパティです。指定するプロパティの詳細は、JDBCドライバのマニュアル
を参照してください。
プロパティ名
値
user
ユーザIDを指定してください。
password
パスワードを指定してください。
databaseName
データベースの名前を指定してください。
- 319 -
プロパティ名
値
serverName
データベースサーバのIPアドレスを指定してください。
portNumber
ポート番号をデフォルトから変更した場合、変更したポート番号を指定し
てください。
注意
Microsoft(R) SQL Server(TM) 2005 Express EditionまたはMicrosoft(R) SQL Server(TM) 2005 Developer Editionを使用
する場合、デフォルトではリモート接続できません。
Microsoft(R) SQL Server(TM)のマニュアルを参照して、リモート接続が可能となるよう設定してください。
4.15.8 Ping機能
本製品では、接続プールに設定した定義情報でデータベースへアクセスできるかを確認するためのPing機能を提供し
ます。以下の方法で利用できます。
・ Interstage Java EE管理コンソールでJDBC接続プールのPingボタンをクリックします。
・ asadminコマンドのping-connection-poolサブコマンドを実行します。
注意
・ Ping機能ではデータソースクラスに対してgetConnectionメソッドを実行してデータベースへアクセスできるかを確認す
るため、データベースにアクセスするために使用されないプロパティについてはチェックされない場合があります。
・ Ping機能ではデータベースから接続を取得することに失敗した場合、自動再接続を行いません。
・ Ping機能を使用する時、JDBC接続プールの追加プロパティuserおよびpasswordにユーザIDとパスワードを指定して
ください。
・ 接続プールの定義情報を更新した場合には、Interstage Java EE DASサービスを再起動してください。
・ 接続検証が有効、かつ検証方法にtableが指定された場合、テーブル名で指定されたテーブルが該当のデータベー
スに存在しない場合は接続テストに失敗します。あらかじめ、指定したテーブルを作成した上で実行してください。
・ 接続プールのトランザクション遮断属性にデータベースがサポートしないトランザクション遮断レベルを指定した場合、
接続テストに失敗します。詳細は、JDBCドライバのマニュアルを参照してください。
・ 接続テストに失敗した場合は、「Target exception message:」以降の例外情報を参照して原因を取り除いてください。
特に、以下のようなクラスやライブラリが見つからないエラーや、JDK/JREとクラスファイルのバージョンの組み合わせ
が正しくないエラーが発生する場合には、クラスパスやネイティブライブラリパスの設定に不足や誤りがないか見直し
てください。JDK/JREとJDBCドライバのバージョンの組み合わせは各データベースのマニュアルを参照してください。
- java.lang.NoClassDefFoundError
- no ライブラリ名 in java.library.path
- Bad version number in .class file
・ Oracle OCIドライバを使用する場合は、環境変数ORACLE_HOMEを設定してください。ORACLE_HOMEを設定せ
ずに接続テストを実行した場合、OCIドライバの仕様によりInterstage Java EE DASサービスが停止する可能性があり
ます。誤って実行した結果、Interstage Java EE DASサービスが停止した場合は、サービスを再度起動してください。
4.16 JMSの運用方法
ここでは、以下について説明します。
- 320 -
ブローカの起動/停止
JMSアプリケーションがメッセージを送受信するDestinationを管理するブローカを、事前に起動する必要があります。
詳細については、「4.16.2 ブローカの起動/停止」を参照してください。
JMSのメッセージを送受信する準備
Java EEアプリケーションからJMSのメッセージ送受信を行うために、JMS接続ファクトリとJMS送信先リソースを作成す
る必要があります。詳細については、「4.16.3 JMSのメッセージを送受信する準備」を参照してください。
JMSの運用
JMSを運用するには、JMSクライアントアプリケーションを運用します。詳細については、「4.16.4 JMSクライアントアプ
リケーションの運用」を参照してください。
メッセージブローカのログ
メッセージブローカの運用情報を記録します。詳細については、「4.16.5 メッセージブローカのログ」を参照してくださ
い。
メッセージブローカのアクセスログ
メッセージブローカへの通信情報を記録します。詳細については、「4.16.6 メッセージブローカのアクセスログ」を参照
してください。
4.16.1 設計方法
JMSの利用目的に応じて次のように設計します。
設計方法
JMSの利用目的
メッセージの宛先到達時に、自動的に処理する場合
Message Listenerを使用します。
Publish/Subscribeメッセージングモデルにおいて、受信する
JMSアプリケーションが停止中に配信されたメッセージを受
信する場合
Durable Subscription機能を使用します。
メッセージの欠落を防止する場合
メッセージの不揮発化機能およびローカルトラ
ンザクション機能を使用します。(注)
メッセージの処理とデータベースの処理を、一貫して保証す
る場合
グローバルトランザクション機能を使用します。
受信アプリケーションが興味のある情報だけを取得する場
合
メッセージセレクタ機能を使用します。
資源削減のため、送信拠点/受信拠点ごとに物理格納先を
作成しない場合
メッセージセレクタ機能を使用します。
送信拠点/受信拠点が頻繁に変更されるシステム形態であり、 メッセージセレクタ機能を使用します。
その変更のたびにシステムの環境を変更しない場合
Point-To-Pointメッセージングモデルにおいて、キューに蓄
積されているメッセージを参照する場合
キューブラウザ機能を使用します。
注)メッセージを不揮発化することにより、揮発機能使用時よりもメッセージの送受信にかかるオーバーヘッドが高くなる
ため、メッセージの送受信性能に影響を与えます。
メ ッ セ ー ジ の 不 揮 発 化 / 揮 発 化 は 、 以 下 の い ず れ か の API で 、 javax.jms.DeliveryMode.PERSISTENT /
javax.jms.DeliveryMode.NON_PERSISTENTにメッセージの配信モードを設定してください。
・ javax.jms.MessageProducer.setDeliveryMode(int deliveryMode)
- 321 -
・ javax.jms.MessageProducer.send(Message message, int deliveryMode, int priority, long timeToLive)
・ javax.jms.MessageProducer.send(Destination destination, Message message, int deliveryMode, int priority, long
timeToLive)
4.16.2 ブローカの起動/停止
ここでは、以下について説明します。
・ メッセージブローカの起動
・ メッセージブローカの停止
・ メッセージブローカの一時停止
・ メッセージブローカの再開
メッセージブローカの起動
JMSアプリケーションが物理格納先にメッセージを送受信する場合、物理格納先を管理しているメッセージブローカを事
前に起動する必要があります。詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-
「imqbrokerd」を参照してください。
imqbrokerd -name メッセージブローカ名 -port ポート番号
ポイント
imqbrokerdコマンド実行後、コマンドプロンプトは復帰しません。
メッセージブローカ起動時の注意事項
メッセージブローカを起動するホストは、hostsファイルの内容/DNSの設定により、名前解決(IPアドレス解決)を可能
にしておく必要があります。
ネットワーク環境をDNSで運用している場合は、DNSを設定してください。DNSで運用していない場合は、以下に格
納されているhostsファイルの内容を確認して、必要に応じて追加/修正してください。
(Windows(R)のインストールフォルダ)\system32\drivers\etc\hosts
/etc/hosts
注意
hostsファイルにローカルホスト名を設定する場合、リモートから参照可能なIPアドレスを先に設定してください。詳細
については、「使用上の注意」の「注意事項」-「Interstage共通の注意事項」-「hostsファイルの記載について」を参
照してください。
以下のサービスを起動する前に、メッセージブローカを起動してください。
- IJServerクラスタ
- Interstage Java EE DASサービス
- 322 -
上記のサービス起動後に、それぞれのログを参照し、ERROR/WARNINGメッセージが出力されていないかを確認
してください。
以下のERROR/WARNINGメッセージが出力されている場合、上記のサービスを停止し、メッセージブローカを起
動後、上記のサービスを再度起動してください。
WARNINGメッセージ
- ISJEE: WARNING: ISJEE_IJMQ_C4003: Error occurred on connection creation [{0}:{1}]. - cause:
java.net.ConnectException: Connection refused: connect: ThreadID=10,ThreadName=main
- ISJEE: WARNING: ISJEE_MQJMSRA_RA4001: getJMXServiceURLList:Exception:Message=Caught
exception when contacing portmapper.: ThreadID=10,ThreadName=main
ERRORメッセージ
- ISJEE:
ERROR:
ISJEE_MQJMSRA_MC4001:
constructor:Aborting:JMSException
createConnection=IJMQ_C4003: Error occurred on connection creation [{0}:{1}]. java.net.ConnectException: Connection refused: connect: ThreadID=10,ThreadName=main
on
cause:
運用環境の変更
JMSを使用していないIJServerクラスタ、またはInterstage Java EE DASサービス運用環境からJMSを使用するIJServer
クラスタ、またはInterstage Java EE DASサービス運用環境に変更する場合は、必ずIJServerクラスタ、またはInterstage
Java EE DASサービスを停止し、メッセージブローカを起動後、IJServerクラスタ、またはInterstage Java EE DASサー
ビスを再度起動してください。再起動を実施しない場合、JMS機能が正しく使用できません。
注意
以下の条件の場合、IJServerクラスタ、またはInterstage Java EE DASサービスの起動に時間がかかる可能性があります。
・ JMSを使用する場合。かつ、
・ IJServerクラスタ、またはInterstage Java EE DASサービス起動時にメッセージブローカが未起動の場合。かつ、
・ JMSのリソース定義で有効なConnectionFactoryを複数定義している場合。
または、MDBアプリケーションを複数配備している場合。
メッセージブローカが未起動であるため、IJServerクラスタの起動に時間がかかる現象を回避するためには、必要に応じて、
IJServerクラスタの起動待ち時間(デフォルト600秒)を修正してください。
メッセージブローカのサービス化
メッセージブローカは、通常コマンドで起動する必要がありますが、オペレーティングシステム起動時に自動起動する運
用を行う場合、以下の手順でサービス化することができます。
登録
imqsvcadmin installコマンドを実行して、サービスに登録します。メッセージブローカがサービス名「Interstage Message
Queue Broker」としてサービスに登録されます。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の
「Java EE運用コマンド」-「imqsvcadmin」-「installサブコマンド」を参照してください。
imqsvcadmin install -args メッセージブローカの起動引数
例
メッセージブローカのインスタンス名を「test」、ポート番号を「37676」に設定してサービス化する場合は、以下のように
imqsvcadminコマンドを実行します。
imqsvcadmin install -args "-name test -port 37676"
- 323 -
解除
imqsvcadmin removeコマンドを実行して、サービス登録を解除します。サービスの削除実行時にメッセージブローカ
が起動中だった場合、メッセージブローカの停止後にサービスから削除されます。コマンドの詳細については、「リファ
レンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqsvcadmin」-「removeサブコマンド」を参照してくださ
い。
imqsvcadmin remove
注意
・ サービス化できるメッセージブローカは、1つです。
・ サービス登録時に指定した情報は、変更できません。変更する場合は、いったんサービスを削除してから、新しい情
報を使用して登録してください。
・ サービスのログオンアカウントを設定する場合は、管理者権限を持つアカウントを設定してください。
登録
本作業は、rootユーザで実施してください。
1. rcスクリプトの編集
サービス化のため、rcスクリプト("ijmq")が下記のディレクトリに提供されています。
格納先
/opt/FJSVisjee/imq/etc/init.d
任意の場所に、ijmqスクリプトを複写(以下の例:/tmpディレクトリ)します。
cp /opt/FJSVisjee/imq/etc/init.d/ijmq /tmp
複写後、ijmqファイルの以下の項目を編集します。設定値は、ダブルクォーテーション("")で囲んで設定してく
ださい。また、以下の項目以外は、編集しないでください。rcスクリプトが正しく動作しない可能性があります。
BROKER_PORT
サービス化するブローカプロセスが使用するポート番号。
注)ここで設定した値は、ブローカのインスタンス名としても採用されます。
BROKER_OPT
ブローカプロセスに設定するブローカオプションのリスト。
複数指定する場合は、オプションを半角の空白で区切ってください。
VM_ARGS
ブローカプロセス起動時にJVMに渡すVMオプションのリスト。
複数指定する場合は、オプションを半角の空白で区切ってください。
以下のように設定します。
#!/bin/sh
#
# ijmq:
Interstage Application Server
#
# Version:
@(#) /etc/rc.d/init.d/ijmq 1.0
#
# Author:
FUJITSU LIMITED
#
# chkconfig: 2345 97 3
# description: Interstage Application Server
- 324 -
# processname: imqbrokerd
# set broker port
BROKER_PORT="37676"
BROKER_OPT="-Dimq.system.max_count=1 -Dimq.system.max_size=1k"
VM_ARGS="-Xmx256m"
2. rcスクリプトの格納
1.で作成したファイルのパーミッションを「0500」に変更し、/etc/init.dに格納します。複数のrcスクリプトの作成/
登録を行う場合は、rcスクリプトのファイル名を変更して登録してください。
chmod 0500 /tmp/ijmq
mv /tmp/ijmq /etc/init.d/ijmq01
3. サービスの登録
/etc/rc0.d、/etc/rc2.dに、シンボリックリンクを作成します。
ln -s /etc/init.d/ijmq01 /etc/rc0.d/K03ijmq01
ln -s /etc/init.d/ijmq01 /etc/rc2.d/S97ijmq01
chkconfigコマンドを使用してサービスを登録します。
/sbin/chkconfig --add ijmq01
解除
本作業は、rootユーザで実施してください。
1. サービスの停止
サービスが起動している場合は、停止します。
/etc/init.d/ijmq01 stop
2. サービスの登録解除
/etc/rc0.d、/etc/rc2.dに、作成したシンボリックリンクを削除します。
rm /etc/rc0.d/K03ijmq01
rm /etc/rc2.d/S97ijmq01
chkconfigコマンドを使用してサービスの登録を解除します。
/sbin/chkconfig --del ijmq01
3. rcスクリプトの削除
/etc/init.dに格納したrcスクリプトを、別ディレクトリに退避/削除を行います。
注意
・ 登録したサービスは、Interstageのアンインストール時に削除されません。アンインストール後に不要となったサービス
は、必ず削除してください。
- 325 -
・ rcスクリプトは、IJServerクラスタのバックアップ・リストアの対象とはなりません。バックアップ時には、別途、登録したrc
スクリプトファイルのバックアップを行ってください。また、リストア時には、バックアップしたrcスクリプトの登録作業から
再度実行してください。
メッセージブローカの停止
imqcmdコマンドを使用して、メッセージブローカを停止します。停止対象のメッセージブローカが動作するホスト名とポー
ト番号を指定してください。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」
-「imqcmd」-「shutdown bkrサブコマンド」を参照してください。
imqcmd shutdown bkr -b localhost:37676
メッセージブローカの一時停止
imqcmdコマンドを使用して、メッセージブローカを一時停止します。メッセージブローカを一時停止すると、新しい接続の
受け入れ、メッセージの受信、配信を停止できます。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」
の「Java EE運用コマンド」-「imqcmd」-「pause bkrサブコマンド」を参照してください。
imqcmd pause bkr -b localhost:37676
メッセージブローカの再開
imqcmdコマンドを使用して、メッセージブローカを再開します。メッセージブローカを再開すると、メッセージブローカの
新しい接続の受け入れ、メッセージの受信、配信が再開されます。コマンドの詳細については、「リファレンスマニュアル
(コマンド編)」の「Java EE運用コマンド」-「imqcmd」-「resume bkrサブコマンド」を参照してください。
imqcmd resume bkr -b localhost:37676
4.16.3 JMSのメッセージを送受信する準備
Java EEアプリケーションからJMSのメッセージを送受信するために、以下のリソースと物理格納先を作成します。
・ JMS接続ファクトリ
・ JMS送信先リソース
JMS接続ファクトリとJMS送信先リソースは、asadminコマンドのcreate-jms-resourceサブコマンドで作成します。物理格納
先の作成については、「2.18.3 物理格納先の管理」を参照してください。
また、JMSホストを設定します。詳細については、「JMSホストの設定」を参照してください。
JMS接続ファクトリ
JMS接続ファクトリ(Connection Factory)とは、JMSアプリケーションとメッセージブローカとのコネクションを確立するため
に必要なオブジェクトです。JMS規約で規定された以下のインタフェースのいずれかを実装したオブジェクトを作成して
JNDIに登録します。
・ javax.jms.ConnectionFactory
・ javax.jms.QueueConnectionFactory
・ javax.jms.TopicConnectionFactory
登録したJMS接続ファクトリは、JNDIを経由してJMSアプリケーションで利用可能です。JMSアプリケーションは、獲得し
たJMS接続ファクトリに対して、JMS規約で規定されたAPIを発行し、メッセージブローカとのコネクションを確立します。
JMS接続ファクトリの登録/変更/削除は、Interstage Java EE管理コンソール/asadminコマンドを使用して行います。
asadminコマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「asadmin」-「リ
ソース」を参照してください。
- 326 -
また、JMS送信先リソースの登録/変更時に必要となる定義項目の詳細については、「6.6.3 JMS接続ファクトリの定義項
目」を参照してください。
ポイント
IJServerクラスタ上で、Publish/Subscribeメッセージングモデルを使用したJava EEアプリケーションの運用を行う場合は、
JMS接続ファクトリの追加プロパティとして、必ずClientIdを設定してください。
JMS送信先リソース
JMS送信先リソース(Destination)とは、JMSアプリケーションと物理格納先との接続方法を指定します。JMS規約で規定さ
れた以下のインタフェースのいずれかを実装したオブジェクトを作成してJNDIに登録します。
・ javax.jms.Topic
・ javax.jms.Queue
登録したJMS送信先リソースは、JNDIを経由してアプリケーションで利用可能となります。JMSアプリケーションは、獲得
した送信先リソースに対して、JMS規約で規定されたAPIを発行し、メッセージブローカとのコネクションを確立します。
JMS送信先リソースの登録/変更/削除は、Interstage Java EE管理コンソール/asadminコマンドを使用して行います。
asadminコマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「asadmin」-「リ
ソース」を参照してください。
また、JMS送信先リソースの登録/変更時に必要となる定義項目の詳細については、「6.6.4 JMS送信先リソースの定義
項目」を参照してください。
JMSホストの設定
JMSホストは、メッセージブローカが動作しているシステムを指定します。
JMSホストの設定は、Interstage Java EE管理コンソール/asadminコマンドを使用して行います。asadminコマンドの詳細
については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「asadmin」-「configs.config.jms-service
の定義項目」を参照してください。
また、設定時に必要となる定義項目の詳細については、「6.8.10 JMSサービスの定義項目」を参照してください。
ポイント
メッセージブローカのadminユーザのパスワード変更した場合は、必ずJMSホストの管理パスワードも変更してください。
4.16.4 JMSクライアントアプリケーションの運用
JMSクライアントアプリケーションを動作させるためには、IJServerクラスタを使用するか、アプリケーションクライアントコン
テナを使用して運用します。
JMSクライアントアプリケーションは、JMS 1.1規約に従って作成してください。
以下の環境変数に、JMSアプリケーションの運用に必要なパス/クラスファイルが設定されていることを確認してください。
環境変数PATH
- JDKのパス (注)
環境変数CLASSPATH
- C:\Interstage\F3FMisjee\lib\javaee.jar
- 327 -
- C:\Interstage\F3FMisjee\lib\install\applications\jmsra\imqjmsra.jar
- C:\Interstage\F3FMisjee\lib\appserv-rt.jar
- C:¥Interstage¥F3FMisjee¥lib¥appserv-admin.jar
- C:\Interstage\F3FMisjee\imq\lib\jms.jar
環境変数PATH
- JDKのパス (注)
環境変数CLASSPATH
- /opt/FJSVisjee/lib/javaee.jar
- /opt/FJSVisjee/lib/install/applications/jmsra/imqjmsra.jar
- /opt/FJSVisjee/lib/appserv-rt.jar
- /opt/FJSVisjee/lib/appserv-admin.jar
- /opt/FJSVisjee/imq/lib/jms.jar
注)JDKが複数インストールされている場合は、使用するJDKのパスが有効となるよう設定してください。
4.16.5 メッセージブローカのログ
メッセージブローカは、メッセージブローカの情報をログとして記録します。メッセージブローカのログは、ブローカの調査、
状態の監視に役立ちます。
出力先
ログの出力先は、次のとおりです。
[Java EE共通ディレクトリ]\domains\interstage\imq\instances\${メッセージブローカ名}\log
[Java EE共通ディレクトリ]/domains/interstage/imq/instances/${メッセージブローカ名}/log
ログファイル名
・ log.txt
・ log_N.txt(N:1以上の数値)
デフォルトでは、週に1度ローテーションされ、最大で10個のログファイル(log.txt、log_1.txt~log_9.txt)が作成されます。
出力形式
出力されるログの形式は、次のとおりです。
[dd/MMM/yyyy:HH:mm:ss z] ログ本文
各出力項目について、以下に説明します。
dd/MMM/yyyy:HH:mm:ss z
ログの出力時刻を出力します。
- 328 -
ログ本文
ログ本文のメッセージ内容については、「メッセージ集」を参照してください。
ログ本文は、以下のレベルで出力されます。
レベル
意味
ERROR
システム障害が生じる可能性のある問題点を示すメッセージ
WARNING
システム障害が生じる可能性はないが、留意すべき警告
INFO
その他の情報メッセージの報告
ログの設定
ログの出力は、以下の設定を変更できます。
・ デッドメッセージに関するロギング
・ ローテーションのタイミング
・ ログの出力時刻のタイムゾーン
ログの設定は、ログ機能に関するプロパティを使用して、imqbrokerdコマンドで行います。
ログ機能に関するプロパティの詳細については、「6.7.6 ログ機能に関するプロパティ」を参照してください。
4.16.6 メッセージブローカのアクセスログ
メッセージブローカに対する通信時のアクセスログを記録します。メッセージブローカのアクセスログは、メッセージブロー
カの調査に役立ちます。
アクセスログの出力先
アクセスログの出力先は、次のとおりです。
[Java EE共通ディレクトリ]\domains\interstage\imq\instances\${メッセージブローカ名}\log
[Java EE共通ディレクトリ]/domains/interstage/imq/instances/${メッセージブローカ名}/log
ログファイル名
・ accesslog.txt
・ accesslog_N.txt(N:1以上の数値)
デフォルトでは、週に1度ローテーションされ、最大で10個のログファイル(accesslog.txt、accesslog_1.txt~accesslog_9.txt)
が作成されます。
アクセスログの出力内容
アクセスログは、以下の操作を実施したかという情報を出力します。
操作内容
いつ(When)
セキュリティポリシー
・ アクセス日時[DD/MM/YYYY hh:mm:ss.SSS Z]
・ スレッドID
・ スレッド名
- 329 -
操作内容
セキュリティポリシー
・ 処理時間
どこから(Where)
・ IPアドレス
だれが(Who)
・ IPアドレス(コネクションID)
何に対して(What)
・ 補足情報
何のために(Why)
・ ステータス
どのように(How)
・ イベント
アクセスログ機能は、デフォルトで有効になります。
アクセスログのフォーマットを以下に示します。
[DD/MM/YYYY hh:mm:ss.SSS Z] スレッドID(スレッド名) IPアドレス(コネクションID) イベント ステータス 処理時間
(補足情報)
フォーマット詳細
項目
説明
例
DD
日2桁
01
MM
月2桁
09
YYYY
西暦4桁
2006
hh
時(24H表記)
17
mm
分
35
ss
秒
12
SSS
ミリ秒
396
Z
UTCからの時間差
(+hhmm/-hhmm )
+0900
スレッドID
メッセージブローカで使用するスレッドID
ThreadID=25
IPアドレス
クライアントのIPアドレス
10.131.192.224
コネクションID
コネクションのID
e3:bb:ec:44:9:f
イベント
メッセージブローカに対する要求や要求に対する結果を示します。
(注1)
AUTHENTICATE_
REPLY
ステータス
イベント結果(注2)
OK
処理時間
要求から応答までにかかった時間(ミリ秒)
応答がない処理の場合は-----と出力します。
0.012345
補足情報
イベントに対応した詳細情報をname=valueの形式で出力します。(注
1)
JMQAuthType=dig
est
注1)イベント/補足情報の詳細情報については、アクセスログのイベント種別を参照してください。
注2)ステータスの詳細情報については、アクセスログのステータス種別を参照してください。
アクセスログのイベント種別
イベント
ACKNOWLEDGE_
REPLY
補足情報(注)
MessageID
ConsumerID
意味
Acknowledge要求を受け付けました。
- 330 -
イベント
補足情報(注)
意味
・ MessageID
Acknowledgeが実施されるメッセージIDを表示します。
・ ConsumerID
Acknowledgeを実施するコンシューマIDを表示します。
ADD_CONSUMER_
REPLY
JMQConsumerID
JMQSessionID
JMQDestType
JMQDestination
JMQSelector
JMQNoLocal
JMQDurableName
コンシューマの作成要求を受け付けました。
・ JMQConsumerID
作成したコンシューマIDを表示します。
・ JMQSessionID
コンシューマ作成元のセッションIDを表示します。
・ JMQDestType
コンシューマが使用する物理格納先タイプを表示します。
・ JMQDestination
コンシューマが使用する物理格納先名を表示します。
・ JMQSelector
セレクタ条件が設定されている場合はtrue、設定されて
いない場合はfalseを表示します。
・ JMQNoLocal
コンシューマが使用するコネクションと同じコネクション
を使用するプロデューサが送信したメッセージをコン
シューマで受信できない場合はtrue、受信できる場合は
falseを表示します。
・ JMQDurableName
DurableSubscription名を表示します。
ADD_PRODUCER_
REPLY
JMQProducerID
JMQSessionID
JMQDestType
JMQDestination
プロデューサの作成要求を受け付けました。
・ JMQProducerID
作成したプロデューサIDを表示します。
・ JMQSessionID
プロデューサ作成元のセッションIDを表示します。
・ JMQDestType
プロデューサが使用する物理格納先タイプを表示します。
・ JMQDestination
プロデューサが使用する物理格納先名を表示します。
AUTHENTICATE_
REPLY
JMQAuthType
コネクションの認証処理を受け付けました。
・ JMQAuthType
ユーザ認証方式を表示します。digestと表示されます。
AUTHENTICATE_
REQUEST
なし
メッセージブローカがクライアントにユーザ認証を要求します。
BROWSE_REPLY
JMQConsumerID
JMQSelector
JMQDestination
キューブラウザの作成要求を受け付けました。
・ JMQConsumerID
作成したコンシューマIDを表示します。
・ JMQSelector
セレクタ条件が設定されている場合はtrue、設定されて
いない場合はfalseを表示します。
・ JMQDestination
キューブラウザが使用する物理格納先名を表示します。
- 331 -
イベント
COMMIT_TRANSA
CTION_REPLY
補足情報(注)
JMQTransactionID
意味
リソースマネージャのトランザクション/JTAトランザクション
のコミット要求を受け付けました。
・ JMQTransactionID
操作するトランザクションIDを表示します。
CREATE_DESTINA
TION_REPLY
JMQDestType
JMQDestination
物理格納先の作成要求を受け付けました。
・ JMQDestType
作成する物理格納先タイプを表示します。
・ JMQDestination
作成する物理格納先名を表示します。
CREATE_SESSION
_REPLY
JMQSessionID
JMQAckMode
セッションの作成要求を受け付けました。
・ JMQSessionID
作成したセッションIDを表示します。
・ JMQAckMode
受信するメッセージの確認応答方式を表示します。
出力する値は、以下の4パターンです。
- SESSION_TRANSACTED
- AUTO_ACKNOWLEDGE
- CLIENT_ACKNOWLEDGE
- DUPS_OK_ACKNOWLEDGE
DELETE_CONSUM
ER_REPLY
JMQConsumerID
コンシューマの削除要求を受け付けました。
・ JMQConsumerID
削除するコンシューマIDを表示します。
DELETE_PRODUC
ER_REPLY
JMQProducerID
プロデューサの削除要求を受け付けました。
・ JMQProducerID
削除するプロデューサIDを表示します。
DELIVER_REPLY
JMQConsumerID
メッセージの配信要求を受け付けました。
・ JMQConsumerID
メッセージを配信するコンシューマIDを表示します。
DESTROY_DESTIN
ATION_REPLY
JMQDestType
JMQDestination
物理格納先の削除要求を受け付けました。
・ JMQDestType
削除する物理格納先タイプを表示します。
・ JMQDestination
削除する物理格納先名を表示します。
DESTROY_SESSIO
N_REPLY
JMQSessionID
セッションの削除要求を受け付けました。
・ JMSSessionID
削除するセッションIDを表示します。
END_TRANSACTI
ON_REPLY
JMQTransactionID
JTAトランザクションの終了要求を受け付けました。
・ JMQTransactionID
操作するトランザクションIDを表示します。
GOODBYE_REPLY
なし
メッセージブローカとの切断要求を受け付けました。
HELLO_REPLY
なし
メッセージブローカと接続処理を受け付けました。
PREPARE_TRANS
ACTION_REPLY
JMQTransactionID
JTAトランザクションのコミット準備(prepare)要求を受け付け
ました。
- 332 -
イベント
補足情報(注)
意味
・ JMQTransactionID
操作するトランザクションIDを表示します。
RECOVER_TRANS
ACTION_REPLY
JMQTransactionID
JTAトランザクションのリカバー要求を受け付けました。
・ JMQTransactionID
操作するトランザクションIDを表示します。
REDELIVER
JMQSetRedelivered
JMQTransactionID
メッセージ再配信要求を受け付けました。
・ JMQSetRedelivered
受信処理中メッセージの場合はtrue、事前配信メッセー
ジの場合はfalseを表示します。
・ JMQTransactionID
操作するトランザクションIDを表示します。
ROLLBACK_REPL
Y
JMQTransactionID
JMQRedeliver
JTAトランザクションのロールバック要求を受け付けました。
・ JMQTransactionID
操作するトランザクションIDを表示します。
・ JMQRedeliver
受信処理中メッセージの場合はtrue、事前配信メッセー
ジの場合はfalseを表示します。
SEND_REPLY
MessageID
JMQDestType
JMQDestination
メッセージ送信要求を受け付けました。
・ MessageID
送信するメッセージIDを表示します。
・ JMQDestType
メッセージが送信される物理格納先タイプを表示します。
・ JMQDestination
メッセージが送信される物理格納先名を表示します。
SET_CLIENTID_RE
PLY
JMQClientID
クライアントIDの設定要求を受け付けました。
・ JMQClientID
コネクションに設定するクライアントIDを表示します。
START
なし
コネクションの開始要求を受け付けました。
JMQSessionID
メッセージ配信処理の開始要求を受け付けました。
・ JMQSessionID
メッセージ配信処理を開始するセッションIDを表示します。
START_TRANSAC
TION_REPLY
JMQTransactionID
JMQXAFlags
JMQXAOnePhase
JMQSessionID
リソースマネージャのトランザクション/JTAトランザクション
の開始要求を受け付けました。
・ JMQTransactionID
開始したトランザクションIDを表示します。
・ JMQXAFlags
XAトランザクションの場合はtrue、XAトランザクションで
はない場合はfalseを表示します。
・ JMQXAOnePhase
XAトランザクションの場合かつ1フェーズコミットトランザ
クションの場合はtrue、1フェーズコミットトランザクション
ではない場合はfalseを表示します。
・ JMQSessionID
トランザクションが作成されたセッションIDを表示します。
- 333 -
イベント
STOP_REPLY
補足情報(注)
意味
なし
コネクションの停止要求を受け付けました。
JMQSessionID
メッセージ配信処理の停止要求を受け付けました。
・ JMQSessionID
メッセージ配信処理を停止するセッションIDを表示します。
注)表に記載された補足情報は、値が設定されている場合にだけアクセスログに出力します。
アクセスログのステータス種別
ステータス
定義詳細
OK
処理が正常に終了しました。
NOT_MODIFIED
トランザクションの状態変更に失敗しました。
BAD_REQUEST
不正なパラメタが指定されました。
FORBIDDEN
アクセスが拒否されました。
NOT_FOUND
リソースが見つかりません。
NOT_ALLOWED
指定されたパラメタに誤りがあります。
TIMEOUT
タイムアウトが発生しました。
CONFLICT
要求された操作により矛盾が発生しました。
GONE
トランザクションの状態が不明です。
PRECONDITION_FAILE
D
要求に適した状態ではありません。
INVALID_LOGIN
認証に失敗しました。
RESOURCE_FULL
蓄積メッセージが超過しました。
ENTITY_TOO_LARGE
メッセージが大きすぎます。
ERROR
内部エラーが発生しました。
UNAVAILABLE
本操作を実施できる状態ではありません。
4.17 コネクタの運用方法
ここでは、コネクタを利用する場合の運用方法について説明します。
4.17.1 コネクタモジュールの配備とリソース定義の作成
コネクタの運用形態は、リソースアダプタの種別によって異なります。配備から各種リソース作成までの手順を以下に示し
ます。Interstage Java EE管理コンソールまたはasadminコマンドから実行します。
・ アウトバウンド・リソースアダプタ
1. 単体、またはearモジュールに含めたコネクタモジュールの配備
2. コネクタ接続プールの作成
3. コネクタリソースの作成
4. 管理オブジェクトリソースの作成
・ インバウンド・リソースアダプタ
1. 単体、またはearモジュールに含めたコネクタモジュールの配備
- 334 -
2. 受信用アプリケーション(Message-Driven Bean)の設定
詳細は、「2.7.2 Message-driven Beanの実行環境」を参照してください。
3. 管理オブジェクトリソースの作成
管理オブジェクトリソースについては、必要に応じて作成してください。また、リソースアダプタの定義情報や各種リソース
の定義情報についても、Interstage Java EE管理コンソールまたはasadminコマンドから設定可能です。以下の情報もあわ
せて参照してください。
・ 関連リソースの説明および主要な機能について:
「2.19 コネクタの提供機能」を参照してください。
・ コネクタ接続プールのチューニング可能な項目の詳細について:
「チューニングガイド」-「コネクタのチューニング」を参照してください。
・ asadminのコネクタ関連サブコマンド/setサブコマンドから指定可能な項目について:
「リファレンスマニュアル(コマンド編)」-「asadmin」を参照してください。
コネクタモジュールの配備
コネクタモジュールの配備に関して、リソースアダプタの定義情報を作成することが可能です。リソースアダプタ名だけ動
作に必須の情報です。IJServerクラスタで一意の名前を指定する必要があり、配備を通してコネクタモジュール単位で設
定します。リソースアダプタ名以外は、任意の項目のため必要に応じて定義してください。配備の詳細は、「4.6 アプリケー
ションの配備」を参照してください。
リソースアダプタの定義情報の詳細
リソースアダプタ名
配備されたコネクタモジュールを識別するための名前です。コネクタ接続プールの作成や、受信用アプリケーション
(Message-driven Bean)の連携時に使用されます。
以下のように単体配備とearモジュールに含めて配備する場合で指定方法が異なります(アプリケーション名だけユー
ザから指定可能)。
- 単体配備の場合:
リソースアダプタ名 = 「アプリケーション名」
- earモジュールに含めて配備する場合:
リソースアダプタ名 =
「アプリケーション名#コネクタモジュール名から拡張子(.rar)を除いた文字列」
例
sampleRar.rarをsampleEar.earに含めて配備した場合(アプリケーション名はデフォルト値を使用)
リソースアダプタ名:sampleEar#sampleRar
スレッドプールID
スレッドプールのための識別子です。WorkManagerが利用するスレッドプールをユーザが指定する場合に使用します。
指定しなかった場合は、デフォルトのスレッドプールが使用されます。詳細は、「2.19.6 スレッドプールを利用したWork
の実行」を参照してください。
リソースアダプタの定義情報の作成方法
以下のように単体配備とearモジュールに含めて配備する場合で指定方法が異なります。
・ 単体配備の場合:
Interstage Java EE管理コンソールを使用して配備する場合、配備時または配備後の編集画面で作成することができ
ます。asadminコマンドを使用して配備した場合、create-resource-adapter-configサブコマンドで作成します。
・ earモジュールに含めて配備する場合:
配備後にasadminコマンドのcreate-resource-adapter-configサブコマンドで作成可能です。
- 335 -
作成したリソースアダプタの定義情報を更新するには、asadminコマンドのsetサブコマンドを使用します。リソースアダプ
タの定義情報を更新した場合は、更新後の定義情報を有効にするために、コネクタモジュールが配備されたIJServerク
ラスタ、またはInterstage Java EE DASサービスを再起動してください。
コネクタ接続プールの作成
以下の情報を指定して作成します。
・ プール名
・ 配備されたコネクタモジュールのリソースアダプタ名
・ 接続定義名(ConnectionFactoryのインタフェース名)
・ 追加のプロパティ
コネクタリソースの作成
以下の情報を指定して作成します。
・ ConnectionFactoryをJNDIでlookupするためのJNDI名
・ 作成したコネクタ接続プールのプール名
・ コネクタリソースを参照可能にするIJServerクラスタ名
管理オブジェクトリソースの作成
以下の情報を指定して作成します。
・ 管理対象オブジェクトをJNDIでlookupするためのJNDI名
・ 配備されたコネクタモジュールのリソースアダプタ名
・ リソースタイプ(管理対象オブジェクトのインタフェース名)
・ 管理オブジェクトリソースを参照可能にするIJServerクラスタ名
・ 追加のプロパティ
コネクタの環境設定
ネイティブライブラリを使用したコネクタを運用する場合は、「2.22.6 クラスローダ使用時の注意事項」の「コネクタを使用
する際の注意事項」を参照して環境設定を行います。
注意
組み込みのリソースアダプタについて
Interstage Java EEには組み込みのリソースアダプタが用意されています。
・ jmsra
jmsraはJMSのための組み込みのリソースアダプタです。JMSリソースを作成すると、対応したコネクタ接続プール/コ
ネクタリソース/管理オブジェクトリソースが自動的に作成されます。
・ jaxr-ra, __ds, __cp, __xa
jaxr-ra, __ds, __cp, __xaは、システム内部で使用される組み込みのリソースアダプタです。配備時のリソースアダプタ
名に、組み込みのリソースアダプタの名前を指定しないでください。また、リソース作成時のリソースアダプタ名に、
jmsraを除いた組み込みのリソースアダプタの名前を指定しないでください。指定した場合は、動作保証されません。
注意
Java EE Connector Architecture1.0規約のリソースアダプタとして動作する条件
- 336 -
XML Schemaに対応したra.xmlが以下のすべての条件を満たす場合に、Java EE Connector Architecture1.0規約に準拠
したリソースアダプタとして動作します。以下の条件を1つでも満たさない場合は、Java EE Connector Architecture1.5規
約に準拠したリソースアダプタとして認識されます。
・ リソースアダプタクラスの定義がない
<connector><resourceadapter><resourceadapter-class>タグが存在しない、またはタグの値が空文字列
・ インバウンド・リソースアダプタの定義がない
<connector><resourceadapter><inbound-resourceadapter>タグが存在しない
・ 管理対象オブジェクトの定義がない
<connector><resourceadapter><adminobject>タグが存在しない
・ アウトバウンド・リソースアダプタの接続定義が1つだけ指定されている
<connector><resourceadapter><outbound-resourceadapter><connection-definition>タグが1つだけ存在する
4.17.2 コネクタモジュールの配備解除とリソース定義の削除
各種リソース削除から配備解除までの手順を以下に示します。Interstage Java EE管理コンソールまたはasadminコマンド
から実行します。
1. コネクタリソースの削除、管理オブジェクトリソースの削除
2. コネクタ接続プールの削除
3. リソースアダプタの定義情報の削除
4. 単体、またはearモジュールに含めたコネクタモジュールの配備解除
cascadeオプションについて
cascadeオプションとは、関連するリソースを一括で削除するためのオプションです。Interstage Java EE管理コンソールか
らコネクタモジュールの配備解除またはコネクタ接続プールの削除を実行する場合は、常にcascadeオプションがtrueに
設定されて処理が実行されます。asadminコマンドから実行する場合は、実行時にcascadeオプションを指定することがで
きます。cascadeオプションをtrue / falseに設定した場合の動作を以下に説明します。
単体のコネクタモジュールの配備解除時
cascadeオプションをtrueに設定した場合、関連するリソースの削除を配備解除時に一括で実施します。cascadeオプ
ションがfalseの場合は、関連するリソースが存在すると配備解除に失敗します。関連するリソースとは、コネクタ接続
プール、コネクタリソース、管理オブジェクトリソース、リソースアダプタの定義情報を示します。
注意
earに含めたコネクタモジュールは、cascadeオプションの指定によらずリソースを削除せずに配備解除を行うことがで
きます。作成済みのリソースを引き継いで同一のモジュールを再度配備する場合は、配備時に同一のリソースアダプ
タ名を指定してください。また、管理オブジェクトリソースを引き継ぐ場合は、リソースアダプタ名を再配備後に設定し
てください。
コネクタ接続プールの削除時
cascadeオプションをtrueに設定した場合、コネクタリソースの削除をコネクタ接続プール削除時に一括で実施します。
cascadeオプションがfalseの場合は、接続プールを参照したコネクタリソースが存在すると削除に失敗します。
4.18 JMSリソースとコネクタリソースの関係
JMSは「jmsra」という名前で組み込まれているコネクタのリソースアダプタを使用します。JMSの利用ユーザはInterstage
Java EE管理コンソールのJMSリソース用の画面、またはasadminコマンドのJMSリソース用サブコマンドを使用してJMSリ
ソースを操作します。そのため、通常はリソースアダプタを意識する必要はありません。
- 337 -
JMSリソースはコネクタリソースとして定義されているため、JMSリソースの定義編集時や運用時にコネクタリソースに関す
るメッセージが出力される場合がありますので、この場合には以下の説明を参照してください。
注意
Interstage Java EE管理コンソールのコネクタ用の画面、またはasadminコマンドのコネクタ用サブコマンドにおいてJMSリ
ソースを操作した場合、JMS向けの定義チェック(必須項目チェック、文字種チェックなど)が実施されません。
JMSリソースの操作はInterstage Java EE管理コンソールのJMSリソース用の画面、またはasadminコマンドのJMSリソース
用サブコマンドを使用して操作してください。
JMSリソースとコネクタリソースの関係
JMSリソースとコネクタリソースの関係は以下の関係となっています。
コネクタリソース
JMSリソース
JMS接続ファクトリ
JMS送信先リソース
説明
コネクタ接続プール
接続をプールして管理するリソース
コネクタリソース
接続対象にアクセスするためのリソー
ス
管理オブジェクトリソース
リソースアダプタ固有のリソース
JMS接続ファクトリはコネクタ接続プールとコネクタリソースとして定義されます。またJMS送信先リソースは管理オブジェ
クトリソースとして定義されます。
JMSリソースを新規作成する場合、以下に示すように対応するコネクタリソースを作成します。また、更新/削除の場合も
同様に対応するコネクタリソースの更新/削除が行われます。
JMS接続ファクトリの新規作成
以下の各種コネクタリソースを作成します。
1. コネクタ接続プールを作成します。コネクタ接続プールの名前はJMS接続ファクトリのJNDI名、リソースアダプ
タは「jmsra」を使用します。
2. コネクタリソースを作成します。コネクタリソースのJNDI名はJMS接続ファクトリのJNDI名、コネクタ接続プール
は1.で作成した接続プールを使用します。
すでにリソースアダプタが「jmsra」の同名のコネクタ接続プールが存在して同名のコネクタリソースが存在しない場合
には、存在するコネクタ接続プールに対してコネクタリソースが作成されます。「jmsra」以外のコネクタ接続プールが
存在した場合にはエラーとなります。
JMS送信先リソースの新規作成
管理オブジェクトリソースを作成します。管理オブジェクトリソースのJNDI名はJMS送信先リソースのJNDI名を使用し
ます。
JMSリソースとコネクタリソースの定義関係
以下にJMSリソースとコネクタリソースの定義項目の関係を説明します。「-」は対応する項目がない項目です。
JMS接続ファクトリ
JMS接続ファクトリとコネクタリソースの各定義項目の関係は以下です。asadminコマンドのsetサブコマンドでJMS接続
ファクトリの各種定義項目を編集する場合には、resources.connector-connection-poolの各対応する定義項目を編集
してください。
コネクタ接続プール
JMS接続ファクトリ
コネクタリソース
JNDI名
名前
JNDI名
-(「jmsra」固定となります)
リソースアダプタ
-
リソースタイプ
接続定義
-
- 338 -
コネクタ接続プール
JMS接続ファクトリ
コネクタリソース
説明
-
説明
-
説明
-
状態
-
状態
初期および最小プールサイズ
初期および最小プールサイズ
-
最大プールサイズ
最大プールサイズ
-
プールサイズ変更量
プールサイズ変更量
-
アイドルタイムアウト
アイドルタイムアウト
-
最大待ち時間
最大待ち時間
-
接続検証
接続検証
-
すべての障害で
すべての障害で
-
トランザクションサポート
トランザクションサポート
-
追加プロパティ
追加プロパティ
-
-
セキュリティマップ
-
ターゲット指定
-
ターゲット指定
JMS送信先リソース
JMS送信先リソースと管理オブジェクトリソースの各定義項目の関係は以下です。asadminコマンドのsetサブコマンド
でJMS送信先リソースの各種定義項目を編集する場合には、resources.admin-object-resourceの各対応する定義項
目を編集してください。
管理オブジェクトリソース
JMS送信先リソース
JNDI名
JNDI名
物理送信先名
-(「Name」プロパティに指定します)
リソースタイプ
リソースタイプ
-(「jmsra」固定となります)
リソースアダプタ
説明
説明
状態
状態
追加プロパティ
追加プロパティ
ターゲット指定
ターゲット指定
4.19 J2EE/Java EE連携の環境設定
ここでは、J2EE/Java EE連携機能を利用する場合の環境設定について説明します。
4.19.1 J2EE実行環境からJava EE実行環境のアプリケーションを呼び出す
場合
J2EE実行環境からJava EE実行環境のアプリケーションを呼び出す場合の環境設定について説明します。
J2EE実行環境の環境構築
J2EE実行環境のIJServerと連携するJava EE実行環境のIJServerクラスタが別マシンの場合、J2EE実行環境にInterstage
Java EE、またはInterstage Java EEクライアントパッケージをインストールしてください。
J2EE実行環境のIJServerの環境設定
Interstage Java EEのJNDI機能を利用できるように、J2EE実行環境のIJServerの環境設定を以下のように設定してください。
- 339 -
1. ワークユニットのアプリケーション固有ライブラリパスに以下を追加してください。
- クライアントスタブJARファイル (注)
- C:\Interstage\F3FMisjee\lib\appserv-rt-client.jar
- C:\Interstage\F3FMisjee\lib\appserv-ext.jar
- /opt/FJSVisjee/lib/appserv-rt-client.jar
- /opt/FJSVisjee/lib/appserv-ext.jar
注) Java EE実行環境のIJServerクラスタにアプリケーションを配備後、asadminコマンドのget-client-stubsサブコマン
ドで獲得できます。
2. クラスローダの分離は以下のどちらかを選択してください。
- EAR間で分離(デフォルト)
- すべて分離
4.19.2 Java EE実行環境からJ2EE実行環境のアプリケーションを呼び出す
場合
Java EE実行環境からJ2EE実行環境のアプリケーションを呼び出す場合の環境設定について説明します。
呼び出すEJBアプリケーションの指定方法
J2EE実行環境のIJServer上で運用するEJBアプリケーションをIIOP通信で呼び出す場合、Java EE実行環境で呼び出す
EJBアプリケーションを指定する方法には以下の2つの方法があります。
・ 他ネーミングサービス連携を使用する
Interstage deployment descriptorファイルに参照名とJNDI名を定義します。この場合、JNDI名にはJ2EE実行環境で
EJBアプリケーションを配備する時に指定したEJBアプリケーション名のみ指定します。
例
以下はEJBアプリケーション名が"CartBean"の場合の例です。
<ejb-ref>
<ejb-ref-name>ejb/MyEjb</ejb-ref-name>
<jndi-name>CartBean</jndi-name>
</ejb-ref>
また、IJServerクラスタの設定で、他ネーミングサービス連携のネーミングサービスURL設定に利用するJ2EE実行環
境のネーミングサービス動作するホスト名とポート番号を指定します。
例
以下はホスト名が"host1"、ポート番号が"8002"の場合の例です。
host1:8002
・ Interstage deployment descriptorファイルに定義する
Interstage deployment descriptorファイルに参照名とJNDI名を定義します。この場合、JNDI名にはInteroperable
Naming Service(以降、INS)の規則を使用して以下のようにJ2EE実行環境のEJBアプリケーションを指定します。
- 340 -
corbaname:iiop:ホスト名:ポート番号#EJBアプリケーション名
それぞれの指定値には以下を指定します。
指定値
説明
ホスト名
利用するJ2EE実行環境のネーミングサービス動作するホスト名
ポート番号
利用するJ2EE実行環境のネーミングサービスが動作するport番号
(デフォルト:8002)
EJBアプリケーション名
J2EE実行環境でEJBアプリケーションを配備する時に指定したEJBアプリ
ケーション名
例
以下はホスト名が"host1"、ポート番号が"8002"、EJBアプリケーション名が"CartBean"の場合の例です。
<ejb-ref>
<ejb-ref-name>ejb/MyEjb</ejb-ref-name>
<jndi-name>corbaname:iiop:host1:8002#CartBean</jndi-name>
</ejb-ref>
クラスパスの設定
呼び出し側のJava EE実行環境のIJServerクラスタでは、呼び出すEJBアプリケーションをJ2EE実行環境に配備した時に
生成されたクライアント配布物をクラスパスに設定する必要があります。クライアント配布物については「J2EE ユーザーズ
ガイド(旧版互換)」を参照してください。
4.20 J2EE/Java EE連携の運用
ここでは、J2EE/Java EE連携の運用について説明します。
4.20.1 J2EE実行環境からJava EE実行環境のアプリケーションを呼び出す
場合
J2EE実行環境のIJServer、Java EE実行環境のIJServerクラスタの運用方法は、特に変更ありません。
アプリケーション運用開始前にJava EE実行環境のIJServerクラスタ、J2EE実行環境のIJServerの順番で起動してください。
注意
J2EE実行環境からInterstage Java EE上のアプリケーション呼び出し時にエラーが発生した場合、メッセージ集を確認し
てください。
4.20.2 Java EE実行環境からJ2EE実行環境のアプリケーションを呼び出す
場合
J2EE実行環境のIJServerとJava EE実行環境のIJServerクラスタも通常の運用方法と同様です。それぞれのマニュアルを
参照して運用してください。
4.21 Java EEアプリケーションのログ
- 341 -
サーバーログ/Java VMログ/HTTPアクセスログ/IIOPアクセスログ/HTTPトレースログ
Java EEでは、以下のログを提供しています。
これらログに出力された情報は、トラブル発生時の調査に役立てることができます。
IJServerクラスタ
- サーバーログ
- Java VMログ
- HTTPアクセスログ
- FJVMログ
FJVMログの詳細は、「チューニングガイド」の「JDK/JREのチューニング」の「FJVMログ」を参照してください。
- IIOPアクセスログ
- HTTPトレースログ
Interstage Java EE DASサービス
- サーバーログ
- HTTPアクセスログ
- IIOPアクセスログ
- HTTPトレースログ
Interstage Java EE Node Agentサービス
- サーバーログ
Interstage Java EE DASサービスについては、何らかの原因でJavaプロセスが異常終了した場合でも、FJVMログは出力
されません。また、FJVMログを出力するJava VMのオプション指定があった場合でも、FJVMログは出力されません。
ログファイルの出力先
ログファイルの出力先のデフォルトは、「6.8.11 ロガーの定義項目」の「ログ出力ディレクトリ」を参照してください。
ログファイルの出力先の変更
ログファイルの出力先ディレクトリは、Interstage Java EE管理コンソール、またはasadminコマンドにより変更可能です。
指定した値の先頭が${com.sun.aas.instanceRoot}以外の場合は、以下のように指定したディレクトリ配下にサーバーイン
スタンス名でディレクトリが作成され、その配下にログファイルが出力されます。
指定した値:C:\logs
サーバーインスタンス名:IJServer001-I1
ログファイルが出力されるディレクトリ:C:\logs\IJServer001-I1
指定した値の先頭が${com.sun.aas.instanceRoot}以外の場合、IJServerクラスタ、サーバインスタンス削除時に、ログファ
イルが出力されるディレクトリは削除されません。手動で削除してください。
・ Interstage Java EE管理コンソール
- IJServerクラスタ/Interstage Java EE DASサービスが出力するログ
[設定] > [クラスタ名-config] または [server-config] > [ロガーの設定]
- Interstage Java EE Node Agentサービスが出力するログ
[ノードエージェント] > [ijna] > [ロガーの設定]タブ
・ asadminコマンドのsetサブコマンド
- IJServerクラスタ/Interstage Java EE DASサービスが出力するログ
「configs.config.log-serviceの定義項目」の「ログ出力ディレクトリ」
- 342 -
- Interstage Java EE Node Agentサービスが出力するログ
「node-agents.node-agent.log-serviceの定義項目」の「ログ出力ディレクトリ」
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参照し
てください。
ログファイルのローテーション
ログファイルはローテーションできます。詳細は、「4.21.6 ログファイルのローテーション」を参照してください。
ログファイルのダウンロード
サーバーログ/Java VMログ/HTTPアクセスログは、Interstage Java EE管理コンソールからダウンロードできます。
・ IJServerクラスタ/Interstage Java EE DASサービスが出力するログ
[クラスタ] > [クラスタ名] または [スタンドアロンインスタンス] > [ログ ダウンロード]タブ
・ Interstage Java EE Node Agentサービスが出力するログ
[ノードエージェント] > [ijna] > [ログ ダウンロード]タブ
イベントログ/システムログ
コマンド処理やInterstage Java EE Node Agentサービスのメッセージの一部はイベントログまたはシステムログに出力され
ます。
イベントログ、システムログの仕様は、各OSの出力規約に従っています。
クライアントのログ
アプリケーションクライアントコンテナの場合
アプリケーションクライアントコンテナでJava EEアプリケーションクライアントを運用する場合、アプリケーションクライアント
コンテナが出力するメッセージはコンソールに出力されます。
この場合、以下のようにメッセージが出力されます。
appclient: LOG_LEVEL: メッセージ番号: メッセージ: ThreadID=スレッドID,ThreadName=スレッド名
例外情報がある場合はスタックトレース
LOG_LEVEL:
・ ERROR :エラー
・ WARNING:警告
・ INFO :情報
スタンドアロンクライアントの場合
ス タ ン ド ア ロ ン ク ラ イ ア ン ト で Java SE ス タ ン ド ア ロ ン ア プ リ ケ ー シ ョ ン を 運 用 す る 場 合 、 ロ グ は Java の
java.util.logging.LogManager を 使 用 し て 出 力 さ れ る た め 、 Java の 「 JRE デ ィ レ ク ト リ の プ ロ パ テ ィ フ ァ イ ル lib/
logging.properties」から初期設定が読み込まれてログの出力先やフォーマットが決定します。
デフォルトでは以下のフォーマットで出力されます。
時刻 ログ出力クラス名 ログ出力メソッド名
LOG_LEVEL: メッセージ
例外情報がある場合はスタックトレース
LOG_LEVEL:
・ ERROR :エラー
・ WARNING:警告
- 343 -
・ INFO :情報
4.21.1 サーバーログ
ファイル名
server.log
出力内容
IJServerクラスタ
IJServerクラスタに配備したアプリケーションの標準出力、標準エラー出力に出力した情報やInterstageが提供するJava
EEの各コンポーネントが出力する情報が出力されます。
Interstage Java EE DASサービス
IJServerクラスタの作成やアプリケーションの配備など、Java EEに関する操作の情報が出力されます。
また、Interstage Java EE DASサービスに配備したアプリケーションの標準出力、標準エラー出力に出力した情報や
Interstageが提供するJava EEの各コンポーネントが出力する情報が出力されます。
Interstage Java EE Node Agentサービス
サーバーインスタンスの作成や起動等、Java EEに関する操作の情報が記録されます。
仕様
・ ログファイルは、プロセス起動時に作成されます。同名ファイルが存在する場合は追加出力されます。
・ 書き込み権限がない場合、イベントログ/システムログにエラーメッセージが出力され、起動に失敗します(注)。
注)
一般ユーザで実行する方法は、「2.1.7 サービス運用ユーザーのカスタマイズ」を参照してください。
・ 「<」、「>」などの文字列の代わりに、サニタイジングされた文字列が出力されることがあります。
サニタイジングの例:
<
&lt;
>
&gt;
&
&amp;
"
&quot;
出力フォーマット
[dd/mm/yyyy hh:mm:ss.ms TZD] ISJEE: LOG_LEVEL: メッセージ番号: メッセージ: ThreadID=スレッド
ID,ThreadName=スレッド名
LOG_LEVEL:
・ ERROR :エラー
・ WARNING:警告
・ INFO :情報
出力例
[08/08/2007 12:30:25.210 +0900] ISJEE: INFO: ISJEE_CORE0001: IJServer is running... :
ThreadID=10,ThreadName=main
[27/09/2007 15:16:15.578 +0900] ISJEE: ERROR: ISJEE_UTIL11500: param=web:
ThreadID=10,ThreadName=main
- 344 -
4.21.2 Java VMログ
ファイル名
jvm.log
出力内容
IJServerクラスタ
スレッドダンプやJava VM終了時の状態情報などJava VMが出力する情報が記録されます。
仕様
・ ログファイルは、プロセス起動時に作成されます。同名ファイルが存在する場合は追加出力されます。
・ IJServerクラスタを実行した場合に書き込み権限がないと、イベントログ/システムログにエラーメッセージが出力され、
IJServerクラスタの起動に失敗します(注)。
注)
一般ユーザでIJServerクラスタを実行する方法は、「2.1.7 サービス運用ユーザーのカスタマイズ」を参照してください。
・ Java VMログはIJServerクラスタだけサポートしています。Interstage Java EE DASサービス、およびInterstage Java EE
Node Agentサービスは、未サポートです。
Java VM終了時の状態情報
IJServerクラスタの場合、System.exit()の呼び出しによりJava VMプロセスが終了すると、Java VM終了時の状態情報を通
知するためJava VMログにスタックトレースが出力されます。
なお、この情報はIJServerクラスタの正常終了時も出力されますが、その場合は対処不要です。
IJServerクラスタ正常終了時の出力例を以下に示します。
"RAS Control Thread" prio=10 tid=0x00164670 nid=0x6 runnable
Thread dump at JVM_Halt(status code=0):
"RMI TCP Connection(60)-127.0.0.1" daemon prio=10 tid=0x01bedb80 nid=0xd4 runnable [0xbc77e000..0xbc77fb70]
at java.lang.Shutdown.halt0(Native Method)
at java.lang.Shutdown.halt(Shutdown.java:145)
- locked <0xd8a00860> (a java.lang.Shutdown$Lock)
at java.lang.Shutdown.exit(Shutdown.java:219)
- locked <0xccb19798> (a java.lang.Class)
at java.lang.Runtime.exit(Runtime.java:90)
at java.lang.System.exit(System.java:869)
at com.sun.enterprise.server.J2EEServer.shutdown(J2EEServer.java:471)
at com.sun.enterprise.server.Shutdown.startShutdown(Shutdown.java:94)
at com.sun.enterprise.admin.event.AdminEventMulticaster.invokeShutdownEventListener(AdminEventMulticaster.java:
1501)
at com.sun.enterprise.admin.event.AdminEventMulticaster.handleShutdownEvent(AdminEventMulticaster.java:1490)
at com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:480)
at com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:176)
at com.sun.enterprise.admin.server.core.channel.AdminChannelServer.sendNotification(AdminChannelServer.java:121)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
at java.lang.Thread.run(Thread.java:595)
- 345 -
#### JavaVM terminated: Java HotSpot(TM) Server VM (1.5.0_FUJITSU_MODIFIED-B12 mixed mode), [pid=20392]
TimeMillis=1208340430797 Time=Wed Apr 16 19:07:10 2008
Java VM終了時の状態情報についての詳細は、以下のマニュアルを参照してください。
・ 「チューニングガイド」の「Java VM終了時における状態情報のメッセージ出力機能」
4.21.3 HTTPアクセスログ
ファイル名
server_access_log
出力内容
HTTPサービスの通信情報が出力されます。
仕様
・ HTTPアクセスログを出力する設定にした時に、HTTPアクセスログファイルが作成されます。設定方法については、
「設定方法」を参照してください。
・ HTTPアクセスログの出力先は以下となります。
[ログ出力ディレクトリ]\http
[ログ出力ディレクトリ]/http
ログ出力ディレクトリについては、「6.8.11 ロガーの定義項目」の「ログ出力ディレクトリ」を参照してください。
・ 同名のファイルが存在する場合は追加出力されます。
・ リクエストラインに出力される値はクライアントから送付された値がそのまま出力されます。
リクエストURLに%エンコードされた文字を含む場合はデーコードされずにクライアントから送付された値がそのまま
出力されます。
"10.34.200.237" "-" "userA" "22/Aug/2007:19:19:15 +0900" "GET /web/%E3%83%9E%E3%83%AB
%E3%83%81%E3%83%90%E3%82%A4%E3%83%88 HTTP/1.1" "200" "1635" "10.34.200.237:28090"
"6LH3CP1HC4OJED1LC5J64C1P6GOJCCR36GSM8PB2C4R318EHMQIIO08000400000" "15"
"ThreadID=174" "ThreadName=httpWorkerThread-28090-5" "10.34.200.237"
・ 書き込み権限がない場合、イベントログ/システムログに警告メッセージが出力されます(注)。この場合、HTTPアクセ
スログは出力されません。
注)
一般ユーザでIJServerクラスタを実行する場合の動作です。
一般ユーザでIJServerクラスタを実行する方法は、「2.1.7 サービス運用ユーザーのカスタマイズ」を参照してください。
設定方法
HTTPアクセスログの設定項目は、Interstage Java EE管理コンソール、またはasadminコマンドにより変更可能です。
・ アクセスログ
HTTPアクセスログの出力を有効にするかを指定します。
・ 形式
HTTPアクセスログに出力する項目を指定します。
その他の設定項目は、「6.8.3 HTTPサービスの定義項目」を参照してください。
- 346 -
・ Interstage Java EE管理コンソール
[設定] > [クラスタ名-config] または [server-config] > [HTTP サービス] > [ログ]タブの「アクセスログ」、「形式」
・ asadminコマンドのsetサブコマンド
「configs.config.http-serviceの定義項目」の「アクセスログ」、「形式」
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参照して
ください。
出力フォーマット
HTTPアクセスログの出力フォーマットはカスタマイズすることが可能です。設定方法については、「設定方法」を参照して
ください。
・ 項目名は”%”で囲んで小文字で指定します。ただし、%cookies.any%のanyに指定する値は、大文字、小文字を区
別するのでRFC2616で定義された値を指定してください。
・ 複数の項目を指定する場合は、空白で区切って指定します。指定可能な文字サイズは、512バイトまでとなります。
・ 出力形式のデフォルト値:
%client.name% %client.id% %auth-user-name% %datetime% %request% %status%
%response.length%
%headers.host% %cookies.JSESSIONID% %time-taken% %thread.id% %thread.name%
%webserver.name%
・ フォーマットに空白のみを指定した場合は、ログには何も出力されません。
・ 出力する値がない場合または、登録されていない項目名を指定した場合は、”-“が出力されます。
・ 項目が複数定義されている場合は、”;”で区切って出力します。
設定項目は「6.8.3 HTTPサービスの定義項目」を参照してください。
注意
・ V9.xからリストアした場合は、V9.xで出力していたフォーマットでHTTPアクセスログを出力します。V9.xのフォーマッ
トについては、「移行ガイド」の「HTTPサービスの移行」を参照してください。
・ HTTPアクセスログの出力を有効にしている場合、性能に影響があります。影響の程度は、アプリケーション、環境/運
用、処理多重度、負荷等に依存します。
指定可能な項目は、以下の表を参照してください。
リクエスト情報
項目名
%client.name%
説明
・ Webサーバを経由する場合
デフォルト
○
クライアントまたは、プロキシサーバなどのIPアドレ
ス/ホスト名を出力します。
・ Webサーバを経由しない場合
クライアントまたは、プロキシサーバなどのIPアドレ
スを出力します。
%client.id%
%auth-user-name%
クライアントから返信されるユーザ個人情報を出力します。
ただし、常に“-”を出力します。
・ Webサーバを経由する場合
Webサーバが認証したユーザ名を表示します。
- 347 -
○
○
項目名
説明
デフォルト
・ Webサーバを経由しない場合
Webコンテナで認証したユーザ名を表示します。
注)リクエストにユーザ名が付与されていない場合は、”
-”を表示します。
%datetime%
ログを出力した時点の日時を出力します。
○
%request%
リクエストラインの内容を出力します。
○
%status%
ステータスコードを出力します。
○
%response.length%
レスポンスのデータ長を出力します。単位はbyteです。
○
%headers.host%
Hostヘッダーの内容を出力します。
○
%cookies.JSESSIONID%
セッションIDを出力します。
○
%time-taken%
リクエストの処理開始から、Webアプリケーションの処理
終了までの時間(ミリ秒)を出力します。
以下についても含みます。
○
・ 初回アクセス時のJSPコンパイル、クラスのロード、
Servletなどの初期化処理
以下については、含みません。
・ HTTP接続キューに格納されている時間
・ Webコンテナがレスポンスのバッファ内のデータの
送信を完了する時間
%thread.id%
スレッドIDを出力します。
○
%thread.name%
スレッド名を出力します。
○
%webserver.name%
・ Webサーバを経由する場合
WebサーバのIPアドレスを表示します。
・ Webサーバを経由しない場合
クライアントまたは、プロキシサーバなどのIPアドレ
スを出力します。
%cookies.any%
Cookieヘッダーの内容を出力します。
anyには出力するRFC2616で定義されているCookieの
名前を大文字、小文字を区別して指定します。
%headers.any%
リクエストHTTPヘッダーの値を出力します。anyには、
RFC 2616 で定義された任意の有効な リクエストHTTP
ヘッダーの値を小文字で指定します。
%headers.referer%
Refererヘッダーの内容を出力します。
%headers.user-agent%
User-agentヘッダーの内容を出力します。
%response.headers.any%
レスポンスHTTPヘッダーの値を出力します。anyには、
RFC2616で定義された任意の有効なレスポンスHTTP
ヘッダーの値を小文字で指定します。
%response.headers.set-cookie%
レスポンス時のSet-Cookieヘッダーの内容を出力します。
%http-method%
HTTPメソッドを出力します。
%http-uri%
URIを出力します。
%http-version%
プロトコルバージョンを出力します。
%query-str%
クエリー文字列を出力します。
- 348 -
○
出力例
出力フォーマットに指定した値が空白で区切られて出力されます。
"10.34.200.237" "-" "userA" "22/Aug/2007:19:19:15 +0900" "POST /web/ HTTP/1.1" "200" "1635"
"10.34.200.237:28090"
"6LH3CP1HC4OJED1LC5J64C1P6GOJCCR36GSM8PB2C4R318EHMQIIO08000400000" "15"
"ThreadID=174" "ThreadName=httpWorkerThread-28090-5" "10.34.200.237"
4.21.4 IIOPアクセスログ
ファイル名
iiop_access.log
出力内容
IIOP通信の通信内容が出力されます。
仕様
・ IIOPアクセスログは、ACCESS/TRACE/NONEの3つの出力モードを選択できます。以下のように、選択したモードに
よってログの出力内容を切り替えることが可能です。出力モードの設定方法については、「アクセスログの出力モー
ド設定」を参照してください。
ACCESSモード
クライアントでは、サーバへのリクエスト送信をタイムスタンプ付きで出力します。サーバでは、クライアントへのレ
スポンス送信をタイムスタンプ付きで出力します。
クライアントおよびサーバ側で、1回の通信につき1ラインのログを出力します。
TRACEモード
以下の情報をログに出力します。
- コネクションの確立/切断
- リクエストの送信/受信
- レスポンスの送信/受信
- フラグメントの送信/受信
- リクエストおよびレスポンス以外のメッセージの送信/受信
- サーバアプリケーションの開始/終了
NONEモード
IIOP通信の内容をアクセスログに出力しません。
IIOPアクセスログは、IIOP通信の情報を以下の図で示す事象に分類し、事象発生時にタイムスタンプ付きでログを
出力します。
- 349 -
図中の[2]送信、[3]受信、[6]送信、および[7]受信では、以下に関する情報をアクセスログに出力します。
- リクエストメッセージ(Request)
- レスポンスメッセージ(Reply)
- フラグメントされたメッセージ(Fragment)の送受信
- リクエストメッセージ/レスポンスメッセージ以外のメッセージの送受信(Other)
以下に、送信(IN)および受信(OUT)で出力されるメッセージ種別と、ACCESSおよびTRACEモードとの出力関係を
示します。
通番
[2]
送受信(IN/OUT)
OUT
[3]
IN
[6]
OUT
[7]
IN
メッセージ種別
ACCESSモード
TRACEモード
Request
○
○
Fragment
×
○
Other
×
○
Request
×
○
Fragment
×
○
Other
×
○
Reply
○
○
Fragment
×
○
Other
×
○
Reply
×
○
Fragment
×
○
Other
×
○
リクエストメッセージ/レスポンスメッセージ以外のメッセージの送受信(Other)については、CORBA規約で定められ
ているGIOPメッセージタイプのうち、以下のいずれかのメッセージタイプに相当します。
メッセージ
Other
メッセージタイプ
意味
リクエストを取り消します。
CancelRequest
- 350 -
メッセージ
メッセージタイプ
意味
LocateRequest
リクエストに関する問い合わせを
実施します。
LocateReply
LocateRequestに対する応答です。
CloseConnection
コネクションの切断を要求します。
MessageError
送信または受信に問題があること
を通知します。
図中の[1]connect、[9]connect_close、および[10]close_resp_infoは、コネクション接続に関する情報をアクセスログに
出力します。
[4]app_beginおよび[5]app_endは、アプリケーション呼出しに関する情報をアクセスログに出力します。
[8]リプライステータスは、サーバから受信したメッセージのステータスに関する情報をアクセスログに出力します。
以下に、出力される情報と、ACCESSおよびTRACEモードとの関係を示します。
通番
事象名
意味
ACCESSモード
TRACEモード
[1]
connect
サーバに対してコ
ネクションを確立し
ます。
×
○
[4]
app_begin
アプリケーション呼 ×
出しを開始します。
○
[5]
app_end
アプリケーション呼 ×
出しを終了します。
○
[8]
reply_status
サーバから受信し
たメッセージのス
テータスです。
×
○
[9]
connect_close
コネクションを切断
します。
×
○
[10]
close_resp_info
コネクションの切断、 ×
閉塞により、レスポ
ンスを破棄します。
○
・ IIOPアクセスログファイルは、初めてIIOP通信を実施する際に作成されます。同名ファイルが存在する場合は、追加
出力されます。
・ IIOPアクセスログの出力先は以下となります。
[ログ出力ディレクトリ]\iiop
[ログ出力ディレクトリ]/iiop
ログ出力ディレクトリについては、「6.8.11 ロガーの定義項目」の「ログ出力ディレクトリ」を参照してください。
・ 読取り権限または書込み権限がない時など、IIOPアクセスログの出力処理中にエラーが発生した場合、サーバーロ
グにエラーメッセージが出力されます。エラーが発生した後は、IIOPアクセスログが出力されなくなります。
- 351 -
注意
・ IJServerクラスタプロセス内の呼出しの場合は、IJServerクラスタに配備したEJBアプリケーションをローカルに呼び出
す場合のように、IIOP通信が使用されないため、アクセスログは出力されません。
・ クライアントマシン上では、Java EEアプリケーションクライアントのIIOP通信情報はアクセスログに出力されません。
出力フォーマット
"[<日付> <時刻>]" "<スレッドID(スレッド名)>" "<メッセージ>"
<日付>
日(2桁10進数)/月(2桁10進数)/年(4桁10進数)
<時刻>
時間(2桁10進数):分(2桁10進数):秒(2桁10進数).ミリ秒(3桁10進数) (GMTとの時差)
<スレッドID(スレッド名)>
ID(10進数)/名(英数字)
<メッセージ>
IIOP通信に関する情報を表示します。以下に示すメッセージフォーマットで出力します。
メッセージ送信/受信の場合
<送受信>(<役割>) <メッセージ種別> <補足情報>
<送受信>
IN:受信による通信を表します。
OUT:送信による通信を表します。
<役割>
CL:クライアント機能として動作していることを表します。
SV:サーバ機能として動作していることを表します。
<メッセージ種別>
以下のいずれかが出力されます。
- Request
- Reply
- Fragment
- Other
<補足情報>
メッセージ種別ごとの補足情報です。詳細は「メッセージ種別ごとの補足情報」を参照してください。
メッセージ送信/受信以外の場合
<事象名> <補足情報>
<事象名>
以下が出力されます。
- connect
- connect_close
- 352 -
- close_resp_info
- app_begin
- app_end
- reply_status
<補足情報>
事象名ごとの補足情報です。詳細は「事象名ごとの補足情報」を参照してください。
メッセージ種別ごとの補足情報
Request
メッセージフォーマットの<送受信>がINの場合
(request_id=<リクエストID>, client=<クライアント情報>, server=<サーバ情報>, more=<フラグメント情報>)
メッセージフォーマットの<送受信>がOUTの場合
(request_id=<リクエストID>, client=<クライアント情報>, server=<サーバ情報>, more=<フラグメント情報>,
intf_id=<インタフェースリポジトリID>, operation=<メソッド名>, oneway=<oneway呼び出し>)
リクエストID
Requestメッセージ送信時のリクエストIDです。
リクエストIDが表示できない場合は、「-」を表示します。
クライアント情報
Requestメッセージ要求元のIPアドレスおよびポート番号です。
サーバ情報
Requestメッセージ要求先のIPアドレスおよびポート番号です。
フラグメント情報
false:Reuqestメッセージが分割されていないことを表します。
true:Reuqestメッセージが分割され、後続のFragmentメッセージが存在することを表します。
インタフェースリポジトリID
アプリケーションを識別する情報です。
CORBA規約で定められているインタフェースリポジトリIDに相当します。
メソッド名
クライアントアプリケーションが呼び出したサーバアプリケーションのメソッド名です。
oneway呼出し
Requestがサーバからの応答を期待しないonewayメソッドであるかを表します。
true:onewayメソッドであることを表します。
false:onewayメソッドでないことを表します。
Reply
メッセージフォーマットの<送受信>がINの場合
(request_id=<リクエストID>, client=<クライアント情報>, server=<サーバ情報>, more=<フラグメント情報>)
メッセージフォーマットの<送受信>がOUTの場合
<リプライステータス> <経過時間> (request_id=<リクエストID>, client=<クライアント情報>, server=<サーバ
情報>, more=<フラグメント情報>, intf_id=<インタフェースリポジトリID>, operation=<メソッド名>, [excep_id=<
例外のリポジトリID>], [minor=<SYSTEM例外のマイナーコード>])
- 353 -
リプライステータス
以下のいずれかが表示されます。
リプライステータス
意味
NO_EXCEPTION
正常復帰します。
USER_EXCEPTION
ユーザ例外が発生しました。
SYSTEM_EXCEPTION
システム例外が発生しました。
LOCATION_FORWARD
適切な要求先の情報を返却します。
LOCATION_FORWARD_PERM
好ましい要求先の情報を返却します。
NEEDS_ADDRESSING_MODE
要求方法の変更を通知します。
経過時間
サーバが要求を受信した後、実際に要求処理を開始してからクライアントに応答を返すまでの経過時間を表
示します。サーバからクライアントに返すメッセージが、複数のフラグメントに分割される場合は、分割した最初
のメッセージを返すまでの経過時間を表示します。単位はミリ秒です。
リクエストID
Replyメッセージに対応するRequestメッセージのリクエストIDです。
リクエストIDが表示できない場合は、「-」を表示します。
クライアント情報
Replyメッセージ応答先のIPアドレスおよびポート番号です。
サーバ情報
Replyメッセージ応答元のIPアドレスおよびポート番号です。
フラグメント情報
false:Replyメッセージが分割されていないことを表示します。
true:Replyメッセージが分割され、後続のFragmentメッセージが存在することを表します。
インタフェースリポジトリID
アプリケーションを識別する情報です。
CORBA規約で定められているインタフェースリポジトリIDに相当します。
インタフェースリポジトリIDが表示できない場合は、「-」を表示します。
メソッド名
クライアントアプリケーションが呼び出したサーバアプリケーションのメソッド名です。
例外のリポジトリID
リプライステータスがUSER_EXCEPTIONまたはSYSTEM_EXCEPTIONの場合に、例外のリポジトリIDを表示
します。リプライステータスがそれ以外の場合は表示されません。
SYSTEM例外のマイナーコード
リプライステータスがSYSTEM_EXCEPTIONの場合に、例外のマイナーコードを10進数で表示します。リプラ
イステータスがそれ以外の場合は表示されません。
Fragment
(request_id=<リクエストID>, client=<クライアント情報>, server=<サーバ情報>, more=<フラグメント情報>)
リクエストID
Fragmentメッセージ要求時のリクエストIDです。
- 354 -
クライアント情報
Fragmentメッセージの要求元または応答先の、IPアドレスおよびポート番号です。
サーバ情報
Fragmentメッセージの要求先または応答元の、IPアドレスおよびポート番号です。
フラグメント情報
false:後続のFragmentメッセージが存在しないことを表します。
true:後続のFragmentメッセージが存在することを表します。
Other
<メッセージタイプ> ([reply_status=<リプライステータス>], [request_id=<リクエストID>], client=<クライア
ント情報>, server=<サーバ情報>, [more=<フラグメント情報>], [excep_id=<例外のリポジトリID>],
[minor=<SYSTEM例外のマイナーコード>])
メッセージタイプ
以下のいずれかが表示されます。
- CancelRequest
- LocateRequest
- LocateReply
- CloseConnection
- MessageError
リプライステータス(注)
メッセージ種別がLocateReplyの場合にだけ、以下の情報が出力されます。
リプライステータス
意味
UNKNOWN_OBJECT
不正な要求です。
OBJECT_HERE
適切な要求です。
OBJECT_FORWARD
適切な要求先の情報を返却します。
OBJECT_FORWARD_PERM
好ましい要求先の情報を返却します。
LOC_SYSTEM_EXCEPTION
システム例外が発生しました。
LOC_NEEDS_ADDRESSING_MODE
要求方法の変更を通知します。
リクエストID(注)
メッセージ要求時のリクエストIDです。
リクエストIDが表示できない場合は、「-」を表示します。
クライアント情報
メッセージの要求元または応答先の、IPアドレスおよびポート番号です。
サーバ情報
メッセージの要求先または応答元の、IPアドレスおよびポート番号です。
フラグメント情報(注)
false:後続のFragmentメッセージが存在しないことを表します。
true:後続のFragmentメッセージが存在することを表します。
- 355 -
例外のリポジトリID(注)
メッセージタイプがLocateReplyで、リプライステータスがLOC_SYSTEM_EXCEPTIONの場合にだけ、例外の
リポジトリIDを表示します。
SYSTEM例外のマイナーコード(注)
メッセージタイプがLocateReplyで、リプライステータスがLOC_SYSTEM_EXCEPTIONの場合にだけ、例外の
マイナーコードを10進数で表示します。
注) 表示する情報がない場合は、アクセスログに出力されません。
事象名ごとの補足情報
connect
(client=<クライアント情報>, server=<サーバ情報>)
クライアント情報
コネクション接続元のIPアドレスおよびポート番号です。
サーバ情報
コネクション接続先のIPアドレスおよびポート番号です。
connect_close
(client=<クライアント情報>, server=<サーバ情報>)
クライアント情報
コネクション接続元のIPアドレスおよびポート番号です。
サーバ情報
コネクション接続先のIPアドレスおよびポート番号です。
close_resp_info
(request_id=<リクエストID>, client=<クライアント情報>, server=<サーバ情報>, [intf_id=<インタフェースリ
ポジトリID>], [operation=<メソッド名>])
リクエストID
破棄されたメッセージのリクエストIDです。
クライアント情報
コネクション接続元のIPアドレスおよびポート番号です。
サーバ情報
コネクション接続先のIPアドレスおよびポート番号です。
インタフェースリポジトリID(注)
アプリケーションを識別する情報です。
CORBA規約で定められているインタフェースリポジトリIDに相当します。
メソッド名(注)
クライアントアプリケーションが呼び出したサーバアプリケーションのメソッド名です。
注) 表示する情報がない場合は、アクセスログに出力されません。
- 356 -
app_begin
(request_id=<リクエストID>, client=<クライアント情報>, server=<サーバ情報>, intf_id=<インタフェースリ
ポジトリID>, operation=<メソッド名>)
リクエストID
RequestメッセージのリクエストIDです。
クライアント情報
コネクション接続元のIPアドレスおよびポート番号です。
サーバ情報
コネクション接続先のIPアドレス、およびポート番号です。
インタフェースリポジトリID
アプリケーションを識別する情報です。
CORBA規約で定められているインタフェースリポジトリIDに相当します。
メソッド名
クライアントアプリケーションが呼び出したサーバアプリケーションのメソッド名です。
app_end
<経過時間> (request_id=<リクエストID>, client=<クライアント情報>, server=<サーバ情報>, intf_id=<インタ
フェースリポジトリID>, operation=<メソッド名>)
経過時間
アプリケーションの処理時間です。単位はミリ秒です。
リクエストID
RequestメッセージのリクエストIDです。
クライアント情報
コネクション接続元のIPアドレスおよびポート番号です。
サーバ情報
コネクション接続先のIPアドレスおよびポート番号です。
インタフェースリポジトリID
アプリケーションを識別する情報です。
CORBA規約で定められているインタフェースリポジトリIDに相当します。
メソッド名
クライアントアプリケーションが呼び出したサーバアプリケーションのメソッド名です。
reply_status
<メッセージ種別> <リプライステータス> (request_id=<リクエストID>, client=<クライアント情報>, server=<
サーバ情報>, [operation=<メソッド名>], [excep_id=<例外のリポジトリID>], [minor=<SYSTEM例外のマイナー
コード>])
メッセージ種別
ReplyまたはLocateReplyが表示されます。
リプライステータス
メッセージ種別に従い、以下のステータスが表示されます。
メッセージ種別
Reply
ステータス
NO_EXCEPTION
- 357 -
メッセージ種別
ステータス
USER_EXCEPTION
SYSTEM_EXCEPTION
LOCATION_FORWARD
LOCATION_FORWARD_PERM
NEEDS_ADDRESSING_MODE
LocateReply
UNKNOWN_OBJECT
OBJECT_HERE
OBJECT_FORWARD
OBJECT_FORWARD_PERM
LOC_SYSTEM_EXCEPTION
LOC_NEEDS_ADDRESSING_MODE
リクエストID
RequestまたはLocateRequestメッセージのリクエストIDです。
クライアント情報
メッセージ受信元のIPアドレスおよびポート番号です。
サーバ情報
メッセージ送信元のIPアドレスおよびポート番号です。
メソッド名(注)
クライアントアプリケーションが呼び出したサーバアプリケーションのメソッド名です。
例外のリポジトリID(注)
リプライステータスがUSER_EXCEPTION、SYSTEM_EXCEPTIONまたはLOC_SYSTEM_EXCEPTIONの場
合に、例外のリポジトリIDを表示します。リプライステータスがそれ以外の場合には表示されません。
SYSTEM例外のマイナーコード(注)
リプライステータスがSYSTEM_EXCEPTIONまたはLOC_SYSTEM_EXCEPTIONの場合に、例外のマイナー
コードを10進数で表示します。リプライステータスがそれ以外の場合には表示されません。
注) 表示する情報がない場合は、アクセスログに出力されません。
アクセスログの出力モード設定
IIOPアクセスログの出力モードは、IJServerクラスタのIIOPサービス定義項目において、IIOPサービスのORB定義に
プロパティとして設定します。Interstage Java EE管理コンソールまたはasadminコマンドを使用して設定してください。
IIOPサービスのORB定義の詳細については、「6.8.4 IIOPサービスの定義項目」を参照してください。
プロパティ名
説明
設定値
ISJEELogIiopAccessM
ode
IIOPアクセスログの出力
モードを設定します。
・ ACCESSモード
access
・ TRACEモード
trace
・ NONEモード
none
- 358 -
デフォルト値
access
注意
- プロパティを設定しない場合、デフォルト値で動作します。
- プロパティの設定値を有効にする場合は、プロパティを設定後、IJServerクラスタを再起動してください。
例
asadminコマンドを使用して設定する場合、以下のように設定します。
asadmin set IJServer001.iiop-service.orb.property.ISJEELogIiopAccessMode=trace
出力例
クライアントがRequestメッセージを要求した場合
"[03/03/2011 16:54:54.311 +0900]" "16(p: thread-pool-1; w: 3)" "OUT(CL) Request (request_id=8,
client=127.0.0.1:2376, server=127.0.0.1:23701, more=false, intf_id=RMI:test._TargetRemote_Remote:
0000000000000000, operation=func, oneway=false)"
サーバがReplyメッセージを応答した場合
"[03/03/2011 16:54:54.311 +0900]" "19(p: thread-pool-1; w: 8)" "OUT(SV) Reply NO_EXCEPTION 1062
(request_id=8, client=127.0.0.1:2376, server=127.0.0.1:23701, more=false,
intf_id=RMI:test._TargetRemote_Remote:0000000000000000, operation=func)"
4.21.5 HTTPトレースログ
ファイル名
trace.log
出力内容
クライアントからのリクエストに対するWebコンテナ内の処理状態が出力されます。
仕様
・ HTTPトレースログを出力する設定にした時に、HTTPトレースログファイルが作成されます。同名のファイルが存在す
る場合は追加出力されます。
・ HTTPトレースログの出力先は以下となります。
[ログ出力ディレクトリ]\http
[ログ出力ディレクトリ]/http
ログ出力ディレクトリについては、「6.8.11 ロガーの定義項目」の「ログ出力ディレクトリ」を参照してください。
・ 書き込みやローテーションの処理が失敗した場合、サーバーログにエラーメッセージが出力されます。
・ HTTPトレースログは、以下の方法で設定します。
- Interstage Java EE管理コンソール
[設定] > [クラスタ名-config] または [server-config] > [HTTP サービス] > [ログ]タブ
- 359 -
- asadminコマンドのsetサブコマンド
configs.config.http-serviceの定義項目の「トレースログ」
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参
照してください。
設定項目は「6.8.3 HTTPサービスの定義項目」を参照してください。
出力フォーマット
HTTPトレースログとして出力されるログの形式を、以下に示します。
出力形式:
"日時" "スレッドID(スレッド名)" "イベント" "詳細情報"
日時
HTTPトレースログの出力日時
スレッドID
処理スレッドのスレッドID
スレッド名
処理スレッドのスレッド名
イベント
出力タイミングを表すイベント名
詳細情報
各出力タイミングにおける出力内容を以下に示します。
出力タイミング
イベント
詳細情報
TCPコネクション接続時
conn
クライアント(注1)のIPアドレス、ポート
番号
TCPコネクション切断時
disc
クライアント(注1)のIPアドレス、ポート
番号
HTTPリクエスト受信時
recv
リクエストライン
HTTPレスポンス送信時
send
ステータスコード
Webコンテナの呼び出し時
call
Webコンテナからの復帰時
rtn
接続キューへの挿入時
qin
クライアント(注1)のIPアドレス、ポート
番号
接続キューからの取出し時
qout
クライアント(注1)のIPアドレス、ポート
番号
キープアライブ待ち開始時
k-wt
クライアント(注1)のIPアドレス、ポート
番号
(注1)クライアントとは、Webブラウザ、負荷分散装置、プロキシサーバ、Webサーバコネクタなどを指します。
注意
- HTTPトレースログの出力を有効にしている場合、性能に影響があります。影響の程度は、アプリケーション、環
境/運用、処理多重度、負荷等に依存します。
- 360 -
- 今後、改善や機能追加により、出力タイミングや出力内容が変更される可能性があります。そのため、出力内容
に依存した運用は避けてください。
出力例
出力例を以下に示します。
"18/May/2011:14:13:11.750"
"18/May/2011:14:13:14.531"
"18/May/2011:14:13:14.531"
"18/May/2011:14:13:14.671"
TestServlet HTTP/1.1"
"18/May/2011:14:13:14.671"
"18/May/2011:14:13:14.671"
"18/May/2011:14:13:14.671"
"18/May/2011:14:13:14.671"
"18/May/2011:14:13:29.671"
"43(SelectorThread-28090)" "conn" "/10.123.113.6:2251"
"43(SelectorThread-28090)" "qin" "/10.123.113.6:2251"
"58(httpWorkerThread-28090-14)" "qout" "/10.123.113.6:2251"
"58(httpWorkerThread-28090-14)" "recv" "GET /OptionLogTest2/
"58(httpWorkerThread-28090-14)" "call"
"58(httpWorkerThread-28090-14)" "send" "200"
"58(httpWorkerThread-28090-14)" "rtn"
"58(httpWorkerThread-28090-14)" "k-wt" "/10.123.113.6:2251"
"43(SelectorThread-28090)" "disc" "/10.123.113.6:2251"
4.21.6 ログファイルのローテーション
■サーバーログ/Java VMログの場合
ログファイルはローテーションできます。ローテーションの条件は「ログサイズ」または「時刻」で指定します。デフォルトは
「ログサイズ」です。ただし、Interstage Java EE DASサービスのJava VMログはローテーションできません。
指定した条件を満たした場合、以下のように、ローテーションが実行された時刻が付加された名前で保存されます。
ローテーション後のファイル名:ファイル名_YYYY_MM_DD-hh_mm_ss
ローテーション処理時にイベントログ/システムログに情報メッセージが出力されます。
また、ローテーション失敗時にはイベントログ/システムログにエラーメッセージが出力されます。
ローテーションに関しては、以下の項目が設定できます。
ログサイズによるローテーション
1~512MBの範囲で、ログファイルの最大サイズを指定します。デフォルト値は1MBです。
ログファイルが指定したサイズに達するとローテーションされます。
時刻によるローテーション
0~23時の範囲でローテーションを開始する時刻を指定します。デフォルト時刻は0時です。
指定した時刻にローテーションされます。
世代数
ローテーションしたログファイルを保管する世代数を1~9の中から選択します。
保管するログファイルの数が指定した世代数を超えた場合は、一番古い世代のログファイルが削除されます。デフォ
ルト値は1世代です。
上記の設定項目は、Interstage Java EE管理コンソールまたはasadminコマンドにより変更可能です。
・ Interstage Java EE管理コンソール
- IJServerクラスタ/Interstage Java EE DASサービスが出力するサーバーログ/Java VMログ
[設定] > [クラスタ名-config] または [server-config] > [ロガーの設定]
- Interstage Java EE Node Agentサービスが出力するログ
[ノードエージェント] > [ijna] > [ロガーの設定]タブ
・ asadminコマンドのsetサブコマンド
- IJServerクラスタ/Interstage Java EE DASサービスが出力するサーバーログ/Java VMログ
「configs.config.log-serviceの定義項目」の「ローテーションのタイプ」、「ログサイズ」、「ログ収集時間」、「世代数」
- 361 -
- Interstage Java EE Node Agentサービスが出力するログ
「node-agents.node-agent.log-serviceの定義項目」の「ローテーションのタイプ」、「ログサイズ」、「ログ収集時間」、
「世代数」
■HTTPアクセスログの場合
ログファイルはローテーションできます。ローテーションの条件は「ログサイズ」または「時刻」で指定します。
ローテーション後のファイル名は、ローテーションが実行された時刻を付加した名前で保存されます。
server_access_log_YYYY_MM_DD-hh_mm_ss
前回のローテーションから1秒以内にローテーションが実行された場合は、ファイル名に通し番号が付加されます。
server_access_log_YYYY_MM_DD-hh_mm_ss.通し番号
ローテーションは、以下の項目が設定できます。
・ ログサイズによるローテーション
1~512MBの範囲で、ログファイルの最大サイズを指定します。デフォルト値は1MBです。
ログファイルが指定したサイズに達するとローテーションされます。
・ 時刻によるローテーション
0~23時の範囲でローテーションを開始する事項を指定します。デフォルト時刻は0時です。
指定した時刻にローテーションされます。
・ 世代数
ローテーションしたログファイルを保管する世代数を、1~999の中から選択します。
保管するログファイルの数が、指定した世代数を超えた場合は、一番古い世代のログファイルが削除されます。デ
フォルト値は5世代です。
上記の設定項目は、Interstage Java EE管理コンソールまたはasadminコマンドにより変更可能です。
・ Interstage Java EE管理コンソール
[設定] > [クラスタ名-config] または [server-config] > [HTTP サービス] > [ログ]タブ
・ asadminコマンドのsetサブコマンド
「configs.config.http-serviceの定義項目」の「ローテーションのタイプ」、「ログサイズ」、「ログ収集時間」、「世代数」
設定項目は「6.8.3 HTTPサービスの定義項目」または「リファレンスマニュアル(コマンド編)」-「configs.config.http-service
の定義項目」を参照してください。
注意
・ 世代数を減らした場合、次回のローテーションで設定した世代数にあわせて、ログファイルが削除されます。
・ HTTPアクセスログの出力先ディレクトリにローテーション後のファイル名と同じ形式のファイルを作成しないでください。
■IIOPアクセスログの場合
ログファイルは、ログサイズに指定した条件でローテーションします。
ローテーションに関しては、以下の項目が設定できます。
ログサイズによるローテーション
1~2000MBの範囲で、ログファイルの最大サイズを指定します。デフォルト値は3MBです。
ローテーション後のファイル名は、ローテーションが実行された時刻を付加した名前で保存されます。
iiop_access.log_YYYY_MM_DD-hh_mm_ss
- 362 -
また、前回のローテーションから1秒以内にローテーションが実行された場合は、ファイル名に通し番号が付加されま
す。
iiop_access.log_YYYY_MM_DD-hh_mm_ss.通し番号
世代数
ローテーションしたログファイルを保管する世代数を、1~999の中から選択します。
保管するログファイルの数が、指定した世代数を超えた場合は、一番古い世代のログファイルが削除されます。デフォ
ルト値は2世代です。
上記の設定項目は、IJServerクラスタのIIOPサービス定義項目において、IIOPサービスのORB定義にプロパティとして設
定します。Interstage Java EE管理コンソールまたはasadminコマンドを使用して設定してください。
IIOPサービスのORB定義の詳細については、「6.8.4 IIOPサービスの定義項目」を参照してください。
プロパティ名
説明
設定値
デフォルト値
ISJEELogIiopAccessRotationsize
ログファイルの最大サイズ
を設定します。
1~2000
3
ISJEELogIiopAccessRotationcoun
t
ログファイルを保管する世
代数を設定します。
1~999
2
注意
・ プロパティを設定しない場合、デフォルト値で動作します。
・ プロパティの設定値を有効にする場合は、プロパティを設定後、IJServerクラスタを再起動してください。
・ 設定値に誤りがある場合、サーバーログにIOP00110397のメッセージを出力し、サーバーインスタンスの起動に失敗
します。
例
asadminコマンドを使用して設定する場合、以下のように設定します。
asadmin set IJServer001.iiop-service.orb.property.ISJEELogIiopAccessRotationsize=10
■HTTPトレースログの場合
ログファイルは、ログサイズに指定した条件でローテーションします。
ローテーションに関しては、以下の項目が設定できます。
ログサイズによるローテーション
1~2000MBの範囲で、ログファイルの最大サイズを指定します。デフォルト値は10MBです。
ログファイルが指定したサイズに達するとローテーションされます。ローテーション後のファイル名は、ローテーション
が実行された時刻を付加した名前で保存されます。
trace.log_YYYY_MM_DD-hh_mm_ss
前回のローテーションから1秒以内にローテーションが実行された場合は、ファイル名に通し番号が付加されます。
trace.log_YYYY_MM_DD-hh_mm_ss.通し番号
- 363 -
世代数
ローテーションしたログファイルを保管する世代数を、1~999の中から選択します。
保管するログファイルの数が、指定した世代数を超えた場合は、一番古い世代のログファイルが削除されます。デフォ
ルト値は10世代です。
上記の設定項目は、Interstage Java EE管理コンソールまたはasadminコマンドにより変更可能です。
・ Interstage Java EE管理コンソール
[設定] > [クラスタ名-config] または [server-config] > [HTTP サービス] > [ログ]タブ
・ asadminコマンドのsetサブコマンド
「configs.config.http-serviceの定義項目」の「トレースログのログサイズ」、「トレースログの世代数」
設定項目は「6.8.3 HTTPサービスの定義項目」を参照してください。
注意
・ HTTPトレースログの設定を変更した場合は、対象のIJServerクラスタまたはInterstage Java EE DASサービスを再起
動してください。
・ 世代数を減らした場合、次回のローテーションで設定した世代数にあわせて、ログファイルが削除されます。
・ HTTPトレースログの出力先ディレクトリにローテーション後のファイル名と同じ形式のファイルを作成しないでください。
・ asadminコマンドのsetサブコマンドで、HTTPトレースログの設定項目を変更した場合には、IJServerクラスタ再起動後、
サーバーログにエラーメッセージが出力されていないことを確認してください。
4.22 IPCOMを利用したIIOP通信の負荷分散
Interstage Java EEではIPCOMと連携したIIOP通信の負荷分散機能を利用できます。
この機能を利用すると、IPCOMが各サーバへの負荷状況を監視し、EJBアプリケーションに対する要求(利用者からの要
求)を一番速く応答できるサーバに転送するため、安定した業務運用ができます。
注意
Stateful Session Beanを使用する場合、EJBディスパッチ機能によるロードバランスを利用してください。EJBディスパッチ
機能によるロードバランスを利用しない場合、セッションが継続しません。
4.22.1 ロードバランスを使用しない/EJBディスパッチ機能によるロードバラン
スを利用する場合
IPCOMを利用して負荷分散する場合、以下の設定が必要です。
以下の説明では、EJBアプリケーションを運用する実行環境をEJBコンテナと呼んでいます。また、Webアプリケーション
を運用する実行環境をWebコンテナと呼んでいます。
EJBコンテナの設定
EJBコンテナ(EJBディスパッチ機能を使用する場合はEJBディスパッチャ)を配置するサーバには以下の設定が必要です。
1)ネットワークの設定
EJBコンテナ(EJBディスパッチ機能を使用する場合はEJBディスパッチャ)を配置するサーバにおいて、以下のhosts
ファイルに定義されている自サーバのホスト名とIPアドレスの設定文に対して、別名で、仮想IPアドレスのホスト名の
宣言を追加します。
宣言を追加した後は、pingコマンドによりホスト名が解決されているかを確認してください。
- 364 -
Windows(R)インストールフォルダ\system32\drivers\etc\hosts
/etc/hosts
例
以下に 、自サーバのホスト名が host1、仮想IPアドレスのホスト名がvhostの場合の記述例を示します 。なお、
「10.124.35.41」のIPアドレスは、host1の実IPアドレスです。
10.124.35.41 host1 vhost
2)IJServerクラスタの作成
作成したIJServerクラスタに対して以下の2つの項目を設定してください。EJBディスパッチャを使用する場合には、EJB
ディスパッチャを運用するIJServerクラスタに対して設定してください。EJBディスパッチャの振り分け対象のIJServerク
ラスタに設定は不要です。
定義項目
非フラグメントモード
設定内容
ORBの送信データが分割しないようにするため、Java
VMオプション(システムプロパティ)に以下の値を設
定してください。
Dcom.sun.corba.ee.giop.ORBGIOP12BuffMgr=GR
OW
本プロパティを設定することにより、最大メッセージ
分割サイズの設定値に関わらず、送信データが分
割されなくなります。
仮想ホスト名の指定
IIOPリスナーのネットワークアドレスにIPCOMの仮想
ホスト名を指定してください。
注意
IIOPリスナーのネットワークアドレスに設定する値は、
仮想IPアドレスではなく、仮想ホスト名にしてください。
仮想IPアドレスを指定した場合、IJServerクラスタの
起動が失敗します。
Java VMオプションの値は、Interstage Java EE管理コンソールおよびasadminコマンドを使用して変更できます。詳細
については、以下のマニュアルを参照してください。
- Interstage Java EE管理コンソールヘルプ
- 「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「asadmin」-「定義項目参照/更新」
- 「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「asadmin」-「create-jvm-optionsサブコマンド」
IIOPリスナーの設定は、Interstage Java EE管理コンソールおよびasadminコマンドを使用して変更できます。詳細に
ついては、以下のマニュアルを参照してください。
- Interstage Java EE管理コンソールヘルプ
- 365 -
- 「 リ フ ァ レ ン ス マ ニ ュ ア ル ( コ マ ン ド 編 ) 」 の 「 Java EE 運 用 コ マ ン ド 」 - 「 asadmin 」 - 「 set サ ブ コ マ ン ド 」 の
「configs.config.iiop-serviceの定義項目」
IPCOMと連携したIIOP通信の負荷分散機能を利用する場合は、アプリケーション実行時に必要なヒープ使用量を考
慮に入れる必要があります。Java VMのヒープ使用量については、「チューニングガイド」の「Java EE機能のチューニ
ング」-「ORBのチューニング」-「ORB」を参照して、見積もってください。
接続先の送信データサイズが256000byteを超える場合は「チューニングガイド」の「Java EE機能のチューニング」-
「ORBのチューニング」-「通信データサイズに関する注意事項」を参照し、最大受信バッファサイズの拡張を行って
ください。
3)モジュールの配備
振り分け対象のEJBコンテナ(EJBディスパッチ機能を使用する場合はEJBディスパッチャ)を運用するサーバーイン
スタンスが、同一IJServerクラスタに属していれば特別な操作は不要です。
振り分け対象のEJBコンテナ(EJBディスパッチ機能を使用する場合はEJBディスパッチャ)を運用するサーバーイン
スタンスが、別々のIJServerクラスタに属している時は、IPCOM連携するアプリケーションを配備する場合、IJServerク
ラスタで一意のIDを以下のタグに定義する必要があります。詳細は、「3.1.11 IPCOMと連携する場合の注意事項」を
参照してください。
配備モジュール
タグ
EJB-JAR
sun-ejb-jar.xmlのunique-idタグ
EAR
sun-application.xmlのunique-idタグ
IPCOMの設定
IPCOMの設定は、IPCOMのマニュアルを参照してください。
負荷計測エージェントを必要とする分散方式のうち、「最小待ちメッセージ数」および「最小通信バッファ使用率」は、
Interstage Java EEでは利用できません。
負荷分散ポリシーのセッション維持(一意性の保証)の設定は、コネクション単位の分散を行うように設定することを推奨します。
また、IIOP負荷分散の設定は、メソッド呼び出し単位の負荷分散を行うように設定してください。
仮想ポート番号には、EJBアプリケーション(EJBディスパッチ機能を使用する場合はEJBディスパッチャ)を運用するサー
バで、仮想ホスト名を指定したIIOPリスナーのポート番号を設定してください。
IPCOM 装置の無通信監視時間(IPCOM装置:slb iiop keep-alive-time)には、IIOP通信時のサーバメソッド復帰時間
(com.sun.corba.ee.transport.ORBWaitForResponseTimeout)より大きい値を設定してください。
上記設定を行っていないと、分散対象サーバからの応答が無い場合に、無限にリクエストの再送を繰り返す可能性があ
ります。
注意
メソッド呼び出し単位の負荷分散を行う設定にするには、IIOP負荷分散に対応したIPCOMが必要です。
Webコンテナの設定
Webコンテナを配置するサーバには以下の設定が必要です。
1)ネットワークの設定
Webコンテナを配置するサーバにおいて、以下のhostsファイルに、仮想ホスト名とEJBアプリケーション(EJBディスパッ
チ機能を使用する場合はEJBディスパッチャ)を運用するサーバのすべてのホスト名宣言を追加します。
宣言を追加した後は、仮想ホスト名以外の宣言についてpingコマンドによりホスト名が解決されているかを確認してく
ださい。
仮想ホスト名の宣言については、IPCOMの仮想IPアドレスの設定に合わせて正しく宣言されているか確認してくださ
い。
- 366 -
Windows(R)インストールフォルダ\system32\drivers\etc\hosts
/etc/hosts
例
以下に、EJBアプリケーション(EJBディスパッチ機能を使用する場合はEJBディスパッチャ)を運用するサーバグルー
プのホスト名がhost1、host2、仮想IPアドレスのホスト名がvhostの場合の記述例を示します。
なお、「10.124.35.41」のIPアドレスは、host1の実IPアドレス、「10.124.35.42」のIPアドレスは、host2の実IPアドレスです。
10.124.35.30 vhost
10.124.35.41 host1
10.124.35.42 host2
2)JNDIの設定
指定するホスト名に仮想ホスト名を指定してください。詳細は、「3.1.11 IPCOMと連携する場合の注意事項」の「JNDI
名に仮想ホスト名の指定」を参照してください。
3)非フラグメントモードの設定
IJServerクラスタから異なるIJServerクラスタのEJBアプリケーションを呼び出す場合、作成したIJServerクラスタに対し
て以下を設定してください。
定義項目
非フラグメントモード
設定内容
ORBの送信データが分割しないようにするため、Java
VMオプション(システムプロパティ)に以下の値を設
定してください。
Dcom.sun.corba.ee.giop.ORBGIOP12BuffMgr=GR
OW
本プロパティを設定することにより、最大メッセージ
分割サイズの設定値に関わらず、送信データが分
割されなくなります。
Java VMオプションの値は、Interstage Java EE管理コンソールおよびasadminコマンドを使用して変更できます。詳細
については、以下のマニュアルを参照してください。
- Interstage Java EE管理コンソールヘルプ
- 「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「asadmin」-「create-jvm-optionsサブコマンド」
IPCOMと連携したIIOP通信の負荷分散機能を利用する場合は、アプリケーション実行時に必要なヒープ使用量を考
慮に入れる必要があります。Java VMのヒープ使用量については、「チューニングガイド」の「Java EE機能のチューニ
ング」-「ORBのチューニング」-「ORB」を参照して、見積もってください。
接続先の送信データサイズが256000byteを超える場合は「チューニングガイド」の「Java EE機能のチューニング」-
「ORBのチューニング」-「通信データサイズに関する注意事項」を参照し、最大受信バッファサイズの拡張を行って
ください。
クライアントの設定
Webコンテナを使用せずに、クライアントからサーバのEJBアプリケーションを呼び出す場合は、以下を設定してください。
- 367 -
1)ネットワークの設定
hostsファイルに、仮想ホスト名とEJBコンテナ(EJBディスパッチ機能を使用する場合はEJBディスパッチャ)を運用する
サーバのすべてのホスト名宣言を追加します。設定方法については、「Webコンテナの設定」を参照してください。
2)JNDIの設定
「4.13.3 クライアントからサーバに接続する場合の設定」で指定する接続先のホスト名には、IPCOMが存在する仮想
ホスト名を指定してください。
3)非フラグメントモードの設定
以下のプロパティをJava VMオプションに設定してください。
定義項目
非フラグメントモード
設定内容
ORBの送信データが分割しないようにするため、Java
VMオプション(システムプロパティ)に以下の値を設定
してください。
Dcom.sun.corba.ee.giop.ORBGIOP12BuffMgr=GRO
W
本プロパティを設定することにより、最大メッセージ分
割サイズの設定値に関わらず、送信データが分割さ
れなくなります。
IPCOMと連携したIIOP通信の負荷分散機能を利用する場合は、アプリケーション実行時に必要なヒープ使用量を考
慮に入れる必要があります。Java VMのヒープ使用量については、「チューニングガイド」の「Java EE機能のチューニ
ング」-「ORBのチューニング」-「ORB」を参照して、見積もってください。
接続先の送信データサイズが256000byteを超える場合は「チューニングガイド」の「Java EE機能のチューニング」-
「ORBのチューニング」-「通信データサイズに関する注意事項」を参照し、最大受信バッファサイズの拡張を行って
ください。
4.22.2 グループ管理サービスによるロードバランスを利用する場合
WebコンテナとEJBコンテナの間の通信を、IPCOMを使用してIIOP負荷分散をする場合は、以下の手順で環境構築しま
す。
・ EJBコンテナの設定
・ IPCOMの設定
・ Webコンテナの設定
Webコンテナを使用せずに、クライアントからサーバのEJBアプリケーションを呼び出す場合は、以下を参照してください。
・ クライアントの設定
EJBコンテナの設定
EJBコンテナを配置するサーバには以下の設定が必要です。
1)ネットワークの設定
EJBコンテナを配置するサーバにおいて、以下のhostsファイルに定義されている自サーバのホスト名とIPアドレスの
設定文に対して、別名で、仮想IPアドレスのホスト名の宣言を追加します。
宣言を追加した後は、pingコマンドによりホスト名が解決されているかを確認してください。
Windows(R)インストールフォルダ\system32\drivers\etc\hosts
- 368 -
/etc/hosts
例
以下に、EJBコンテナを配置するサーバグループのホスト名がhost1、仮想IPアドレスのホスト名がvhostの場合の記述
例を示します。なお、「10.124.35.41」のIPアドレスは、host1の実IPアドレスです。
10.124.35.41 host1 vhost
2)IJServerクラスタの作成
作成したIJServerクラスタに対して以下の2つの項目を設定してください。
定義項目
設定内容
非フラグメントモード
ORBの送信データが分割しないようにするため、Java VMオプション(シ
ステムプロパティ)に以下の値を設定してください。
-Dcom.sun.corba.ee.giop.ORBGIOP12BuffMgr=GROW
本プロパティを設定することにより、最大メッセージ分割サイズの設定
値に関わらず、送信データが分割されなくなります。
仮想ホスト名の指定
IIOPリスナーのネットワークアドレスにIPCOMの仮想ホスト名を指定し
てください。
注意
IIOPリスナーのネットワークアドレスに設定する値は、仮想IPアドレスで
はなく、仮想ホスト名にしてください。仮想IPアドレスを指定した場合、
IJServerクラスタの起動が失敗します。
Java VMオプションの値は、Interstage Java EE管理コンソールおよびasadminコマンドを使用して変更できます。詳細
については、以下のマニュアルを参照してください。
- Interstage Java EE管理コンソールヘルプ
- 「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「asadmin」-「定義項目参照/更新」
- 「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「asadmin」-「create-jvm-optionsサブコマンド」
IIOPリスナーの設定は、Interstage Java EE管理コンソールおよびasadminコマンドを使用して変更できます。詳細に
ついては、以下のマニュアルを参照してください。
- Interstage Java EE管理コンソールヘルプ
- 「 リ フ ァ レ ン ス マ ニ ュ ア ル ( コ マ ン ド 編 ) 」 の 「 Java EE 運 用 コ マ ン ド 」 - 「 asadmin 」 - 「 set サ ブ コ マ ン ド 」 の
「configs.config.iiop-serviceの定義項目」
IPCOMと連携したIIOP通信の負荷分散機能を利用する場合は、アプリケーション実行時に必要なヒープ使用量を考
慮に入れる必要があります。Java VMのヒープ使用量については、「チューニングガイド」の「Java EE機能のチューニ
ング」-「ORBのチューニング」-「ORB」を参照して、見積もってください。
接続先の送信データサイズが256000byteを超える場合は「チューニングガイド」の「Java EE機能のチューニング」-
「ORBのチューニング」-「通信データサイズに関する注意事項」を参照し、最大受信バッファサイズの拡張を行って
ください。
- 369 -
3)モジュールの配備
IPCOM連携するアプリケーションを配備する場合、IJServerクラスタで一意のIDを以下のタグに定義する必要があり
ます。詳細は、「3.1.11 IPCOMと連携する場合の注意事項」を参照してください。
配備モジュール
タグ
EJB-JAR
sun-ejb-jar.xmlのunique-idタグ
EAR
sun-application.xmlのunique-idタグ
IPCOMの設定
IPCOMの設定は、IPCOMのマニュアルを参照してください。
負荷計測エージェントを必要とする分散方式のうち、「最小待ちメッセージ数」および「最小通信バッファ使用率」は、
Interstage Java EEでは利用できません。
負荷分散ポリシーのセッション維持(一意性の保証)の設定は、コネクション単位の分散を行うように設定することを推奨します。
また、IIOP負荷分散の設定は、メソッド呼び出し単位の負荷分散を行うように設定してください。
仮想ポート番号には、EJBコンテナを配置するサーバで、仮想ホスト名を指定したIIOPリスナーのポート番号を設定して
ください。
IPCOM 装置の無通信監視時間(IPCOM装置:slb iiop keep-alive-time)には、IIOP通信時のサーバメソッド復帰時間
(com.sun.corba.ee.transport.ORBWaitForResponseTimeout)より大きい値を設定してください。
上記設定を行っていないと、分散対象サーバからの応答が無い場合に、無限にリクエストの再送を繰り返す可能性があ
ります。
注意
メソッド呼び出し単位の負荷分散を行う設定にするには、IIOP負荷分散に対応したIPCOMが必要です。
Webコンテナの設定
Webコンテナを配置するサーバには以下の設定が必要です。
1)ネットワークの設定
Webコンテナを配置するサーバにおいて、以下のhostsファイルに、仮想ホスト名とEJBコンテナを配置するサーバの
すべてのホスト名宣言を追加します。
宣言を追加した後は、仮想ホスト名以外の宣言についてpingコマンドによりホスト名が解決されているかを確認してく
ださい。
仮想ホスト名の宣言については、IPCOMの仮想IPアドレスの設定に合わせて正しく宣言されているか確認してくださ
い。
Windows(R)インストールフォルダ\system32\drivers\etc\hosts
/etc/hosts
例
以下に、EJBコンテナを配置するサーバグループのホスト名がhost1、host2、仮想IPアドレスのホスト名がvhostの場合
の記述例を示します。なお、「10.124.35.41」のIPアドレスは、host1の実IPアドレス、「10.124.35.42」のIPアドレスは、
host2の実IPアドレスです。
- 370 -
10.124.35.30 vhost
10.124.35.41 host1
10.124.35.42 host2
2)JNDIの設定
Interstage deployment descriptorファイルに指定するJNDI名に仮想ホスト名を指定してください。詳細は、「3.1.11
IPCOMと連携する場合の注意事項」の「JNDI名に仮想ホスト名の指定」を参照してください。
3)非フラグメントモードの設定
IJServerクラスタから異なるIJServerクラスタのEJBアプリケーションを呼び出す場合、作成したIJServerクラスタに対し
て以下を設定してください。
定義項目
設定内容
非フラグメントモード
ORBの送信データが分割しないようにするため、Java VMオプション(シ
ステムプロパティ)に以下の値を設定してください。
-Dcom.sun.corba.ee.giop.ORBGIOP12BuffMgr=GROW
本プロパティを設定することにより、最大メッセージ分割サイズの設定
値に関わらず、送信データが分割されなくなります。
Java VMオプションの値は、Interstage Java EE管理コンソールおよびasadminコマンドを使用して変更できます。詳細
については、以下のマニュアルを参照してください。
- Interstage Java EE管理コンソールヘルプ
- 「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「asadmin」-「create-jvm-optionsサブコマンド」
IPCOMと連携したIIOP通信の負荷分散機能を利用する場合は、アプリケーション実行時に必要なヒープ使用量を考
慮に入れる必要があります。Java VMのヒープ使用量については、「チューニングガイド」の「Java EE機能のチューニ
ング」-「ORBのチューニング」-「ORB」を参照して、見積もってください。
接続先の送信データサイズが256000byteを超える場合は「チューニングガイド」の「Java EE機能のチューニング」-
「ORBのチューニング」-「通信データサイズに関する注意事項」を参照し、最大受信バッファサイズの拡張を行って
ください。
クライアントの設定
Webコンテナを使用せずに、クライアントからサーバのEJBアプリケーションを呼び出す場合は、以下を設定してください。
1)ネットワークの設定
hostsファイルに、仮想ホスト名とEJBコンテナを配置するサーバのすべてのホスト名宣言を追加します。設定方法に
ついては「Webコンテナの設定」を参照してください。
2)JNDIの設定
「4.13.3 クライアントからサーバに接続する場合の設定」で指定する接続先のホスト名には、IPCOMが存在する仮想
ホスト名を指定してください。
3)非フラグメントモードの設定
以下のプロパティをJava VMオプションに設定してください。
定義項目
非フラグメントモード
設定内容
ORBの送信データが分割しないようにするため、Java
VMオプション(システムプロパティ)に以下の値を設
定してください。
Dcom.sun.corba.ee.giop.ORBGIOP12BuffMgr=GR
OW
- 371 -
定義項目
設定内容
本プロパティを設定することにより、最大メッセージ
分割サイズの設定値に関わらず、送信データが分
割されなくなります。
IPCOMと連携したIIOP通信の負荷分散機能を利用する場合は、アプリケーション実行時に必要なヒープ使用量を考
慮に入れる必要があります。Java VMのヒープ使用量については、「チューニングガイド」の「Java EE機能のチューニ
ング」-「ORBのチューニング」-「ORB」を参照して、見積もってください。
接続先の送信データサイズが256000byteを超える場合は「チューニングガイド」の「Java EE機能のチューニング」-
「ORBのチューニング」-「通信データサイズに関する注意事項」を参照し、最大受信バッファサイズの拡張を行って
ください。
4.23 IIOP通信におけるリクエストの振り分け制御
4.23.1 システム設計
以下にサーバーインスタンスやサーバーを多重化もしくは分散化して運用した場合におけるシステム構成について説明
します。
旧バージョン製品からIIOP通信する場合、もしくは、旧製品に対してIIOP通信する場合にはEJBディスパッチ機能を利用
したロードバランスは利用できません。旧製品から提供するグループ管理サービスを利用してください。
サーバーインスタンスを単一運用する場合
EJBアプリケーションを運用するIJServerクラスタが単一サーバーインスタンスで運用されている場合、ロードバランスは不
要です。また、同一サーバーインスタンスのアプリケーションからEJBアプリケーションを呼び出す場合も、IIOP通信を介
さずに呼び出されるため、ロードバランスは不要です。
サーバーインスタンスを多重化もしくは分散化する運用の場合
EJBアプリケーションを運用するIJServerクラスタが複数サーバーインスタンスで運用されている場合や、呼び出し元から
複数のIJServerクラスタを呼び出す場合には、EJBディスパッチャ用のIJServerクラスタ/サーバーインスタンスを用意します。
呼び出し元はEJBディスパッチャを運用するサーバーインスタンスに対してIIOP通信リクエストを送信するように設計します。
- 372 -
また、1つのサーバーに複数のEJBディスパッチャを作成することもできます。例えば処理の優先度によって複数のEJB
ディスパッチャを用意することによって、優先度の低い処理に負荷が集中した場合において優先度の高い処理への影
響を軽減できます。
注意
EJBディスパッチャを利用する場合、振り分け対象となる複数のIJServerクラスタで同一のEnterprise JavaBeansを運用し
ないでください。
EJBディスパッチャが振り分けを開始しようとした時に、すでに別のIJServerクラスタで同一のEnterprise JavaBeansが運用
されている場合にはEJBD0018の警告メッセージを出力し、そのIJServerクラスタは異常が発生したEnterprise JavaBeans
に対する振り分け対象から除外されます。
サーバーを多重化した運用の場合
EJBディスパッチャを運用するサーバーの異常を想定し、サーバーを多重化して運用する場合にはIPCOMによる負荷分
散を使用します。呼び出し元はIPCOMの仮想ホストに対してIIOP通信リクエストを送信するように設計します。
- 373 -
4.23.1.1 EJBディスパッチ機能のチューニングポイント
EJBディスパッチ機能ではIIOP通信で各サーバーインスタンス間の連携が行われます。このため、EJBディスパッチャを
運用するサーバーインスタンスに対しても、以下のチューニングが必要です。
・ IIOP通信に関する時間監視機能の各種チューニング
EJBディスパッチャが振り分け対象のサーバーインスタンスに対してIIOP通信する時の時間監視時間を設定します。チュー
ニング可能な設定については「2.8 EJBコンテナ時間監視機能」を参照してください。
・ スレッドプールの各種チューニング
EJBディスパッチャがIIOP通信要求を受け付けて振り分け作業を実施する場合、同時にディスパッチ作業が実行可能な
スレッド数をチューニングします。チューニング可能な設定については「6.8.16 スレッドプールの定義項目」を参照してく
ださい。
・ Java VMのヒープ領域サイズのチューニング
EJBディスパッチャはIIOP通信要求を受け付けて振り分け作業を行うため、受け付けるリクエストの要求数などによりJava
VMのヒープ領域サイズをチューニングする必要があります。「チューニングガイド」の「JDK/JREのチューニング」を参照し、
適切な値にチューニングしてください。
4.23.1.2 IPCOM連携で利用可能なEnterprise JavaBeans種別
利用するロードバランス機能により、IPCOMを利用した負荷分散が利用可能なEnterprise JavaBeansが以下のように異な
ります。
グループ管理サービスを利用した場合
呼び出し可能なEnterprise JavaBeansはStateless
Session Beanだけです。
EJBディスパッチャを利用した場合
呼び出し可能なEnterprise JavaBeansはStateless Session
BeanとStateful Session Beanです。
また、分散先のサーバーインスタンスが決定するタイミングも以下のように異なります。
- 374 -
グループ管理サービスを利用した場合
EJBディスパッチャを利用した場合
ビジネスメソッドを実行するたびに分散先のサーバー
インスタンスが変わります。
Home/Remoteインタフェースを利用する場合には、Home
インタフェースに対する初回のcreateメソッドの実行で振
り分けられたサーバーインスタンスで処理されます。処
理するサーバーインスタンスを変更したい場合には、
lookupメソッドから再実行してください。
Stateful Session Beanではセッションを作成したサー
バーインスタンスと異なるサーバーインスタンスに処
理が振り分けられる可能性があるため、Stateful
Session Beanは使用しないでください。
ビジネスインタフェースを利用する場合には、lookupメ
ソッドの実行以降は同一のサーバーインスタンスで処理
されます。処理するサーバーインスタンスを変更したい
場合には、lookupメソッドから再実行してください。
@EJBアノテーションを利用したオブジェクトの注入を行
うとオブジェクトが注入された時点で分散先が決定して
しまい、処理するサーバーインスタンスを変更できない
ため、@EJBアノテーションを利用したオブジェクトの注
入は行わないでください。
4.23.2 ロードバランス/フェイルオーバーアルゴリズム
4.23.2.1 ロードバランス機能を使用しない場合
クライアントに指定するエンドポイント(ホスト名とポートの組み合わせ)には、Enterprise JavaBeansが運用されているサー
バーインスタンスを指定します。JNDIサービスにアクセスしたタイミング(JNDIのAPIを実行したタイミング)でクライアント
に指定したエンドポイントのリストから最初に指定したエンドポイントにアクセスします。
リストの最初のエンドポイントの要求が接続エラーとなった場合、リストの2番目のエンドポイントにアクセスし、同様にその
他エンドポイントにフェイルオーバーされます。接続先のサーバーが起動されていない場合、フェイルオーバーに時間
がかかります。
条件
タイミング
Home/Remoteインタフェースを利用する場合
Enterprise JavaBeansをlookupした時
EJB3.0以降のリ
モートビジネスイン
タフェースを利用
する場合
JNDIを利用する場合
Enterprise JavaBeansをlookupした時
アノテーションを利用する場合
@EJBアノテーションにEnterprise JavaBeansオブジェク
トが注入された時
上記のタイミングでJNDIサービスから取得したオブジェクトリファレンスに対して処理を実行すると、アクセスしたJNDIサー
ビスと同一のサーバーインスタンスに対して処理が要求されます。
4.23.2.2 EJBディスパッチ機能によるロードバランス
クライアントに指定するエンドポイント(ホスト名とポートの組み合わせ)には、EJBディスパッチャが運用されているサーバー
インスタンスを指定します。JNDIサービスにアクセスしたタイミング(JNDIのAPIを実行したタイミング)でクライアントに指
定したエンドポイントのリストから最初に指定したエンドポイントにアクセスします。
リストの最初のエンドポイントの要求が接続エラーとなった場合、リストの2番目のエンドポイントにアクセスし、同様にその
他エンドポイントにフェイルオーバーされます。
接続先のサーバーが起動されていない場合、フェイルオーバーに時間がかかります。
EJBディスパッチャは以下の振り分けタイミングで振り分け対象に処理を振り分けます。Enterprise JavaBeans以外のサー
ビス(JNDIサービスやGMS)に対するIIOP通信については振り分け対象となりません。
条件
Home/Remoteインタフェースを利用する場合
振り分けタイミング
Homeインタフェースの初回のcreateメソッドを実行した時。
createメソッドの実行後は、lookupメソッドが再実行され
- 375 -
条件
振り分けタイミング
るまで初回のcreateメソッドで振り分けられたサーバーイ
ンスタンスに振り分け続けます。
EJB3.0以降のリ
モートビジネスイ
ンタフェースを利
用する場合
JNDIを利用する場合
Enterprise JavaBeansをlookupした時
アノテーションを利用する場合
-(アノテーションは利用しないでください。)
注意
・ ロードバランス機能利用時にアノテーションの利用を推奨しない理由
EJB3.0以降のリモートビジネスインタフェースでアノテーションを利用する場合、@EJBアノテーションにEnterprise JavaBeans
オブジェクトが注入された時に振り分け先が決定します。しかし、@EJBアノテーションにEnterprise JavaBeansオブジェク
トを再注入する方法がないため、一度オブジェクトが注入されたアプリケーションで振り分け先を変更する方法がありませ
ん。このため、ロードバランス機能を使用する場合にはアノテーションは利用しないでください。
上記の振り分けタイミングで取得したオブジェクトリファレンスに対して処理を要求すると、振り分けタイミングで呼び出さ
れたサーバーインスタンスに対して処理が要求されます。
処理を要求するサーバーインスタンスを変更したい場合には、上記の振り分けタイミングの処理から再実行してください。
注意
EJB3.0以降のリモートビジネスインタフェースでアノテーションを利用する場合、@EJBアノテーションにEnterprise JavaBeans
オブジェクトを再注入する方法がないため、ロードバランス機能を使用する場合にはアノテーションは利用しないでくださ
い。
以下にHome/Remoteインタフェースを利用した場合のEJB2.1規約での動作について説明します。なお、EJB3.0規約の
ビジネスインタフェースを利用した場合には、 「(2)lookupの実行」で内部的に「(3)Homeインタフェースのcreateメソッドの
実行」まで行われるため、そのように読み替えてください。
「EJB Home」はEJBアプリケーションのHomeインタフェースのオブジェクト、「EJB Remote」はEJBアプリケーションのRemote
インタフェースのオブジェクト、「Home OR」はEJBアプリケーションのHomeインタフェースのオブジェクトリファレンス、
「Remote OR」はEJBアプリケーションのRemoteインタフェースのオブジェクトリファレンスを表しています。
オブジェクトはIIOP通信要求をサーバーで処理する実体であり、オブジェクトリファレンスは分散して配置されたオブジェ
クトを特定するための情報です。
- 376 -
JNDIのlookupメソッドやHomeインタフェースのcreateメソッドで返却されるオブジェクトリファレンスには、オブジェクトリファ
レンスを生成/返却したサーバーインスタンスのホスト名とIIOPリスナーポート番号の情報が設定されます。このオブジェク
トリファレンスに対する要求は、設定されているホスト名とIIOPリスナーポート番号に対して送信されます。
上記の各種処理において、どのようにIIOP通信されるかを以下に説明します。
(1) InitialContextの生成
EJBディスパッチ機能を利用した場合にはサーバーへの要求は行われません。
(2)lookupメソッドの実行
lookupメソッド処理ではサーバー上のJNDIサービスにIIOP通信し、JNDIサービスからHomeインタフェースのオブジェ
クトリファレンスを取得します。このIIOP通信処理はクライアントに指定したエンドポイント(ホスト名とIIOPリスナーポー
ト番号)に要求が送信されます。
要求を受けたEJBディスパッチャは要求がEnterprise JavaBeansに対する要求ではない(JNDIサービスに対する要求
である)ためディスパッチ処理は行わず、EJBディスパッチャが動作するサーバーインスタンス上のJNDIサービスが
Homeインタフェースのオブジェクトリファレンスを返却します。
注意
EJBディスパッチャを運用するサーバーインスタンスに、振り分け対象とするEnterprise JavaBeansを展開することで
Homeインタフェースのオブジェクトリファレンスが登録されます。
Enterprise JavaBeans(アプリケーション)の展開方法については、「4.6.9 アプリケーションの展開」を参照してください。
(3)Homeインタフェースのcreateメソッドの実行
上記の(2)で返却されたオブジェクトリファレンスには、EJBディスパッチャが動作するサーバーインスタンスの情報が
設定されているため、Homeインタフェースのcreateメソッドの要求はEJBディスパッチャが動作するサーバーインスタン
スに送信されます。要求を受けたEJBディスパッチャはEnterprise JavaBeansに対する要求であるため、振り分け対象
のサーバーインスタンスのオブジェクトリファレンスに対して再送要求を返信します。再送要求を受け付けた呼び出し
元は自動的に振り分け対象のサーバーインスタンスに要求が再送されて、振り分けられたサーバーインスタンス上で
Remoteインタフェースのオブジェクトリファレンスを生成して返却します。このため、オブジェクトリファレンスには、振り
分け先のサーバーインスタンスのホスト名とIIOPリスナーポート番号が設定されます。
- 377 -
注意
初回のcreateメソッドで返却された振り分け対象のオブジェクトリファレンスの情報は、lookupメソッドで取得したHome
インタフェースのオブジェクトリファレンスの情報に上書きします。初回のcreateメソッドの実行後は、同一のサーバー
インスタンスに振り分けられます。振り分け先を変更する場合には、lookupメソッドから再実行する必要があります。
(4)ビジネスメソッドの実行
上記の(3)で返却されたRemoteインタフェースのオブジェクトリファレンスには、振り分け先のサーバーインスタンスの
情報が設定されているため、ビジネスメソッドの要求は直接Enterprise JavaBeansが動作するサーバーインスタンスに
送信されます。
(5)Remoteインタフェースのremoveメソッドの実行
上記と同様にRemoteインタフェースのremoveメソッドの要求は直接Enterprise JavaBeansが動作するサーバーインス
タンスに送信されます。
上記の各処理では以下のロードバランスもしくはフェイルオーバーが動作します。
処理
ロードバランスもしくはフェイルオーバーの動作
Home/Remoteインタフェースを利用する場合
Homeインタフェースのcreateメソッドを実行した時
(1) InitialContextの生成
なし(サーバーへの要求は行われません)
(2)lookupメソッドの実行
・クライアントに指定したエンドポイントのリストにおいて
最初に指定したエンドポイントから順番にアクセスする
フェイルオーバー
(3)Homeインタフェースのcreateメソッドの実行
■ クライアントからEJBディスパッチャ間
・Homeインタフェースに対するオブジェクトリファレンス
のフェイルオーバー(※)
(EJBディスパッチャを運用するサーバーインスタンス
の"オブジェクトリファレンスのフェイルオーバー設定"で
有効となります。)
■ クライアントから振り分け対象のサーバーインスタン
ス間
・EJBディスパッチャによるロードバランス
・Homeインタフェースに対するオブジェクトリファレンス
のフェイルオーバー(※)
(EJBディスパッチャのディスパッチ対象となるサーバー
インスタンスの"オブジェクトリファレンスのフェイルオー
バー設定"で有効となります。)
(4)ビジネスメソッドの実行
・Remoteインタフェースに対するオブジェクトリファレン
スのフェイルオーバー(※)
(EJBディスパッチャのディスパッチ対象となるサーバー
インスタンスの"オブジェクトリファレンスのフェイルオー
バー設定"で有効となります。)
※)オブジェクトリファレンスのフェイルオーバー設定については「オブジェクトリファレンスのフェイルオーバー設定」を参
照してください。
ディスパッチするサーバーインスタンスの決定方法
EJBディスパッチャは振り分け対象とするサーバーインスタンスのリストを作成します。EJBアプリケーションに対する要求
を受け付けると、このリストの先頭から順番にラウンドロビンで振り分けるサーバーインスタンスで決定します。
- 378 -
4.23.2.3 グループ管理サービスによるロードバランス
クライアントに指定するエンドポイント(ホスト名とポートの組み合わせ)には、Enterprise JavaBeansが運用されているサー
バーインスタンスを指定します。RMI-IIOPクライアントがInitialContextオブジェクトを作成すると、そのクライアントで指定
したエンドポイントのリストから最初に指定したエンドポイントのグループ管理サービス(GMS)にアクセスし、アクセスした
サーバーインスタンスのIJServerクラスタ内で有効なサーバーインスタンスのリストを取得します。この取得する情報には、
IIOP通信するのに必要な以下の情報が含まれています。
取得情報
値
ホスト名
IIOPリスナーの定義項目「ネットワークアドレス」に設定された値が返却されます。
ただし、ネットワークアドレスの設定が「0.0.0.0」(デフォルト)の場合、ノードエー
ジェントのJMXコネクタに設定する「クライアントホスト名」に指定された値が返
却されます。
ポート番号
IIOPリスナーの定義項目「リスナーポート」に設定された値が返却されます。
取得したサーバーインスタンスのリストからランダムなサーバーインスタンスのリストを作成します。サーバーインスタンスの
リストの取得はプロセスで一度行われます。
作成したInitialContextオブジェクトに対して、API(lookupメソッドなど)を実行すると、ランダムなサーバーインスタンスのリ
ストから、最初のサーバーインスタンスに処理を要求します。InitialContextオブジェクトを作成するたびにサーバーインス
タンスのリストをローテーションしてランダムなサーバーインスタンスのリストが再作成されます。
lookupメソッドで取得したオブジェクトに対する処理は、lookupメソッドでアクセスしたサーバーインスタンスに対して要求
します。ロードバランスしたい場合には、InitialContextの作成から再実行してください。
リストの最初の接続先(エンドポイントまたはサーバーインスタンス)の要求で通信エラーが発生して利用できない場合、リ
ストの2番目の接続先が使用されて、同様にその他接続先にフェイルオーバーされます。接続先のホスト名(またはIPアド
レス)のサーバが起動されていない場合、フェイルオーバーに時間がかかります。
ハートビートによる監視
GMSはハートビート信号により定期的にサーバーインスタンスが正常に稼動しているかを確認します。このため、GMSが
返却するサーバーインスタンスの一覧情報は、ハートビートの設定により以下のように異なります。
ハートビート
サーバーインスタンスの一覧情報
無効
サーバーインスタンスの状態に関わらず、クラスタに属するサーバーインスタン
スの一覧情報です。
有効
正常にハートビート信号が送信されており、正常に稼動しているとグループ管理
サービスが認識しているサーバーインスタンスの一覧情報です。
ランダムなサーバーインスタンスのリスト作成方法
IJServerクラスタの各サーバーインスタンスはバランスするために重み付けされており、100に設定されます。各サーバー
インスタンスの重み付けをすべて累積した値を算出します。サーバーインスタンス数が4の場合には400となります。
1~400の数字を以下のように各サーバーインスタンスに割り当て、その数字の中から乱数で値を選択してサーバーイン
スタンスを選択します。以下はサーバーインスタンスがMyInstance-1、MyInstance-2、MyInstance-3、MyInstance-4の場
合の例です。乱数の選択についてはjava.util.RandomクラスのnextInt(int n)メソッドを使用します。詳細は、java.util.Random
クラスのJavadocを参照してください。
選択された値
サーバーインスタンス
1~100
MyInstance-1
101~200
MyInstance-2
201~300
MyInstance-3
301~400
MyInstance-4
- 379 -
選択されたサーバーインスタンス以降のリストを新しいリストの先頭に追加し、選択されたサーバーインスタンスまでのリス
トをその後に追加してランダムなリストを作成します。上記の例の場合、乱数で188が選択されると、188に対応する
MyInstance-2以降が先頭に追加された以下のような新しいリストが作成されます。
新しいリスト
MyInstance-2
MyInstance-3
MyInstance-4
MyInstance-1
以下に概要図を記載します。
(1)でクライアントに指定されたエンドポイントにアクセスして、グループ管理サービスからサーバーインスタンスのリストを
取得します。
エンドポイントを複数指定した場合、指定されたエンドポイントの先頭からアクセスし、アクセスに失敗した場合には(2)で
次に指定されたエンドポイントにアクセスしてグループ管理サービスからサーバーインスタンスのリストを取得します。取
得したサーバーインスタンスのリストから、クライアントでランダムなリストを生成します。
(3)で生成されたランダムなリストの先頭から実際の処理を要求します。
サーバーインスタンスが複数存在し、(3)のアクセスに失敗した場合には、(4)で次のサーバーインスタンスに処理を要求
します。
4.23.3 サーバーの設定
EJBアプリケーションを運用するサーバーの設定について以下に説明します。
- 380 -
4.23.3.1 ロードバランス機能を使用しない場合
IJServerクラスタのIIOPロードバランスの設定に以下を設定します。
設定項目
指定値
ロードバランス方式
disable
4.23.3.2 EJBディスパッチ機能によるロードバランス
EJBディスパッチ機能を使用する場合、EJBディスパッチャを運用するIJServerクラスタと、EJBディスパッチャの振り分け
対象となるIJServerクラスタを用意します。
EJBディスパッチャを運用するIJServerクラスタの設定に以下を指定します。
設定項目
指定値
ロードバランス方式
ejb-dispatch
ディスパッチターゲット
IJServerクラスタ名
asadminコマンドで環境構築を行う場合の手順を以下に記載します。定義項目の詳細については、「6.4.1 IIOPロードバ
ランスの定義項目」を参照してください。
1. EJBアプリケーションを運用するIJServerクラスタ/サーバーインスタンスを作成します。
以 下 の 実 行 例 は EJB ア プ リ ケ ー シ ョ ン を 運 用 す る IJServer ク ラ ス タ が "EjbCluster" 、 サ ー バ ー イ ン ス タ ン ス
が"EjbInstance001"の場合の例です。
【コマンド実行例】
>asadmin create-cluster EjbCluster
>asadmin create-instance --cluster EjbCluster EjbInstance001
2. EJBディスパッチャを運用するIJServerクラスタ/サーバーインスタンスを作成します。
以下の実行例はEJBディスパッチャを運用するIJServerクラスタが"DispatchCluster"、サーバーインスタンス
が"DispatchInstance001"の場合の例です。
【実行例】
>asadmin create-cluster DispatchCluster
>asadmin create-instance --cluster DispatchCluster DispatchInstance001
3. 作成したIJServerクラスタのロードバランス方式にEJBディスパッチャを指定します。また、ディスパッチターゲットに
振り分け対象とするIJServerクラスタ名を指定します。
【コマンド実行例】
>asadmin set DispatchCluster.iiop-load-balance.method=ejb-dispatch
>asadmin create-ejb-dispatch-target --target DispatchCluster EjbCluster
4. 振り分け対象とするEJBアプリケーションが含まれるモジュールについては、create-application-refコマンドを実行し
てEJBディスパッチャを運用するIJServerに対しても有効にしてください。
【コマンド実行例】
>asadmin deploy --target EjbCluster EjbApplication.ear
>asadmin create-application-ref --target DispatchCluster EjbApplication
4.23.3.3 グループ管理サービスによるロードバランス
IJServerクラスタのIIOPロードバランスの設定に以下を指定します。
設定項目
ロードバランス方式
指定値
gms
- 381 -
また、IJServerクラスタの一般情報の設定に以下を指定します。
設定項目
指定値
ハートビート
true
ハートビートポート
ドメインで一意の値を指定します。
ハートビートアドレス
ドメインで一意のマルチキャストアドレスを指定します。
4.23.4 クライアント(呼び出し元)の設定
EJBアプリケーションを呼び出す側の設定について以下に説明します。
4.23.4.1 ロードバランス機能を使用しない場合
IJServerクラスタの設定
呼び出し元がIJServerクラスタの場合、呼び出す接続先を指定する方法には以下の2つの方法があります。
1. JNDIサービスの設定で他ネーミングサービスの接続先を指定する
2. 環境ネーミングコンテキストの設定で接続先を指定する
以下にそれぞれの指定方法について説明します。
1. JNDIサービスの設定で他ネーミングサービスの接続先を指定する
JNDIサービスの設定では、ネーミングサービスURLを指定することで、自サーバーインスタンスに指定されたJNDI
名のオブジェクトリファレンスが登録されていない場合に、指定されたURLの別サーバーインスタンスのネーミング
サービスに問い合わせを行うための設定ができます。
このURLにEJBアプリケーションを運用するサーバーインスタンスのIIOPリスナー情報を指定します。
詳細な定義方法については、「6.4.2 JNDIサービスの定義項目」を参照してください。
2. 環境ネーミングコンテキストの設定で接続先を指定する
Interstage deployment descriptorファイルにInteroperable Naming Service(以降、INS)の規則を使用して、他プロセ
スまたはリモートサーバのホスト名、IIOPリスナーのポート番号、JNDI名を指定することができます。この設定にEJB
アプリケーションが運用されているサーバーインスタンスのIIOPリスナー情報を指定します。
詳細は「2.13.2 環境ネーミングコンテキスト(Environment Naming Context)」を参照してください。
アプリケーションクライアントコンテナの設定
Interstage ACC deployment descriptor(sun-acc.xml)にtarget-server要素を定義します。このtarget-server要素には、EJBア
プリケーションが運用されているサーバーインスタンスの接続先を指定します。target-server要素のname属性に一意の名
前、address属性に接続先ホストをFQDN形式またはIPv4のIPアドレス、port属性にIIOPリスナーのポート番号を指定します。
property要素のプロパティcom.sun.appserv.iiop.loadbalancingpolicyは指定しない、もしくは、"disable"を指定してください。
例
<client-container>
<target-server name="server1" address="host1" port="23700"/>
<property name="com.sun.appserv.iiop.loadbalancingpolicy" value="disable"/>
</client-container>
スタンドアロンクライアントの設定
エンドポイントの指定として以下を設定してください。このプロパティを指定する場合、同一プロセスで動作するアプリケー
ションでは同一の値を指定してください。同一サーバーインスタンス上のアプリケーションで別々の値を指定したり、途中
で接続先を変更することはできません。システムプロパティのcom.sun.appserv.iiop.loadbalancingpolicyは指定しない、も
しくは、"disable"を指定してください。
- 382 -
プロパティ名
com.sun.appserv.iiop.endpoints
値
ホスト名とポート番号のリスト
説明
EJBアプリケーションを運用するサー
バーインスタンスのホスト名とIIOP通
信ポート番号を以下の書式で指定
します。
ホスト名:ポート番号
例) host1:23700
デフォルト値はlocalhost:23600です。
例
-Dcom.sun.appserv.iiop.loadbalancingpolicy=disable
-Dcom.sun.appserv.iiop.endpoints=host1:23700
4.23.4.2 EJBディスパッチ機能によるロードバランス
com.sun.appserv.iiop.loadbalancingpolicyプロパティにロードバランスポリシーとして以下を設定できます。EJBディスパッ
チ機能を使用する場合には、ロードバランスポリシーを指定しないか、もしくは”disable”を指定してください。
プロパティ名
com.sun.appserv.iiop.loadbalancing
policy
値
説明
ロードバランスを使用しない、もしくは、
EJBディスパッチ機能によるロードバ
ランスを使用します。
デフォルト設定です。
disable
IJServerクラスタの設定
呼び出し元がIJServerクラスタの場合、呼び出す接続先を指定する方法には以下の2つの方法があります。
1. JNDIサービスの設定で他ネーミングサービスの接続先を指定する
2. 環境ネーミングコンテキストの設定で接続先を指定する
両方指定した場合には2.の方法が優先されます。以下にそれぞれの指定方法について説明します。
1. JNDIサービスの設定で他ネーミングサービスの接続先を指定する
JNDIサービスの設定では、ネーミングサービスURLを指定することで、自サーバーインスタンスに指定されたJNDI
名のオブジェクトリファレンスが登録されていない場合に、指定されたURLの別サーバーインスタンスのネーミング
サービスに問い合わせを行うための設定ができます。
このURLにEJBディスパッチャを運用するサーバーインスタンスのIIOPリスナー情報を指定します。詳細な定義方
法については、「6.4.2 JNDIサービスの定義項目」を参照してください。
2. 環境ネーミングコンテキストの設定で接続先を指定する
Interstage deployment descriptorファイルにInteroperable Naming Service(以降、INS)の規則を使用して、他プロセ
スまたはリモートサーバのホスト名、IIOPリスナーのポート番号、JNDI名を指定することができます。この設定にEJB
ディスパッチャが運用されているサーバーインスタンスのIIOPリスナー情報を指定します。
詳細は「2.13.2 環境ネーミングコンテキスト(Environment Naming Context)」を参照してください。
アプリケーションクライアントコンテナの設定
Interstage ACC deployment descriptor(sun-acc.xml)にtarget-server要素を定義します。このtarget-server要素には、EJB
ディスパッチャが運用されているサーバーインスタンスの接続先を指定します。EJBディスパッチャを運用するサーバーイ
ンスタンスが異常停止する場合を考慮し、IJServerクラスタを複数サーバーインスタンスで運用している場合には、複数の
エンドポイントを指定してください。複数指定すると、先頭に指定したターゲットから順番にアクセスされます。
- 383 -
target-server要素のname属性に一意の名前、address属性に接続先ホストをFQDN形式またはIPv4のIPアドレス、port属
性にIIOPリスナーのポート番号を指定します。
property要素のプロパティcom.sun.appserv.iiop.loadbalancingpolicyは指定しない、もしくは、"disable"を指定してください。
例
<client-container>
<target-server name="server1" address="host1" port="23700"/>
<target-server name="server2" address="host1" port="23701"/>
<property name="com.sun.appserv.iiop.loadbalancingpolicy" value="disable"/>
</client-container>
スタンドアロンクライアントの設定
エンドポイントの指定として以下を設定してください。このプロパティを指定する場合、同一プロセスで動作するアプリケー
ションでは同一の値を指定してください。同一サーバーインスタンス上のアプリケーションで別々の値を指定したり、途中
で接続先を変更することはできません。システムプロパティのcom.sun.appserv.iiop.loadbalancingpolicyは指定しない、も
しくは、"disable"を指定してください。
プロパティ名
com.sun.appserv.iiop.endpoints
値
ホスト名とポート番号のリスト
説明
ロードバランスを行う場合、EJBディ
スパッチャを運用するサーバーイン
スタンスのホスト名とIIOP通信ポート
番号を以下の書式で指定します。
ホスト名:ポート番号[,ホスト名:ポート
番号,...]
例) host1:23700,host1:23701
デフォルト値はlocalhost:23600です。
例
-Dcom.sun.appserv.iiop.loadbalancingpolicy=disable
-Dcom.sun.appserv.iiop.endpoints=host1:23700,host1:23701
4.23.4.3 グループ管理サービスによるロードバランス
com.sun.appserv.iiop.loadbalancingpolicyプロパティにロードバランスポリシーとして以下を設定できます。プロパティのデ
フォルト値は"disable"であるため、グループ管理サービスによるロードバランスを使用する場合には必ず指定してください。
プロパティ名
com.sun.appserv.iiop.loadbalancing
policy
値
説明
グループ管理サービスによるロード
バランス機能を使用します。各サー
バーインスタンスに均等にロードバ
ランスします。
ic-based
IJServerクラスタの設定
呼び出し元がIJServerクラスタの場合、IJServerクラスタから他プロセスまたはリモートサーバのネーミングサービスに登録
されたEnterprise JavaBeanにアクセスすることはできません。
アプリケーションクライアントコンテナの設定
Java EEアプリケーションクライアントの接続にRMI-IIOPロードバランスを使用する場合、Interstage ACC deployment
descriptor(sun-acc.xml)にtarget-server要素を定義してください。
- 384 -
target-server要素のname属性に一意の名前、address属性に接続先ホストをFQDN形式またはIPv4のIPアドレス、port属
性にIIOPリスナーのポート番号を指定します。さらにproperty要素にプロパティcom.sun.appserv.iiop.loadbalancingpolicy
を指定してください。com.sun.appserv.iiop.loadbalancingpolicyを指定しなかった場合にはロードバランスされません。また、
ロードバランスは最初に指定したエンドポイントと同じIJServerクラスタの中で行われます。target-server要素に異なるIJServer
クラスタに属したエンドポイントを定義しても無視されます。
例
<client-container>
<target-server name="server1" address="host1" port="23700"/>
<target-server name="server2" address="host1" port="23701"/>
<property name="com.sun.appserv.iiop.loadbalancingpolicy" value="ic-based"/>
</client-container>
スタンドアロンクライアントの設定
システムプロパティにcom.sun.appserv.iiop.loadbalancingpolicyまたはエンドポイントの指定として以下を設定してください。
このプロパティを指定する場合、同一プロセスで動作するアプリケーションでは同一の値を指定してください。同一サー
バーインスタンス上のアプリケーションで別々の値を指定したり、途中で接続先を変更することはできません。
プロパティ名
com.sun.appserv.iiop.endpoints
値
ホスト名とポート番号のリスト
説明
ロードバランスを行う場合、ホスト名
とIIOP通信ポート番号を以下の書式
で指定します。
ホスト名:ポート番号[,ホスト名:ポート
番号,...]
例) host1:23700,host1:23701
デフォルト値はlocalhost:23600です。
例
-Dcom.sun.appserv.iiop.loadbalancingpolicy=ic-based
-Dcom.sun.appserv.iiop.endpoints=host1:23700,host1:23701
4.23.5 オブジェクトリファレンスのフェイルオーバー設定
EJBアプリケーションのオブジェクトリファレンスに対して処理要求した時に、オブジェクトリファレンスを生成/返却したサー
バーインスタンスが停止していた場合には、IJServerクラスタの別のサーバーインスタンスにフェイルオーバーすることが
できます。この機能を使用する場合には、IIOPロードバランス設定において、"オブジェクトリファレンスのフェイルオー
バー設定"を有効にしてください。
4.24 Enterprise JavaBeansへアクセスする場合の運用
Enterprise JavaBeansには以下の形態があります。
・Session Bean
・Message-driven Bean
ここでは、IJServerクラスタ/Interstage Java EE DASサービス上に配備された各形態のEnterprise JavaBeansへアクセスす
る際に必要な環境設定について説明します。
- 385 -
4.24.1 Session Beanへアクセスする場合
Session Beanは呼び出し元のアプリケーションからの要求を同期的に処理します。ローカル用インタフェース(@Localア
ノテーションを定義したインタフェースなど)を使用する場合には、同一のサーバーインスタンスに配備されたアプリケー
ションからのみ呼び出すことができます。また、リモート用インタフェース(@Remoteアノテーションを定義したインタフェー
スなど)を使用する場合には、同一のサーバーインスタンスに配備されたアプリケーションだけでなく、IIOP通信を経由し
てリモートマシンからEnterprise JavaBeansを呼び出すことができます。この場合、以下の呼び出し元の形態により利用で
きる機能や呼び出し元の環境設定に違いがあります。
1. 同一のサーバーインスタンス/同一の配備モジュール内のアプリケーション
2. 同一のサーバーインスタンス/別の配備モジュール内のアプリケーション
3. 別のサーバーインスタンスのアプリケーション
4. Java EEアプリケーションクライアント
5. Java SEスタンドアロンアプリケーション
6. J2EE実行環境(IJServer)のアプリケーション
利用できる機能
以下の表はそれぞれの呼び出し元の形態で利用できる機能の差異を示しています。○が利用可能な機能です。
機能
同一の
サーバー
インスタ
ンス/同一
の配備モ
ジュール
内のアプ
リケー
ション
同一の
サー
バーイ
ンスタ
ンス/
別の配
備モ
ジュー
ル内の
アプリ
ケー
ション
別のサー Java EE Java SE J2EE実行環
バーイン アプリ
スタンド 境(IJServer)
スタンス ケーショ アロンア のアプリケー
のアプリ ンクライ プリケー
ション
ケーショ
アント
ション
ン
動的スタブ
○
○
○
○
○
○
ローカル呼び出し
○
-
-
-
-
-
リモート用インタフェース利用時の参照渡し
○
-
-
-
-
-
以下にそれぞれの呼び出し元の形態で利用できる機能について説明します。
・ 動的スタブ
リモート用インタフェースを使用してEnterprise JavaBeansを呼び出す場合、IIOP通信処理を隠ぺいするためにスタブ
という中継クラスを経由して呼び出されます。このスタブはインタフェースの情報を元に動的に生成されるため動的ス
タブと呼びます。(J2EE機能ではスタブは配備時に生成されていたため、スタブを含むクライアント配布物を呼び出
し元のクラスパスに設定する必要がありました。)このため、呼び出し元はインタフェースのみ参照できれば、Enterprise
JavaBeansを呼び出すことができます。
IIOP通信についての詳細は"2.11 ORB(Object Request Broker)/RMI-IIOP"を参照してください。
・ ローカル呼び出し
同一のサーバーインスタンス/同一の配備モジュール内でリモート用インタフェースを使用してEnterprise JavaBeans
を呼び出す場合、スタブが自動的にIIOP通信を経由せずにEnterprise JavaBeansを呼び出します。これをローカル
呼び出しと呼びます。
・ リモート用インタフェース利用時の参照渡し
メソッド呼び出し時の引数や戻り値の受け渡し方には"値渡し"と"参照渡し"があります。
値渡しの場合、呼び出し元には引数や戻り値のコピーが渡されます。このため、呼び出し元で値を変更しても、呼び
出し先に影響を与えません。
参照渡しの場合、呼び出し元には引数や戻り値の参照が渡されます。このため、呼び出し元で値を変更すると、呼
- 386 -
び出し先の状態も変更されます。
IIOP通信でインターネットを経由してメソッドを呼び出した場合、異なるJava VM間の呼び出しとなりますので必ず値
渡しになります。このため、汎用性を考慮してリモート用インタフェースを利用した場合にはデフォルトで値渡しで動
作します。しかし、同一のサーバーインスタンス内でリモート用インタフェースを使用してEnterprise JavaBeansを呼び
出す場合には値のコピーを生成しない参照渡しの方が性能が良いため、参照渡しに変更することができます。
参照渡しに変更するには、呼び出し先のEnterprise JavaBeansのInterstage EJB application deployment descriptor
(sun-ejb-jar.xml)ファイルに、<pass-by-reference>タグを定義して"true"を指定します。
Interstage EJB application deployment descriptorファイルの詳細は" 3.2.3 Interstage deployment descriptor "を参照し
てください。
呼び出し元の環境設定
以下の表はそれぞれの呼び出し元の形態で環境設定が必要なものを示しています。○が環境設定が必要なものです。
△は環境設定が必要な場合があるものです。
環境設定項目
同一の
サーバー
インスタ
ンス/同一
の配備モ
ジュール
内のアプ
リケー
ション
同一の
サー
バーイ
ンスタ
ンス/
別の配
備モ
ジュー
ル内の
アプリ
ケー
ション
別のサー Java EE Java SE J2EE実行環
バーイン アプリ
スタンド 境(IJServer)
スタンス ケーショ アロンア のアプリケー
のアプリ ンクライ プリケー
ション
ケーショ
アント
ション
ン
クライアントスタブJARファイル
-
-
-
○
-
-
JNDIの環境変数の設定
-
-
-
-
○
○
リモート用インタフェースの設定
-
○
○
△
○
○
接続先の設定
-
-
○
○
○
○
以下にそれぞれの環境設定ついて説明します。
・ クライアントスタブJARファイル
Java EEアプリケーションクライアントを使用する場合、アプリケーションクライアント(client-jarファイル)を含むモジュー
ルを配備し、その配備したモジュールに対してInterstage Java EE管理コンソールもしくはasadminコマンドのget-clientstubsサブコマンドでクライアントスタブJARファイルをダウンロードして利用します。Java EEアプリケーションクライアン
ト以外を使用する場合には、クライアントスタブJARファイルは不要です。
・ JNDIの環境変数の設定
Java SEスタンドアロンアプリケーションやJ2EE実行環境(IJServer)のアプリケーションでEnterprise JavaBeansを呼び
出す場合、JNDIを使用するためJNDIの環境変数の設定が必要です。サーバーインスタンスやJava EEアプリケーショ
ンクライアントを運用するアプリケーションクライアントコンテナではJNDIの環境設定が自動的に行われているため設
定は不要です。
・ リモート用インタフェースの設定
リモート用インタフェースでEnterprise JavaBeansを呼び出す場合、動的スタブで呼び出されるためリモート用インタ
フェースがアプリケーションから参照できれば呼び出すことができます。
Enterprise JavaBeansのクラス(ejb-jarファイルに含まれるクラス)は同一の配備モジュール内で参照できるApplication
クラスローダでロードされるため、同一のサーバーインスタンス/同一の配備モジュール内のアプリケーションであれば
リモートインタフェースをクラスパスなどに設定する必要はありません。
配備モジュールからクライアントスタブJARファイルをダウンロードして運用するJava EEアプリケーションクライアントの
場合、EJBモジュール(ejb-jarファイル)とアプリケーションクライアント(client-jarファイル)を含むエンタープライズアプ
リケーション(earファイル)に対してクライアントスタブJARファイルをダウンロードすると配備モジュール内にEnterprise
JavaBeansが含まれているためクラスパスなどの設定は不要です。
上記以外の同一の配備モジュール以外から呼び出す場合には、呼び出し元のアプリケーションが参照できるように
リモート用インタフェースをクラスパスなどに設定してください。
- 387 -
・ 接続先の設定
サーバーインスタンスで運用されているアプリケーションからリモート用インタフェースでEnterprise JavaBeansを呼び
出す場合、デフォルトでは同一サーバーインスタンス上のEnterprise JavaBeansが自動的に呼びされます。このため、
接続先のホスト名とポート番号の設定は不要です。
別のサーバーインスタンスのアプリケーションからEnterprise JavaBeansを呼び出す場合、他ネーミングサービス連携
機能を使用して接続先を設定します。詳細は"2.13 JNDI"を参照してください。
Java EEアプリケーションクライアントの場合にはsun-acc.xmlファイルにエンドポイントを指定し、Java SEスタンドアロン
アプリケーションやJ2EE実行環境(IJServer)のアプリケーションの場合にはJava VMのシステムプロパティ
に"com.sun.appserv.iiop.endpoints"を指定し、接続先を設定します。詳細は"4.23.4 クライアント(呼び出し元)の設定"を
参照してください。
4.24.2 Message-driven Beanへアクセスする場合
Message-driven BeanはJMSやconnectorからの非同期メッセージを処理するEnterprise JavaBeansです。Message-driven
Beanは呼び出し元のアプリケーションの形態に関わらずJMSやconnectorからメッセージが配信されると処理されます。特
に呼び出し元の違いによる動作に違いはありません。
4.25 Symfowareの監査証跡
4.25.1 設計方法
Symfowareの監査ログにスレッド情報とサーバーインスタンス名を出力する場合には、Interstage Application Serverで
JDBC接続プールを定義する際にSymfowareの監査ログにアクセス情報を出力するように指定します。詳細は定義詳細
とコマンド詳細を参照してください。定義したデータソースをJava EEのJNDI機能でlookupして使用してください。
製品構成
システム設計をする場合、以下の製品が必要となります。
・ Symfoware Server 9.0以降
・ Systemwalker V13以降
性能
監査ログを書き込む場合、データベースとの通信データ量が増加するため性能に若干の影響があります。このため、以
下のようにデータソースを使い分けることをお勧めします。また、使用する場合には必ず性能評価を実施した上で使用し
てください。
・ データベースの検索のみで監査の必要がないアプリケーションの場合、スレッド情報とサーバーインスタンス名はア
クセスログには出力しないデータソースを用意する。
・ データベースの更新処理を実行するような監査の必要があるアプリケーションの場合、スレッド情報とサーバーイン
スタンス名をアクセスログに出力するデータソースを用意する。
注意
同一のトランザクション内で異なるデータソースを同時に利用する場合、当該トランザクションの整合性を保つ必要がある
ため、分散トランザクションの形態になります。しかし、性能面や信頼性の問題で、分散トランザクションの利用はなるべく
避けるべきなので、1つのトランザクション内では、1つのデータソースのみにアクセスするようにアプリケーションを設計し
てください。
- 388 -
4.25.2 運用方法
1. 環境設定
- 監査ログデータベースのセットアップ
Symfowareの監査ログデータベースをセットアップして、監査ログを採取するように設定してください。詳細は
Symfowareのマニュアルを参照してください。
- 「HTTPアクセスログ」設定
「4.21.3 HTTPアクセスログ」を参照してください。
- 「Symfowareの監査証跡」設定
詳細は、「6.6.1 JDBC接続プールの定義項目」と「リファレンスマニュアル(コマンド編)」-「resources.jdbcconnection-poolの定義項目」を参照してください。
2. 追跡調査
セキュリティ監査証跡の運用モデルを以下に示します。以下のようにPDCA(Plan-Do-Check-Action)のサイクルで
セキュリティ対策を行う運用モデルを想定しています。
システムのセキュリティポリシーを設定してSystemwalker Centric Managerを使用して定期的に監査ログの監視を
行います。システム管理部門が採取された監査ログを分析してセキュリティ監査委員会などに報告します。セキュ
リティ監査委員会は分析結果を確認して不正を検知した場合には不審者への注意もしくは必要に応じてセキュリ
ティ対策の実施を行います。
- 389 -
第5章 Java EE機能のセキュリティ
5.1 Java EE運用環境のセキュリティ機能
ここでは、Java EE運用環境のセキュリティ機能について説明します。
5.1.1 Java EE運用環境のロール
Java EE運用環境では、OSのユーザー権限に基づいたロールによりアクセス制御が行われます。
Java EEの運用操作を行うユーザーは、OSのシステム管理者であるか、Interstage運用グループに属している必要があります。
以下に、ロールの概要を示します。各ロールに与えられる操作権限の詳細は、"権限と認証ユーザー"を参照してください。
Interstage運用グループのユーザー
以下の運用操作、参照、定義変更の権限を包含した操作全般を実行できます。asadminコマンドを使用したすべての操
作を実行する権限を有します。
運用操作権限
IJServerクラスタの作成、起動・停止ができます。また、Java DBなどのユーザアプリケーションが利用するサービスの
運用操作も実行できます。
参照権限
アプリケーション、システムの構成と現在の状態を参照できます。また、各種ログ情報も参照できます。
定義変更権限
アプリケーションの新規作成/構成変更/配備などができます。また、アプリケーションが作成するリソースの新規作成/
構成変更ができます。
OSのシステム管理者
OSのシステム管理者は、Interstage運用グループのユーザーが実行可能なすべての操作に加え、以下に示すようなサー
ビスの起動・停止操作、Java EE環境の初期化操作、Java EE環境固有の特殊なユーザーの指定操作を実行することが
できます。
・ Interstage Java EE DAS/Interstage Java EE Node Agentサービスの起動・停止・起動状態参照操作
・ Java EE環境の初期化
・ サービス運用ユーザーの指定
OSのユーザーとロール
OSのユーザーとロールの関係は、以下のようになります。
実行権限
OSのユーザー
Interstage運用グループのユーザー
すべての一般ユーザー
強化セキュリティモードで指定したグループをプライ
マリグループとするユーザー
OSのシステム管理者
Administratorsグループ所属のユーザー
root
- 390 -
Interstage運用グループについての詳細は、「Interstage Application Serverインストールガイド」を参照してください。
5.1.2 IJServerクラスタのプロセスの実効権限
IJServerクラスタ配下のサーバーインスタンスの実効権限を、カスタマイズできます。
初期設定では、サーバーインスタンスはOSのシステム管理者の実効権限で動作しますが、実効権限をシステム管理者
以外の任意のユーザーに変更することで、IJServerクラスタで動作するアプリケーションで実効可能な操作を制限するこ
とができます。
このサーバーインスタンスの実効ユーザーを、サービス運用ユーザーと呼びます。
サーバーインスタンスのプロセスの実効権限を管理することで、意図せずにシステム資源を破壊してしまうような不正なア
プリケーションの運用によるセキュリティリスクを低減させることができます。なお、サービス運用ユーザーを変更した場合、
Interstage Java EE DAS/Interstage Java EE Node Agentサービスのプロセスも、指定されたサービス運用ユーザーの実効
権限で動作します。
実効権限
OSのユーザー
サービス運用ユーザー
指定できません。
Interstage運用グループをプライマリグループとするJava EE環
境固有のユーザー。
ijsetoperatoridコマンドで設定します。
注意
・ Windows環境では、IJServerクラスタのプロセスの実効権限を指定することができません。
このため、インストール時または初期化コマンドの実行時に、サービス運用ユーザーを指定することはできません。ま
た、ijsetoperatoridコマンドもありません。
・ サービス運用ユーザーを指定する場合、Interstage Java EE DAS/Interstage Java EE Node Agentサービスを含む運
用中のすべてのサービスを、事前に停止してください。
・ issetsecuritymodeコマンドまたはijinitコマンド(-existingオプション指定時を除く)を実行した場合、サービス運用ユー
ザーはrootで初期化されます。必要に応じて、ijsetoperatoridコマンドを実行してください。
5.1.3 ログイン認証
・ Java EE運用環境で運用操作を行う際は、運用操作のためのレルムを使用してログイン認証が行われます。
初期設定のOSレルムでは、ログイン時にOSのユーザー、パスワードを利用しますが、fileレルムやldapレルムを選択
した場合は、管理ユーザーIDと管理者パスワードを指定します。
ログイン用ユーザーの作成方法や認証時に使用するユーザー、パスワードの指定方法は、「5.1.5 管理ユーザーの
登録」を参照してください。
指定可能なレルム種別については、「5.2.5 レルム」を参照してください。
5.1.4 権限と認証ユーザー
Java EE環境で提供するすべての操作の実行権限、生成されるサーバープロセスの実効権限、認証ユーザーの詳細を
以下に示します。
なお、表中では以下のように略しています。
・ DAS
Interstage Java EE DASサービスのことです。
- 391 -
・ NA
Interstage Java EE Node Agentサービスのことです。
操作
Java EE環境の初期化
OSのユーザーの権限 ログイン認証
のユーザー
コマンドの実行権限(注1) サーバープロセスの実
効権限
OSのユーザーの権限
OSのシステム管理者
-
認証なし
・ ijinit
DAS/NAサービスの起動
OSのシステム管理者
・ ijdasstart
サービス運用ユー
ザー
OSレルム
選択時:
認証なし
・ ijnastart
file/ldapレ
ルム選択
時:
・ isstart
サービス運
用ユー
ザー
DAS/NAサービスの自動起動
-
サービス運用ユー
ザー
OSレルム
選択時:
認証なし
file/ldapレ
ルム選択
時:
サービス管
理ユー
ザー
DAS/NAサービスの停止
OSのシステム管理者
-
認証なし
OSのシステム管理者
-
認証なし
OSのシステム管理者
-
認証なし
OSのシステム管理者
-
認証なし
OSのシステム管理者
-
認証なし
OSのシステム管理者
-
認証なし
・ ijdasstop
・ ijnastop
・ isstop
DAS/NAサービスの起動状態の表示
・ ijdasstat
・ ijnastat
・ isstat
Interstage運用グループの指定
・ issetsecuritymode
サービス運用ユーザーの指定
・ ijsetoperatorid
Java EE環境の資源のバックアップ・移出
・ ijbackup
Java EE環境の資源のリストア・移入
- 392 -
操作
OSのユーザーの権限 ログイン認証
のユーザー
コマンドの実行権限(注1) サーバープロセスの実
効権限
OSのユーザーの権限
・ ijrestore
asadmi
nコマン
ド
IJServerクラスタ、サーバーイン
スタンスの起動
一般ユーザー
サービス運用ユー
ザー
・ start-cluster
コマンド実
行時に指
定したユー
ザー(注2)
・ start-instance
Interstage 運 用 グ
ループのユーザー
サービス管理ユーザー/パス
ワードの指定
-
コマンド実
行時に指
定したユー
ザー(注2)
-
コマンド実
行時に指
定したユー
ザー(注2)
-
コマンド実
行時に指
定したユー
ザー(注2)
-
コマンド実
行時に指
定したユー
ザー(注2)
コマンドの実行権限と
同じ
コマンド実
行時に指
定したユー
ザー(注2)
-
コマンド実
行時に指
一般ユーザー
・ change-service-adminuser
Interstage 運 用 グ
ループのユーザー
サービス管理ユーザーIDの表
示
一般ユーザー
・ show-service-adminuser
Interstage 運 用 グ
ループのユーザー
管理ユーザーのパスワード変更
・ change-admin-password
一般ユーザー
Interstage 運 用 グ
ループのユーザー
ログインファイル(.asadminpass)
の作成
一般ユーザー
・ login
Interstage 運 用 グ
ループのユーザー
Java DB(クライアント/サーバ環
境)の起動
一般ユーザー
・ start-database
Interstage 運 用 グ
ループのユーザー
その他
一般ユーザー
- 393 -
操作
OSのユーザーの権限 ログイン認証
のユーザー
コマンドの実行権限(注1) サーバープロセスの実
効権限
OSのユーザーの権限
定したユー
ザー(注2)
Interstage 運 用 グ
ループのユーザー
アプリケーションクライアントコンテナの起
動
一般ユーザー
-
認証なし
一般ユーザー
-
認証なし
OSのシステム管理者
コマンドの実行権限と
同じ
認証なし
OSのシステム管理者
-
認証なし
OSのシステム管理者
-
認証なし
OSのシステム管理者
-
認証なし
一般ユーザー
-
認証なし
・ appclient
データベースのスキーマ情報の取り込み
・ capture-schema
メッセージブローカの起動
・ imqbrokered
メッセージブローカの管理
・ imqcmd
メッセージブローカの管理/削除
・
imqsvcadmin
メッセージプロバイダに接続可能なユーザ
情報の管理
・ imqusermgr
WSDLファイルからJAX-WSサービスに必
要な資材の生成
・ ijwsimport
Java EE管理コンソールの操作
-
サービス運用ユー
ザー
ログイン画
面で指定し
たユーザー
注1)Interstage運用グループのユーザー、一般ユーザーと記載のある操作は、OSのシステム管理者でも実行可能です。
注2)asadminコマンド実行時の認証ユーザーを指定してください。なお、初期設定のOSレルムでは、同一マシン内のDAS
に対するコマンド実行時はログイン認証を省略できます。詳細については、「5.1.6.2 asadminコマンドのログイン認証」を
参照してください。
5.1.5 管理ユーザーの登録
ここでは、ログイン認証で使用する管理ユーザーの登録手順を説明します。
管理ユーザーの登録情報を更新した場合、asadminコマンド/Interstage Java EE管理コンソールの認証時や、Interstage
Java EE DAS/Interstage Java EE Node Agentサービスの起動時に指定する管理ユーザーも更新する必要があります。指
定方法の詳細は、「5.1.6 管理ユーザーの指定」を参照してください。
5.1.5.1 ログイン認証のためのレルム
本製品には、システム組み込みのレルムとしてadmin-realmが登録されています。
admin-realmは、asadminコマンド/Interstage Java EE管理コンソールのログイン認証時に使用するための専用のレルムで
す。
- 394 -
admin-realmには以下の三つが選択できます。
・ OSレルム
・ fileレルム
・ ldapレルム
インストール時、または初期化コマンド(ijinitコマンド)実行時のadmin-realmのデフォルトの設定は、以下です。また、adminrealmは削除することができません。
レルムの種類
ユーザ名
OSレルム
なし(注1)
パスワード
なし(注1)
グループ名
asadmin
注1)OSに登録されたユーザーとパスワードが利用されるため、デフォルト値はありません。
注意
asadminグループについて
ユーザーがasadminグループに所属していない場合、ログイン認証に失敗します。このため、ログインユーザーのグルー
プには、asadminグループを必ず含めてください。
5.1.5.2 レルムの種類の変更方法
admin-realmのレルムの種類を変更するには、以下のいずれかの方法を選択できます。
詳細は、Interstage Java EE管理コンソールのヘルプ、またはコマンドの説明、または[5.1.5.3 OSレルムの設定]、[5.1.5.4
fileレルムの設定]、[5.1.5.5 ldapレルムの設定]を参照してください。
・ Interstage Java EE管理コンソール
・ setサブコマンド
注意
・ レルムの種類を変更する際は、以下のすべての設定を同一内容で更新してください。各サービス、IJServerクラスタ
の設定内容が同一でない場合、その後の運用操作に失敗する場合があります。
- Interstage Java EE DASサービス
- Interstage Java EE Node Agentサービス
- すべての作成済みIJServerクラスタ
- IJServerのデフォルト設定
・ レルムの種類を変更する際は、asadminenv.confファイルを修正し、asadminコマンドが利用するレルム種別を変更し
てください。詳細は、「リファレンスマニュアル(コマンド編)」の「asadmin」の「asadminenv.confファイル」を参照してくだ
さい。
・ OSレルムから、fileレルムまたはldapレルムに変更した場合、設定変更後に以下を実施してください。
1. Interstage Java EE DASサービスを停止します。
2. asadminenv.confファイルを修正し、asadminコマンドが利用するレルム種別を変更してください。詳細は、「リファ
レンスマニュアル(コマンド編)」の「asadmin」の「asadminenv.confファイル」を参照してください。
3. asadmin change-service-adminuserコマンドを実行し、サービス管理ユーザーとパスワードを設定してください。
詳細は、「リファレンスマニュアル(コマンド編)」の「change-service-adminuserサブコマンド」を参照してください。
4. Interstage Java EE DASサービスを起動します。
- 395 -
5.1.5.3 OSレルムの設定
以下の手順により、管理ユーザーを編集することができます。
Interstage Java EE管理コンソールを使用する場合
1. Interstage Java EE管理コンソールへログイン後、[設定]>[server-config]>[セキュリティ]>[レルム]>[admin-realm]
を選択し、設定を行います。
注意
レルムの種別、設定はJava EEの全サービス、IJServerクラスタで同一とする必要があります。
各サービス、IJServerクラスタの設定内容が同一でない場合、その後の運用操作に失敗する場合があります。
設定後、必ず以下画面でも同一内容を反映してください。
- [設定]>[default-config]>[セキュリティ]>[レルム]>[admin-realm]
- [設定]>[${IJServerクラスタの設定名}]>[セキュリティ]>[レルム]>[admin-realm]
- [ノードエージェント]>[ijna]>[承認レルム]
注意
「クラス名」「JAASコンテキスト」「グループの割り当て」は以下の値以外に変更しないでください。
設定名
指定値
クラス名
com.fujitsu.interstage.javaee.security.auth.realm.os.OSRealm
JAASコンテキスト
osRealm
グループの割り当
て
asadmin
2. Java EE管理コンソールからログアウト後の次回ログイン時から設定が反映されます。
setサブコマンドを使用する場合
1. 以下のファイルを作成します。
【設定ファイル例】
server-config.security-service.auth-realm.adminrealm.classname=com.fujitsu.interstage.javaee.security.auth.realm.os.OSRealm
server-config.security-service.auth-realm.admin-realm.property.jaas-context=osRealm
server-config.security-service.auth-realm.admin-realm.property.assign-groups=asadmin
default-config.security-service.auth-realm.adminrealm.classname=com.fujitsu.interstage.javaee.security.auth.realm.os.OSRealm
default-config.security-service.auth-realm.admin-realm.property.jaas-context=osRealm
default-config.security-service.auth-realm.admin-realm.property.assign-groups=asadmin
testcluster-config.security-service.auth-realm.adminrealm.classname=com.fujitsu.interstage.javaee.security.auth.realm.os.OSRealm
testcluster-config.security-service.auth-realm.admin-realm.property.jaas-context=osRealm
testcluster-config.security-service.auth-realm.admin-realm.property.assign-groups=asadmin
- 396 -
node-agent.ijna.auth-realm.classname=com.fujitsu.interstage.javaee.security.auth.realm.os.OSRealm
node-agent.ijna.auth-realm.property.jaas-context=osRealm
node-agent.ijna.auth-realm.property.assign-groups=asadmin
※「testcluster」は作成したIJServerクラスタ名
2. 1.で作成したファイルを--fileオプションに指定し、setサブコマンドを実行します。
setサブコマンドの詳細については、「リファレンスマニュアル(コマンド編)」-「setサブコマンド」を参照してください。
注意
setサブコマンドを使用する場合は、一回のsetサブコマンドの実行でまとめて設定を変更する必要が
あります。
5.1.5.4 fileレルムの設定
以下の手順により、管理ユーザーを編集することができます。fileレルムの詳細は、「5.3.6 fileレルムの設定」を参照して
ください。
Interstage Java EE管理コンソールを使用する場合
1. Interstage Java EE管理コンソールへログイン後、[設定]>[server-config]>[セキュリティ]>[レルム]>[admin-realm]
を選択し、設定を行います。
注意
レルムの種別、設定はJava EEの全サービス、IJServerクラスタで同一とする必要があります。
各サービス、IJServerクラスタの設定内容が同一でない場合、その後の運用操作に失敗する場合があります。
設定後、必ず以下画面でも同一内容を反映してください。
- [設定]>[default-config]>[セキュリティ]>[レルム]>[admin-realm]
- [設定]>[クラスタ名-config]>[セキュリティ]>[レルム]>[admin-realm]
- [ノードエージェント]>[ijna]>[承認レルム]
注意
「クラス名」「JAASコンテキスト」「キーファイル」は以下の値以外に変更しないでください。
設定名
指定値
クラス名
com.sun.enterprise.security.auth.realm.file.FileRealm
JAASコンテキスト
fileRealm
キーファイル
${com.sun.aas.instanceRoot}/config/admin-keyfile
- 397 -
2. [ユーザーを管理]ボタンを選択し、ユーザー/グループの追加・更新・削除を行います。
注意
操作は、[設定]>[server-config]>[セキュリティ]>[レルム]>[admin-realm]で表示される画面から行ってください。
3. Interstage Java EE管理コンソールからログアウト後の次回ログイン時から設定が反映されます。
setサブコマンドを使用する場合
1. 以下のファイルを作成します。
【設定ファイル例】
server-config.security-service.auth-realm.adminrealm.classname=com.sun.enterprise.security.auth.realm.file.FileRealm
server-config.security-service.auth-realm.admin-realm.property.jaas-context=fileRealm
server-config.security-service.auth-realm.admin-realm.property.file=${com.sun.aas.instanceRoot}/config/adminkeyfile
default-config.security-service.auth-realm.adminrealm.classname=com.sun.enterprise.security.auth.realm.file.FileRealm
default-config.security-service.auth-realm.admin-realm.property.jaas-context=fileRealm
default-config.security-service.auth-realm.admin-realm.property.file=${com.sun.aas.instanceRoot}/config/adminkeyfile
testcluster-config.security-service.auth-realm.adminrealm.classname=com.sun.enterprise.security.auth.realm.file.FileRealm
testcluster-config.security-service.auth-realm.admin-realm.property.jaas-context=fileRealm
testcluster-config.security-service.auth-realm.admin-realm.property.file=${com.sun.aas.instanceRoot}/config/
admin-keyfile
node-agent.ijna.auth-realm.classname=com.sun.enterprise.security.auth.realm.file.FileRealm
node-agent.ijna.auth-realm.property.jaas-context=fileRealm
node-agent.ijna.auth-realm.property.file=${com.sun.aas.instanceRoot}/config/admin-keyfile
※「testcluster」は作成したIJServerクラスタ名
2. 1.で作成したファイルを--fileオプションに指定し、setサブコマンドを実行します。
setサブコマンドの詳細については、「リファレンスマニュアル(コマンド編)」-「setサブコマンド」を参照してください。
注意
setサブコマンドを使用する場合は、一回のsetサブコマンドの実行でまとめて設定を変更する必要が
あります。
3. fileレルムのユーザの作成/削除/更新/一覧表示、グループの一覧表示に対応する以下のサブコマンドを実行して
ください。
- create-file-user
- delete-file-user
- update-file-user
- 398 -
- list-file-users
- list-file-groups
注意
- 上記のサブコマンドを使用して管理ユーザを管理する場合、--authrealmnameオプションに「admin-realm」を指
定してください。
- 上記のサブコマンドを使用して管理ユーザを管理する場合、ターゲットに「server」を指定してください。
注意
「グループの割り当て」について
「グループの割り当て」にasadminグループを指定した場合、admin-realmのすべてのユーザーに、強制的にasadmin
グループが割り当てられます。admin-realmで管理されるすべてのユーザーにJava EE環境へのログインを許可す
る場合にのみ指定します。
注意
ユーザアカウント作成時の注意事項
- パスワード
8~20文字(推奨値)以内で指定してください。
- ユーザの削除
「グループの割り当て」でasadminグループを指定しているかどうかにかかわらず、admin-realmには、グループ
リストにasadminグループを含むユーザーが最低1名は登録されている必要があります。最後の1名を削除しよ
うとするとエラーとなります。
ログイン後の管理ユーザーのパスワード変更方法
admin-realmにfileレルムを使用している場合、ログイン後の管理ユーザーのパスワードを、asadminコマンドまたはInterstage
Java EE管理コンソールから変更することができます。
asadminコマンド
change-admin-passwordサブコマンド
Interstage Java EE管理コンソール
Interstage Java EE管理コンソールへログイン後、[ドメイン]>[管理者パスワード]を選択して、以下の項目を設定します。
- 新しいパスワード
- 新しいパスワードを確認
5.1.5.5 ldapレルムの設定
以下の手順により、管理ユーザを編集することができます。ldapレルムについての詳細は、「5.3.5 ldapレルムの設定」を
参照してください。
1. Interstageディレクトリサービスに、ユーザ/グループを追加します。
- 399 -
注意
ディレクトリサービスでのグループに基づくログイン制限が必要な場合は、asadminグループを登録し、ユーザーを
所属させる必要があります。
2. admin-realmを設定します。
Interstage Java EE管理コンソールを使用する場合
1. Interstage Java EE管理コンソールへログイン後、[設定]>[server-config]>[セキュリティ]>[レルム]>[adminrealm]を選択し、設定してください。
注意
レルムの種別、設定はJava EEの全サービス、IJServerクラスタで同一とする必要があります。
各サービス、IJServerクラスタの設定内容が同一でない場合、その後の運用操作に失敗する場合があります。
設定後、必ず以下画面でも同一内容を反映してください。
- [設定]>[default-config]>[セキュリティ]>[レルム]>[admin-realm]
- [設定]>[クラスタ名-config]>[セキュリティ]>[レルム]>[admin-realm]
- [ノードエージェント]>[ijna]>[承認レルム]
注意
「クラス名」「JAASコンテキスト」は以下の値以外に変更しないでください。
設定名
指定値
クラス名
com.sun.enterprise.security.auth.realm.ldap.LDAPRealm
JAASコンテキスト
ldapRealm
2. Interstage Java EE管理コンソールからログアウト後の次回ログイン時から設定が反映されます。
setサブコマンドを使用する場合
1. 以下のファイルを作成します。
【設定ファイル例】
server-config.security-service.auth-realm.adminrealm.classname=com.sun.enterprise.security.auth.realm.ldap.LDAPRealm
server-config.security-service.auth-realm.admin-realm.property.jaas-context=ldapRealm
server-config.security-service.auth-realm.admin-realm.property.directory=ldap://localhost:389
server-config.security-service.auth-realm.admin-realm.property.base-dn=ou=interstage,o=fujitsu,dc=com
server-config.security-service.auth-realm.admin-realm.property.search-filter=uid=%s
server-config.security-service.auth-realm.admin-realm.property.group-search-filter=member=%d
server-config.security-service.auth-realm.admin-realm.property.group-basedn=ou=Group,ou=interstage,o=fujitsu,dc=com
server-config.security-service.auth-realm.admin-realm.property.group-target=CN
default-config.security-service.auth-realm.admin-
- 400 -
realm.classname=com.sun.enterprise.security.auth.realm.ldap.LDAPRealm
default-config.security-service.auth-realm.admin-realm.property.jaas-context=ldapRealm
default-config.security-service.auth-realm.admin-realm.property.directory=ldap://localhost:389
default-config.security-service.auth-realm.admin-realm.property.base-dn=ou=interstage,o=fujitsu,dc=com
default-config.security-service.auth-realm.admin-realm.property.search-filter=uid=%s
default-config.security-service.auth-realm.admin-realm.property.group-search-filter=member=%d
default-config.security-service.auth-realm.admin-realm.property.group-basedn=ou=Group,ou=interstage,o=fujitsu,dc=com
default-config.security-service.auth-realm.admin-realm.property.group-target=CN
testcluster-config.security-service.auth-realm.adminrealm.classname=com.sun.enterprise.security.auth.realm.ldap.LDAPRealm
testcluster-config.security-service.auth-realm.admin-realm.property.jaas-context=ldapRealm
testcluster-config.security-service.auth-realm.admin-realm.property.directory=ldap://localhost:389
testcluster-config.security-service.auth-realm.admin-realm.property.basedn=ou=interstage,o=fujitsu,dc=com
testcluster-config.security-service.auth-realm.admin-realm.property.search-filter=uid=%s
testcluster-config.security-service.auth-realm.admin-realm.property.group-search-filter=member=%d
testcluster-config.security-service.auth-realm.admin-realm.property.group-basedn=ou=Group,ou=interstage,o=fujitsu,dc=com
testcluster-config.security-service.auth-realm.admin-realm.property.group-target=CN
node-agent.ijna.auth-realm.classname=com.sun.enterprise.security.auth.realm.ldap.LDAPRealm
node-agent.ijna.auth-realm.property.jaas-context=ldapRealm
node-agent.ijna.auth-realm.property.directory=ldap://localhost:389
node-agent.ijna.auth-realm.property.base-dn=ou=interstage,o=fujitsu,dc=com
node-agent.ijna.auth-realm.property.search-filter=uid=%s
node-agent.ijna.auth-realm.property.group-search-filter=member=%d
node-agent.ijna.auth-realm.property.group-base-dn=ou=Group,ou=interstage,o=fujitsu,dc=com
node-agent.ijna.auth-realm.property.group-target=CN
※「testcluster」は作成したIJServerクラスタ名
2. 1.で作成したファイルを—fileオプションに指定し、setサブコマンドを実行します。setサブコマンドの詳細につ
いては、「リファレンスマニュアル(コマンド編)」-「setサブコマンド」を参照してください。
注意
setサブコマンドを使用する場合は、一回のsetサブコマンドの実行でまとめて設定を変更する必要が
あります。
注意
「グループの割り当て」について
「グループの割り当て」にasadminグループを指定した場合、Interstageディレクトリサービスへの問い合わせ結果でヒットし
た全ユーザに、強制的にasadminグループが割り当てられます。
ディレクトリサービスでのグループに基づくログイン制限が不要な場合にのみ指定することを推奨します。
注意
サービスの自動起動について
admin-realmにldapレルムを使用している場合、Interstage Java EE DASサービス、および、Interstage Java EE Node Agent
サービスの起動時にInterstageディレクトリサービスを利用した認証が行われます。
システム起動時にInterstageディレクトリサービスよりも先にJava EEのサービスが起動した場合は、サービス起動に失敗す
- 401 -
るため、システム起動時にInterstage Java EE DASサービス、および、Interstage Java EE Node Agentサービスを自動起動
せず、Interstageディレクトリサービスの起動完了後に手動で起動操作を行う必要があります。
サービスの自動起動設定については、「4.2 コマンドを利用した運用」を参照してください。
5.1.5.6 admin-realmおよび管理ユーザーの情報更新時の注意
Interstage Java EE DAS サービスおよびInterstage Java EE Node Agentサービスの再起動
admin-realmの設定を変更した場合は、Interstage Java EE DAS サービスおよびInterstage Java EE Node Agentサービス
の再起動を行ってください。
loginサブコマンドおよびchange-service-adminuserサブコマンドの再実施
以下に該当する操作により管理ユーザーの情報が変更されても、loginサブコマンドで生成/更新される「.asadminpass」
ファイル、および、設定されているサービス管理ユーザーの情報には反映されません。
・ admin-realmとして使用するレルムの種類を切り替えたことにより、管理ユーザーの増減やパスワードの変更が発生
した。
・ 管理ユーザーの削除、所属するグループの変更、またはパスワードの更新を行った。
必要に応じて再度loginサブコマンドを実行してください。
また以下に該当する場合は、asadmin change-service-adminuserサブコマンドにより、サービス管理ユーザーの情報を再
設定の上、Interstage Java EE DAS サービスおよびInterstage Java EE Node Agentサービスを再起動してください。
・ サービス管理ユーザーとして設定しているユーザーが削除された。
・ サービス管理ユーザーとして設定しているユーザーがasadminグループに属さなくなった。
・ サービス管理ユーザーのパスワードが変更された。
・ admin-realmの設定を変更した。
再設定および再起動を行わない場合、Interstage Java EE DAS/Interstage Java EE Node Agentサービスの起動操作が行
えなくなります。
長いパスワード
推奨値(8~20文字)を超えるパスワードを使用する場合、以下となることがあります。
・
asadminコマンド実行時のパスワード入力で、入力が途中で打ち切られる。
この場合は、推奨値以内のパスワードを使用してください。
パスワードの設定方法によっては、長いパスワードが設定できるにもかかわらず、コマンドラインからの入力が行えず、
ログインできないことがあります。
admin-realmとしてfileレルム使用時には、Java EE管理コンソールよりログインし、以下によりパスワードを推奨値以内
に変更してください。
- 「ドメイン」>「管理者パスワード」
ldapレルムを使用している場合は、Interstageディレクトリサービスのエントリ管理ツール等を使用してパスワードを推
奨値以内としてください。
OSレルムを使用している場合は、OSのユーザ管理ツール等を使用してパスワードを推奨値以内としてください。
管理ユーザーIDが「-」で始まる場合
asadminコマンド実行時のオプションで管理ユーザーIDを指定する場合、オプション値として「-」で始まるユーザー名を指
定すると、オプションの値が指定されていない、またはオプションが不正である旨のメッセージが出力され、コマンド実行
に失敗する場合があります。
例
asadmin change-admin-password --user -a
- 402 -
⇒ISJEE_CLI011メッセージ出力
その場合は、オプションに対する値を「=」により指定してください。
例
asadmin change-admin-password --user=-a
管理ユーザーID、管理者パスワードに使用可能な文字
管理ユーザーIDは1文字以上、255文字以内とし以下の文字で構成してください。
・ 英数字
・ アンダースコア「_」
・ ダッシュ「-」
・ ドット文字「.」
また、管理者パスワードには、マルチバイト文字および、空白や制御コードは使用できません。
パスワードの推奨値については、「使用上の注意」-「Java EEで使用するパスワードに関する注意事項」を参照してくだ
さい。
上記以外の文字を使用した場合、認証処理や運用操作に失敗する場合があります。
ldapレルム、OSレルムを使用している場合は、必要に応じてInterstageディレクトリサービス、OSの仕様も確認してください。
5.1.6 管理ユーザーの指定
ここでは、ログイン認証で利用される管理ユーザーの指定方法について説明します。
管理ユーザーには、以下の種類があります。
種類
説明
管理ユーザー
asadminコマンド/Interstage Java EE管理コンソールのログイン認証時に
指定するユーザー。
サービス管理ユーザー
Interstage Java EE DAS / Interstage Java EE Node Agentサービスの起
動時に自動的に認証に使用される管理ユーザー。
5.1.6.1 Interstage Java EE DAS / Interstage Java EE Node Agentサービス起動
時のログイン認証
fileレルム、もしくは、ldapレルムを利用している場合、Interstage Java EE DAS / Interstage Java EE Noge Agentサービス
の起動時には、設定されたサービス管理ユーザーIDとサービス管理者パスワードが自動的に認証に使用されます。
サービス管理ユーザーIDとパスワードは、以下の操作で変更/表示することができます。
変更/更新
・ サービス管理ユーザーの更新コマンド(change-service-adminuserサブコマンド)の実行
表示
・ サービス管理ユーザーIDの表示コマンド(show-service-adminuserサブコマンド)の実行
注意
サービス管理ユーザーの管理について
- 403 -
ldapレルムを使用する場合、Interstage Java EE DAS / Interstage Java EE Node Agentサービスの起動前にInterstageディ
レクトリサービスを起動してください。Interstageディレクトリサービスへの接続やログイン認証に失敗した場合、Interstage
Java EE DAS / Interstage Java EE Node Agentサービスの起動に失敗します。
5.1.6.2 asadminコマンドのログイン認証
asadminコマンドの実行時にオプションを指定する方法、コマンドプロンプトから入力する方法、あらかじめloginコマンドを
実行しておきファイルに登録済みの管理ユーザーID、パスワードを使用する方法から選択できます。
以下の優先順位で認証に使用する管理ユーザーID/パスワードが選ばれます。
OSレルムの場合
管理ユーザーID
1. asadminコマンドのuserオプションで指定したユーザー名
2. asadminコマンドのloginサブコマンド実行時に指定したユーザー名
(.asadminpassファイルに記載されたユーザー名)
3. コマンドプロンプトで入力を受けつけたユーザー名
管理者パスワード
1. asadminコマンドのpasswordfileオプションで指定したパスワードファイルに記載されているAS_ADMIN_PASSWORD
のパスワード
2. asadminコマンドのloginサブコマンド実行時に指定したパスワード
(.asadminpassファイルに記載されたパスワード)
3. コマンドプロンプトで入力を受け付けたパスワード(注1)
注1)ローカルマシン内のDASへの接続、かつ、1、2が指定されない場合、パスワードの入力は省略できます。
fileレルム/ldapレルムの場合
管理ユーザーID
1. asadminコマンドのuserオプションで指定したユーザー名
2. asadminコマンドのloginサブコマンド実行時に指定したユーザー名
(.asadminpassファイルに記載されたユーザー名)
3. コマンドプロンプトで入力を受けつけたユーザー名
管理者パスワード
1. asadminコマンドのpasswordfileオプションで指定したパスワードファイルに記載されているAS_ADMIN_PASSWORD
のパスワード
2. asadminコマンドのloginサブコマンド実行時に指定したパスワード
(.asadminpassファイルに記載されたパスワード)
3. コマンドプロンプトで入力を受け付けたパスワード
注意
.asadminpassファイル使用時の注意事項
.asadminpassファイルはasadminコマンドのloginサブコマンドの実行時に、ユーザのホームディレクトリへ作成されます。運
用操作時の認証で使用する管理ユーザーID/パスワードの指定を省略したい場合、.asadminpassファイルを用意すること
でファイルに記載された管理ユーザーID/パスワードをデフォルト値として使用することができます。
しかし、一度作成した.asadminpassファイルを使いまわすことで認証を無効化できることからセキュリティを低下させる原因
になります。このため、セキュリティレベルを強化させたい場合には、.asadminpassファイルを使用しない運用を推奨します。
fileレルムで管理ユーザーのアカウントを管理する場合、change-admin-passwordサブコマンドを実行してパスワードを変
更すると、実行したユーザのホームディレクトリの.asadminpassファイルも同時に更新されます。
- 404 -
5.2 Java EEアプリケーションのセキュリティ機能
Java EEアプリケーションの資源に対する不正なアクセスを防止するための機能について説明します。
5.2.1 認証
認証は、ユーザIDとパスワードによって、正当なユーザであるかをチェックする機能です。これにより、不当なユーザから
のアクセスを防止できます。
認証方法は以下が用意されています。
・ Servletによる認証
・ Java EEアプリケーションクライアントによる認証
Servletによる認証
Servletでは以下の認証方法を使用してWebコンテナへ接続するクライアントの認証を行うことができます。
・ BASIC認証
・ FORM認証
設定方法の詳細は、「3.2.2.2 Web application deployment descriptor (web.xml)」を参照してください。
認証に失敗した場合
BASIC認証/FORM認証に失敗した場合はサーバーログに以下のメッセージが出力され、ステータスコード:401が返され
ます。
・ SEC5046
・ WEBSEC00001
Java EEアプリケーションクライアントによる認証
Java EEアプリケーションクライアントからEJBにはIIOP通信されるため、接続するサーバのORB設定で「IIOPクライアント
認証」の設定を有効とした場合にはクライアントで認証情報を指定する必要があります。また、呼び出すWebサービスに
HTTP Basic認証が設定されている場合、WebサービスクライアントからのリクエストにHTTP Basic認証情報を設定する必
要があります。
接続するサーバで認証が必要と判断された場合、セキュリティコールバックハンドラが実行されます。deployment descriptor
ファイル (application-client.xml)に任意のセキュリティコールバックハンドラを指定できます。セキュリティコールバックハン
ドラを指定しなかった場合にはデフォルトのセキュリティコールバックハンドラが実行されます。以下にデフォルトのセキュ
リティコールバックハンドラの動作と、セキュリティコールバックハンドラを実装する場合について説明します。
なお、IJServerクラスタの設定でHeartbeatが有効となっているとセキュリティコールバックハンドラが実行されません。その
ため、IIOPの認証を使用する場合は、Heartbeatを無効にしてください。
デフォルトのセキュリティコールバックハンドラ
デフォルトのセキュリティコールバックハンドラは以下のように動作します。
1. appclientコマンドの-userオプションと-passwordオプションを指定した場合、各オプションで指定したユーザ名とパ
スワードで認証を行います。
2. appclientコマンドの-textauthオプションを指定した場合、コンソールにユーザ名とパスワードの入力を促すメッセー
ジを出力して、入力された情報で認証を行います。
3. 1.または2.においてオプションを指定していなかった場合、ダイアログボックスが表示され、ユーザ名とパスワードを
要求します。
セキュリティコールバックハンドラの実装
Java EEアプリケーションクライアントでJAASコールバックハンドラを実装すると、必要な資格証明を取得するためにログ
イン画面を表示するなどのカスタム機能を提供できます。そのような場合、コンテナにより起動時にコールバックハンドラ
- 405 -
がインスタンス化され、デフォルトのセキュリティコールバックハンドラは無視されます。
カスタムセキュリティコールバックハンドラを実装するには、次のように行います。
1. javax.security.auth.callback.CallbackHandlerインタフェースを実装し、引数を持たないコンストラクタを持つクラス(ま
たはコンストラクタを定義しないクラス)を作成します。
2. アプリケーションクライアントJARファイルにコールバックハンドラのクラスを追加する、または環境変数APPCPATH
にコールバックハンドラのクラスを設定します。
3. ハンドラ・クラスへの参照をapplication-client.xmlファイルに追加します。
例
<application-client>
<callback-handler>
com.cart.MyCallbackHandler
</callback-handler>
</application-client>
注意
指定したクラスがロードできない場合や、カスタムセキュリティコールバックハンドラのクラスに異常がある場合(引数を持
つコンストラクタを定義しているなど)には、デフォルトのセキュリティコールバックハンドラが実行されます。
5.2.2 認可
認証済みのユーザが可能な操作を認可のレベルによって制限できます。認可のレベルはユーザのロールに基づいてい
ます。例えば、会員管理アプリケーションでは、管理者にはすべての会員の個人情報を見ることを認可し、会員には自
身の個人情報だけを見ることを認可します。
認可を行う方法にはプログラムによる制御とdeployment descriptorによる制御の2つの方法があります。
プログラムによる制御
Servlet/EJBのAPIを使用して認証済みのユーザやロールによる認可を行うコードをアプリケーション内に記述できます。
アプリケーションの開発後に変更することができないため、動作環境によってはアプリケーションの変更が必要となる
ことがあります。
Servlet/EJBのAPIについてはServlet 2.5/EJB 3.0の仕様を参照してください。
deployment descriptorによる制御
deployment descriptorに記述した内容にしたがって、コンテナが認可を行います。
アプリケーションの開発後に動作環境に合わせてdeployment descriptorを変更することができるため、通常はアプリ
ケーションを変更する必要はありません。
deployment descriptorによる制限対象は以下の2つです。
- Webアプリケーションのリソース
- EJBアプリケーションのメソッド
定義の詳細についてはJava EE 5/Servlet 2.5/EJB 3.0の仕様を参照してください。
認可に失敗した場合
Webアプリケーションのリソースに対する認可に失敗した場合
認可に失敗した場合はステータスコード:403が返されます。
EJBアプリケーションのメソッドの認可に失敗した場合
認可に失敗した場合はアクセスしたインタフェースの種類によって、クライアントに以下の例外が通知されます。
- 406 -
経由するインタフェース
通知される例外
Businessインタフェース
javax.ejb.EJBException
java.rmi.Remoteを継承するRemote Businessインタフェース
java.rmi.AccessException
Local Businessインタフェース
javax.ejb.AccessLocalException
Remoteインタフェース(EJB2.1クライアントビュー)
java.rmi.AccessException
Localインタフェース(EJB2.1クライアントビュー)
javax.ejb.AccessLocalException
5.2.3 SSL
5.2.3.1 SSLを使用できる通信
本製品では以下の通信をSSLで行うことができます。
・ WebブラウザとWebサーバ間の通信
・ WebブラウザとInterstage Java EE管理コンソールとの通信
・ WebサーバコネクタとWebコンテナ間の通信
・ WebアプリケーションがSSLクライアントとなっての通信
・ WebアプリケーションがSSLサーバとなっての通信
・ WebサービスクライアントとWebサービス間の通信
WebブラウザとWebサーバ間の通信
設定方法については、「Interstage HTTP Server運用ガイド」を参照してください。
WebブラウザとInterstage Java EE管理コンソールとの通信
インスト-ル時に、Interstage Java EE管理コンソールのSSL暗号化通信で利用する証明書を自己発行します。(ニック
ネーム s1as)
自己発行する証明書は以下の内容となっています。
発行者名・所有者名
有効期限の終了
CN = ホスト名
インストール日から30年後
セキュリティを強化したい場合は、認証局から取得した証明書を利用する運用に切り替えてください。
・ 認証局から取得した証明書を使用する場合のキーストアの設定
「5.2.3.2 キーストアの設定」を参照してください。
・ Interstage Java EE管理コンソールのSSL定義の変更
server-configの、HTTPリスナー「admin-listener」の「SSL」タブで、「証明書のニックネーム」に証明書に対応するニッ
クネームを設定します。
WebサーバコネクタとWebコンテナ間の通信
WebサーバをDMZ(DeMilitarized Zone:非武装地帯)のマシンで運用して、IJServerクラスタはファイアウォールを越えた
イントラネット上のマシンで運用する場合にWebサーバコネクタとWebコンテナ間をSSLで通信することで盗聴/改ざん/な
りすましなどの危険を回避し、情報のプライバシーを守ることができます。
WebサーバコネクタとWebコンテナ間のSSL通信は以下の場合に使用します。
・ WebブラウザとWebサーバ間がSSL通信である
・ Webサーバとワークユニットを同一のマシンで運用しない
- 407 -
WebサーバコネクタとWebコンテナ間の通信をSSLで行うには以下の設定が必要です。
キーストアの設定
キーストアの設定については、「5.2.3.2 キーストアの設定」を参照してください。
Webサーバコネクタ
以下の手順で設定してください。
1. Interstage証明書環境でテスト用サイト証明書を生成してください。
2. Interstage管理コンソールまたはisj2eeadminコマンドを使用して、テスト用サイト証明書をもとに、SSL定義を生
成してください。
3. Interstage管理コンソールまたはisj2eeadminコマンドを使用して、IJServerクラスタと通信するWebサーバコネク
タを生成し、「コネクタとWebコンテナ間のSSLの使用」を設定してください。
4. 「キーストアの設定」で使用した認証局証明書、必要であれば中間認証局証明書、および認証局から取得した
サーバ証明書を、Interstage証明書環境に登録してください。
IJServerクラスタ
Interstage Java EE管理コンソールまたはasadminコマンドのsetサブコマンドを使用してHTTPリスナーのセキュリティ機
能を有効にします。
設定方法の詳細は、Interstage Java EE管理コンソールのヘルプおよび「リファレンスマニュアル(コマンド編)」-「Java
EE運用コマンド - asadmin - 定義項目参照/更新」と「configs.config.http-serviceの定義項目」のsecurity-enabled(セキュ
リティ)を参照してください。
Interstage Java EE管理コンソールまたはasadminコマンドのcreate-sslサブコマンドを使用してコネクタとWebコンテナ
間のSSLの使用を設定してください。
設定方法の詳細は、Interstage Java EE管理コンソールのヘルプを参照してください。
注意
WebサーバコネクタとWebコンテナ間の通信における注意事項
IJServerクラスタでサポートしているプロトコルバージョンおよび暗号化方式は以下のとおりです。
・ プロトコルバージョン
- SSL 3.0
- TLS 1.0
・ 暗号化方式
- TLS_RSA_WITH_AES_128_CBC_SHA
- SSL_RSA_WITH_3DES_EDE_CBC_SHA
- SSL_RSA_WITH_RC4_128_SHA
- SSL_RSA_WITH_RC4_128_MD5
- SSL_RSA_WITH_DES_CBC_SHA
- SSL_RSA_EXPORT_WITH_RC4_40_MD5
- SSL_RSA_WITH_NULL_SHA
- SSL_RSA_WITH_NULL_MD5
WebアプリケーションがSSLクライアントとなっての通信
サーバとの通信に使用する証明書を、IJServerクラスタが使用するキーストア/トラストストアに登録してください。
- 408 -
1. クライアント証明書を使用しない場合
サーバとの通信に使用する証明書(認証局証明書、必要であれば中間認証局証明書)を、IJServerクラスタが使用
するトラストストアに、任意の別名で登録してください。
2. クライアント証明書を使用する場合
1.に加えて、クライアントの証明に使用する証明書(認証局証明書、必要であれば中間認証局証明書、サーバ証
明書)を、IJServerクラスタが使用するキーストアに、任意の別名で登録してください。詳細は、「5.2.3.2 キーストア
の設定」を参照してください。
「別名」(=「エイリアス名」)とは、キーストア内で、エントリ (鍵および信頼できる証明書)を識別するための名前です。
トラストストアに証明書を設定する手順は以下のとおりです。コマンド例はJDK6の場合です。JDK5についてはJDKの情
報を参照してください。
・ トラストストアに証明書を登録します。
(別名root_ca、トラストストアファイル名cacerts.jks、認証局証明書ファイル名root_ca.cerの場合)
keytool -import -alias root_ca -keystore cacerts.jks -file root_ca.cer
・ Interstage Java EE管理コンソールまたはasadminコマンドを使用してJVMオプションに以下を設定します。
-Djavax.net.ssl.keyStore=キーストアファイル名をフルパスで指定
-Djavax.net.ssl.trustStore=トラストストアファイル名をフルパスで指定
-Djavax.net.ssl.keyStorePassword=キーストアのパスワード
-Djavax.net.ssl.trustStorePassword=トラストストアのパスワード
注意
WebアプリケーションがSSLクライアントとなっての通信を使用する場合は、デフォルトで定義されているキーストア、トラス
トストアを使用しないでください。
キーストア、トラストストアをデフォルト以外の場所に配置した場合、バックアップコマンドによるバックアップの対象となりま
せん。手動でバックアップしてください。
WebアプリケーションがSSLサーバとなっての通信
サーブレットアプリがサーバとなって独自に通信を行う場合、IJServerクラスタが使用するキーストア/トラストストアを使用し
てください。
WebサービスクライアントとWebサービス間の通信
Webサービスクライアント側では、WebサービスのエンドポイントのURLを「https」で指定していれば、JSSE(Secure Socket
Extension)の設定にしたがってSSLで安全化されたWebサービスを呼出しが行われます。利用する証明書などはキース
トア・トラストストアの設定で指定可能です。Webサービスクライアントを実行するコンテナに対してキーストア・トラストストア
の設定を行ってください。詳細は、「アプリケーションクライアントコンテナで利用するキーストアの設定」または「5.2.3.2
キーストアの設定」を参照してください。
Webサービス側の設定では、Webアプリケーションに対する設定と同様に、Webサーバに対して設定します。詳細は、
「WebブラウザとWebサーバ間の通信」に従ってください。なお、WebサービスのエンドポイントのURLについては「3.1.2
Webサービスアプリケーションの開発」を参照してください。
5.2.3.2 キーストアの設定
キーストアにはJDKのkeytoolコマンドで作成したキーストアを使用します。JDKのkeytoolコマンドの詳細は、JDKの情報
を参照してください。
・ 認証局の発行証明書を使用する場合
・ 自己発行証明書(s1as)を再発行する場合
- 409 -
・ アプリケーションクライアントコンテナで利用するキーストアの設定
認証局の発行証明書を使用する場合
認証局の発行証明書を使用する場合の手順は以下のとおりです。コマンド例はJDK6の場合です。JDK5についてはJDK
の情報を参照してください。
1. 既存の別名を使用する場合は、キーストアに登録されている、該当する証明書を削除します。(別名newcert、キー
ストアファイル名keystore.jksの場合)
keytool -delete -alias newcert -keystore keystore.jks
2. キーストアに対し、任意の別名で、新しい公開鍵と非公開鍵のペアを生成します。(アルゴリズムRSA、別名newcert、
キーストアファイル名keystore.jks、有効期間365日の場合)
keytool -genkeypair -keyalg RSA -keystore keystore.jks -validity 365 -alias newcert
3. キーストアで、証明書署名要求(CSR)を生成します。(別名newcert、キーストアファイル名keystore.jks、証明書署
名要求ファイル名newcert.csrの場合)
keytool -certreq -alias newcert -file newcert.csr -keystore keystore.jks
4. 認証局にサーバ証明書への署名を依頼します。
5. 認証局証明書および、必要であれば中間認証局証明書を、キーストアに登録します。(別名ca、キーストアファイ
ル名keystore.jks、認証局証明書ファイル名ca.cerの場合)
keytool -import -alias ca -keystore keystore.jks -trustcacerts -file ca.cer
6. 取得したサーバ証明書をキーストアに登録します。(別名newcert、キーストアファイル名keystore.jks、サーバ証明
書ファイル名myserver.cerの場合)
keytool -import -alias newcert -keystore keystore.jks -trustcacerts -file myserver.cer
7. Interstage Java EE管理コンソールまたはasadminコマンドを使用してJVMオプションに以下を設定します。
-Djavax.net.ssl.keyStore=キーストアファイル名をフルパスで指定
-Djavax.net.ssl.trustStore=トラストストアファイル名をフルパスで指定
-Djavax.net.ssl.keyStorePassword=キーストアのパスワード
-Djavax.net.ssl.trustStorePassword=トラストストアのパスワード
注意
認証局の発行証明書を使用する場合は、デフォルトで定義されているキーストア、トラストストアを使用しないでください。
キーストア、トラストストアをデフォルト以外の場所に配置した場合、バックアップコマンドによるバックアップの対象となりま
せん。手動でバックアップしてください。
デフォルトのキーストア、トラストストアは以下にあります。
- 410 -
[Java EE共通ディレクトリ]\domains\interstage\config\keystore.jks
[Java EE共通ディレクトリ]\domains\interstage\config\cacerts.jks
[Java EE共通ディレクトリ]/domains/interstage/config/keystore.jks
[Java EE共通ディレクトリ]/domains/interstage/config/cacerts.jks
自己発行証明書(s1as)を再発行する場合
自己発行証明書(s1as)を再発行する場合の手順は以下のとおりです。コマンド例はJDK6の場合です。JDK5について
はJDKの情報を参照してください。
1. Interstage Java EE DASサービスのキーストアファイル、トラストストアファイルをバックアップします。
2. Interstage Java EE DASサービスのキーストアに登録されている自己発行証明書(s1as)を削除します。
keytool -delete -alias s1as -keystore keystore.jks
3. Interstage Java EE DASサービスのキーストアに対し、別名s1asで、新しい公開鍵と非公開鍵のペアを生成します。
keytool -genkeypair -keyalg RSA -keystore keystore.jks -alias s1as -dname CN=ホスト名 validity 10950
Interstage Java EE DASサービスのキーストア、トラストストアのパスワードは"changeit"です。
注意
DASサービスのキーストア、トラストストア、証明書のパスワードは変更しないでください。
アプリケーションクライアントコンテナで利用するキーストアの設定
キーストアにはJDKのkeytoolで作成したキーストア、またはInterstage証明書環境を使用できます。
クライアント証明書を使用しない場合
VMARGS環境変数に、以下を設定してください。
set VMARGS=-Djavax.net.ssl.trustStore=トラストストアファイル名 -Djavax.net.ssl.trustStorePassword=トラストストア
のパスワード
VMARGS="-Djavax.net.ssl.trustStore=トラストストアファイル名 -Djavax.net.ssl.trustStorePassword=トラストストアの
パスワード"
export VMARGS
クライアント証明書を使用する場合
VMARGS環境変数に、以下を設定してください。
set VMARGS=-Djavax.net.ssl.keyStore=キーストアファイル名 -Djavax.net.ssl.trustStore=トラストストアファイル名 Djavax.net.ssl.keyStorePassword=キーストアのパスワード -Djavax.net.ssl.trustStorePassword=トラストストアパスワー
ド
- 411 -
VMARGS="-Djavax.net.ssl.keyStore=キーストアファイル名 -Djavax.net.ssl.trustStore=トラストストアファイル名 Djavax.net.ssl.keyStorePassword=キーストアのパスワード -Djavax.net.ssl.trustStorePassword=トラストストアパスワー
ド"
export VMARGS
注意
キーストアの設定における注意事項
・ Interstage証明書環境を使用する場合は登録しているすべての認証局証明書が使用されます。
・ キーストアおよびトラストストアには、IJServerクラスタまたはアプリケーションクライアントコンテナからアクセス可能な
ユーザ、グループによるアクセス制限を設定してください。
・ JDKのkeytoolでキーストアを作成する場合、非公開鍵のパスワードには、キーストアのパスワードと同じものを指定し
てください。
・ デフォルトで設定されているキーストアに登録済みの自己証明書(s1as)は実際の運用では使用しないでください。
5.2.4 ユーザ/グループ/ロール
ユーザ/グループ/ロールについて説明します。
ユーザ
個人またはアプリケーションプログラムを識別するIDです。
Java EEセキュリティを使用する場合、ユーザは必須です。
グループ
ユーザの集まりです。
例えば、人事部門に所属するメンバに対して同一の認可レベルを割り当てる場合に使用します。
ロール
アプリケーションによって定義される名前付きの認可レベルです。
アプリケーションはロールに基づいてアクセス制限を行います。
ユーザ/グループ/ロールは以下の関係を持ちます。ユーザ/グループはInterstage deployment descriptorにセキュリティ
ロールマッピングを定義することでアプリケーションによって定義されるロールと関連付けます。
- 412 -
5.2.5 レルム
セキュリティポリシが定義および適用されている範囲のことです。実際には、レルムとはサーバがユーザおよびグループ
の情報を格納するリポジトリです。
本製品では、以下のレルムを使用できます。
・ fileレルム
レルムに登録されたユーザ資格をキーファイルとして管理します。fileレルムへのユーザ登録や設定については、
「5.3.6 fileレルムの設定」を参照してください。
・ ldapレルム
Interstageディレクトリサービスからユーザ資格を取得します。ldapレルムのユーザおよびグループの管理については、
「5.3.5 ldapレルムの設定」を参照してください。
注意
- ldapレルムは、Interstageディレクトリサービスへの接続のみをサポートします。
- OSレルムのユーザアプリケーションでの使用は未サポートです。
本製品では、あらかじめレルムが用意されており、「file」「admin-realm」が登録されています。
「file」は、デフォルトレルムに設定されておりfileレルムとして運用が可能です。「admin-realm」は、Interstage Java EE管理
コンソールまたはasadminコマンドを実行するユーザを管理するためのレルムです。
初期登録以外のレルムを使用する場合は、Interstage Java EE管理コンソールまたはasadminコマンドのサブコマンドを使
用してを新たに作成してください。サブコマンドの詳細は、「リファレンスマニュアル(コマンド編)」-「サブコマンド-カテ
ゴリ: セキュリティ」を参照してください。
5.2.6 クライアントとWebサーバ間の通信データの保証に関する要求
特定のWebアプリケーションのリソースにアクセスする場合の通信データ(クライアントとWebサーバ間)の保証に関する要
求は、Web application deployment descriptorで指定します。
INTEGRALまたはCONFIDENTIALを指定した場合はSSLによる通信を要求します。
指定方法の詳細については、「3.2.2.2 Web application deployment descriptor (web.xml)」を参照してください。
アクセスが拒否された場合
INTEGRALまたはCONFIDENTIALを指定した場合に、クライアントから保護されたリソースにSSLでアクセスしなかった
場合はWebコンテナによりアクセスが拒否されます。
アクセスが拒否された場合、クライアントには403が返されます。
5.2.7 EJBコンテナへの認証情報の伝播
EJBコンテナへの認証情報の伝播は以下の2つの方法があります。
EJBコンテナでは伝播された認証情報にマッピングされたロールを使用して認可が行われます。
クライアントの認証情報をEJBコンテナへ伝播
クライアント(Java EEアプリケーションクライアント、Webアプリケーション)で認証された情報をEJBコンテナへ伝播します。
RunAs指定による呼出し
呼出し元deployment descriptorファイルの<run-as>タグ、または@RunAsアノテーションでロールを指定できます。
この場合、指定されたロールにマッピングされた認証情報(グループまたはユーザ)をEJBコンテナへ伝播します。
run-asまたは@RunAsアノテーションに指定されたロールと認証情報とのマッピングはInterstage deployment descriptorファ
イルに定義します。定義されていない場合はアプリケーションの配備に失敗します。
Servletにrun-asを指定した場合の定義例
インターネット上に公開されたWebアプリケーションのように、だれでもアクセス可能なWebアプリケーションからアクセス
制限されたEJBアプリケーションを呼び出す場合に有効です。
- 413 -
以下に手順を示します。
1. deployment descriptor (web.xml)ファイルにrun-asを定義
Servletが動作するロール(user)を定義します。
2. Interstage deployment descriptor (sun-web.xml)ファイルにsecurity-role-mappingを定義
Servletのロール(user)に対してEJBコンテナに伝播する認証情報(ejb-user1)を定義します。
3. Interstage deployment descriptor (sun-ejb-jar.xml)ファイルにsecurity-role-mappingを定義
Servletから伝搬される認証情報(ejb-user1)に対してEJBが動作するためのロール(admin)を定義します。
Servlet
deployment descriptor(web.xml)
<servlet>
<servlet-name>cart</servlet-name>
<servlet-class>com.fujitsu.interstage.sample.Cart</servlet-class>
<run-as>
<role-name>user</role-name>
</run-as>
</servlet>
Interstage deployment descriptor(sun-web.xml)
<security-role-mapping>
<role-name>user</role-name>
<principal-name>ejb-user1</principal-name>
</security-role-mapping>
EJB
deployment descriptor(ejb-jar.xml)
<assembly-descriptor>
<security-role>
<role-name>ejb</role-name>
</security-role>
<method-permission>
<role-name>admin</role-name>
<method>
<ejb-name>CartBean</ejb-name>
<method-name>addItem</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</method>
</method-permission>
</assembly-descriptor>
Interstage deployment descriptor(sun-ejb-jar.xml)
<security-role-mapping>
<role-name>admin</role-name>
<principal-name>ejb-user1</principal-name>
</security-role-mapping>
EJBにrun-asを指定した場合の定義例
Message-driven Beanからアクセス制限されたEJBアプリケーションを呼び出す場合に有効です。
- 414 -
以下に手順を示します。
1. deployment descriptor (ejb-jar.xml)ファイルにrun-asを定義
EJB1が動作するロール(user)を定義します。
2. EJB1のInterstage deployment descriptor (sun-ejb-jar.xml)ファイルにsecurity-role-mappingを定義
EJB1のロール(user)に対してEJBコンテナに伝播する認証情報(ejb-user1)を定義します。
3. EJB2のInterstage deployment descriptor (sun-ejb-jar.xml)ファイルにsecurity-role-mappingを定義
EJB1から伝搬される認証情報(ejb-user1)に対してEJBが動作するためのロール(admin)を定義します。
EJB1
deployment descriptor(ejb-jar.xml)
<enterprise-beans>
<security-identity>
<run-as>
<role-name>user</role-name>
</run-as>
</security-identity>
</enterprise-beans>
Interstage deployment descriptor(sun-ejb-jar.xml)
<security-role-mapping>
<role-name>user</role-name>
<principal-name>ejb-user1</principal-name>
</security-role-mapping>
EJB2
deployment descriptor(ejb-jar.xml)
<assembly-descriptor>
<security-role>
<role-name>ejb</role-name>
</security-role>
<method-permission>
<role-name>admin</role-name>
<method>
<ejb-name>CartBean</ejb-name>
<method-name>addItem</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</method>
</method-permission>
</assembly-descriptor>
Interstage deployment descriptor(sun-ejb-jar.xml)
<security-role-mapping>
<role-name>admin</role-name>
<principal-name>ejb-user1</principal-name>
</security-role-mapping>
注意
EJBコンテナへの認証情報の伝播の注意事項
- 415 -
・ 別マシン上のEJBを呼び出す場合は、sun-ejb-jar.xmlのior-security-configタグでIIOP通信の認証、通信データの完
全性、機密性を設定する必要があります。
設定方法の詳細は、「3.2.3.3 Interstage EJB application deployment descriptor (sun-ejb-jar.xml)」を参照してください。
・ security-role-mappingに1つのロールに対して複数のprincipalが定義されている場合は、以下の方法でEJBコンテナ
に伝搬する認証情報を特定する必要があります。
- Servletの場合:
Interstage deployment descriptor (sun-web.xml)ファイルに特定するprincipalをservletタグ配下のprincipal-name
タグで定義します。
- EJBの場合:
Interstage deployment descriptor (sun-ejb-jar.xml)ファイルに特定するprincipalをprincipalタグで定義します。
5.2.8 セキュリティーマネージャー
IJServerクラスタではセキュリティーマネージャーを使用することにより、IJServerクラスタのセキュリティを強化することがで
きます。
セキュリティーマネージャーの詳細については、以下のサイトを参照してください。
日本語:http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/security/smPortGuide.html
英語:http://download.oracle.com/javase/1.5.0/docs/guide/security/smPortGuide.html
IJServerクラスタでセキュリティーマネージャーを運用する方法については、「5.3.8 セキュリティーマネージャーの運用」を
参照してださい。
5.3 セキュリティ機能を利用した運用方法
Java EEセキュリティはアプリケーション開発者、配備担当者、システム管理者の3者により運用されます。各担当者は以
下の役割を担います。
- 416 -
5.3.1 ロールとロールベースのアクセス制限の設定
アプリケーション開発者はdeployment descriptorを編集し、ロールの設定およびロールによるアクセス制限の設定を行い
ます。
詳細は、Java EE 5、Servlet 2.5、EJB 3.0の仕様を参照してください。
5.3.2 ユーザ/グループをロールにマッピング
配備担当者はInterstage deployment descriptorを編集し、ユーザまたはグループをロールにマッピングします。
例
Interstage deployment descriptorの記述例
<security-role-mapping>
<role-name>ロール1</role-name>
<principal-name>ユーザ1</principal-name>
<principal-name>ユーザ2</principal-name>
</security-role-mapping>
<security-role-mapping>
<role-name>ロール2</role-name>
<principal-name>ユーザ3</principal-name>
<group-name>グループ1</group-name>
</security-role-mapping>
詳細は、「3.2.3 Interstage deployment descriptor」を参照してください。
5.3.3 レルムの作成
IJServerクラスタには、fileレルムが事前に用意されています。
fileレルム以外のレルムを使用する際には用途に合わせレルムを新たに作成する必要があります。
レルムの作成はInterstage Java EE管理コンソールまたはasadminコマンドを使用して行います。
・ Interstage Java EE管理コンソール
[設定] > [クラスタ名-config] または [server-config] > [セキュリティ] > [レルム]からレルムを作成します。
・ asadmin
create-auth-realmサブコマンドでレルムを作成します。
- 417 -
5.3.4 デフォルトレルムの設定
アプリケーションが使用するレルムはアプリケーションのdeployment descriptorに指定することが可能ですが、deployment
descriptorに指定しない場合にデフォルトで使用するレルムを設定することができます。
アプリケーションが使用するデフォルトのレルムに設定する場合は、Interstage Java EE管理コンソールまたはasadminコマ
ンドを使用して以下の設定を行います。
・ Interstage Java EE管理コンソール
[設定] > [クラスタ名-config] または [server-config] > [セキュリティ]のデフォルトレルムにレルムを設定します。
・ asadmin
setサブコマンドでデフォルトレルムにレルムを設定します。
項目の詳細については「6.8.12 セキュリティの定義項目」を参照してください。
5.3.5 ldapレルムの設定
Interstageディレクトリサービスへの接続
システム管理者はInterstage Java EE管理コンソールまたはasadminコマンドを使用して以下の設定を行います。
・ Interstage Java EE管理コンソール
[設定] > [クラスタ名-config] または [server-config] > [セキュリティ] > [レルム]から変更するレルムを選択し各項目の
値を変更します。
・ asadmin
setサブコマンドで各項目の値を変更します。
ldapレルムの各設定項目の詳細については「6.8.12 セキュリティの定義項目」を参照してください。
- 418 -
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参照し
てください。
ユーザ/グループの管理
システム管理者はInterstageディレクトリサービスにセキュリティ機能で使用するユーザ/グループを登録します。
オブジェクトクラスは以下を使用します。
・ ユーザ:インターネットユーザ(inetOrgPerson)
・ グループ:グループ(groupOfNames)
ユーザ/グループの登録方法の詳細は、「ディレクトリサービス運用ガイド」を参照してください。
ユーザの設定
ユーザには以下の属性を設定します。
属性名
設定値
備考
cn
ユーザの名を指定します。
sn
ユーザの姓を指定します。
uid
ユーザIDを指定します。
この属性はユーザの認証に使用されます(カスタマイ
ズ可能)。
公開ディレクトリ配下で、ユニークなIDを設定してくだ
さい。
IDが重複する場合、セキュリティが正しく適用されま
せん。
マルチバイト文字は指定できません。
UserPasswor
d
パスワードを指定します。
この属性はユーザの認証に使用されます。
マルチバイト文字は指定できません。
指定するパスワードの作成方法については、「使用
上の注意」-「Java EEで使用するパスワードに関す
る注意事項」を参照してください。
グループの設定
グループには以下の属性を設定します。
属性名
設定値
備考
cn
グループ名を指定します。 この属性を使用してグループとロールをマッピングし
ます(カスタマイズ可能)。
member
グループに属するユーザ
のDNを指定します。
注意
IJServerクラスタの運用中に、LDAPで管理する情報を更新する場合、先に認証情報のプールを無効にしておくか、
IJServerクラスタの再起動を行ってください。
認証情報のプールについては、「6.8.12 セキュリティの定義項目」を参照してください。
5.3.6 fileレルムの設定
システム管理者は、Interstage Java EE管理コンソールまたは「リファレンスマニュアル(コマンド編)」-asadminコマンドを使
用してユーザ/グループを登録します。
- 419 -
・ Interstage Java EE管理コンソール
[設定] > [クラスタ名-config] または [server-config] > [セキュリティ] > [レルム]から変更するレルムを選択し各項目の
値を変更します。
・ asadmin
setサブコマンドで各項目の値を変更します。
注意
キーファイルの設定を変更する場合、IJServerクラスタが停止している状態でおこなってください。起動中に更新した場合、
メッセージSYNC021やSYNC022またはSYNC023を出力して、fileレルムによる認証が行えなくなります。
fileレルムの各設定項目の内容については「6.8.12 セキュリティの定義項目」を参照してください。
fileレルムユーザの設定
fileレルムユーザには以下の項目を設定します。
項目名
設定値
ユーザID
ユーザ名を指定します。
グループ リス
ト
ユーザが属するグループ
のリストを指定します。
備考
1文字以上、255文字以内とし以下の文字で構成し
てください。
・ 英数字
・ アンダースコア「 _ 」
・ ダッシュ「 - 」
・ ドット文字「 . 」
新しいパス
ワード
ユーザ名に対するパス
ワードを設定します。
マルチバイト文字の指定はできせん。また、空白や、
制御コードは指定できません。
指定するパスワードの作成方法については、「使用
上の注意」-「Java EEで使用するパスワードに関す
る注意事項」を参照してください。
新しいパス
ワードを確認
パスワードの確認
「新しいパスワード」と同じ値を入力してください。
注意
・ fileレルムはデフォルトではIJServerクラスタ間でユーザ/グループを共有します。IJServerクラスタごとにユーザ/グルー
プの管理を分けたい場合は、fileレルムのキーファイルの保管場所を変更してください。
・ 設定を変更した場合は、IJServerクラスタを再起動する必要があります。IJServerクラスタ間でユーザ/グループを共有
している場合は、共有しているすべてのIJServerクラスタを再起動する必要があります。
・ asadminコマンドによるコマンドラインからの入力では、推奨値以上のパスワードを入力できないことがあります。コマ
ンドラインから入力できない場合は、GUIより変更を行ってください。
5.3.7 アプリケーション開発者/配備担当者/システム管理者を同一の担当者
が担う場合
環境によってはアプリケーション開発者/配備担当者/システム管理者の3つの役割を同一の担当者が担う場合があります。
その場合、認証済みのユーザが所属するグループのグループ名をロールとして使用することで、ユーザ/グループをロー
ルにマッピングする作業が不要となります。
- 420 -
詳細は、Interstage Java EE管理コンソールのヘルプ、または「リファレンスマニュアル(コマンド編)」-「asadmin」を参照し
てください。
5.3.8 セキュリティーマネージャーの運用
セキュリティーマネージャーの運用方法について説明します。
5.3.8.1 セキュリティーマネージャーの有効化と無効化
IJServerクラスタ、およびInterstage Java EE DASサービスのインスタンスのセキュリティーマネージャーはデフォルトで無
効になっています。セキュリティーマネージャーを有効にするためには、Interstage Java EE管理コンソールまたはasadmin
コマンドで以下の設定を行い、IJServerクラスタを再起動してください。
・ Interstage Java EE管理コンソール
[設定] > [クラスタ名-config] または [server-config] > [セキュリティ]のセキュリティーマネージャーのチェックボックス
を有効にする。
または、
[設定] > [クラスタ名-config] または [server-config] > [JVM 設定] > [JVMオプション]タブ のオプションにDjava.security.managerを追加する。
・ asadminのcreate-jvm-optionsサブコマンド
JVMオプションに-Djava.security.managerを追加する。
セキュリティーマネージャーを無効にする場合は、Interstage Java EE管理コンソールまたはasadminのdelete-jvm-options
サブコマンドを使用して上記の設定を元に戻し、IJServerクラスタを再起動してください。
5.3.8.2 policyファイルの編集
IJServerクラスタを作成すると、そのIJServerクラスタで使用されるデフォルトのpolicyファイルが以下のディレクトリに配置
されます。デフォルトのpolicyファイルには、IJServerクラスタの動作に必要なアクセス権が設定されています。
[Java EE共通ディレクトリ]\nodeagents\ijna\[サーバーインスタンス名]\config\server.policy
[Java EE共通ディレクトリ]/nodeagents/ijna/[サーバーインスタンス名]/config/server.policy
運用環境に合わせてセキュリティを強化する場合は、デフォルトのpolicyファイルを任意のディレクトリ配下にコピーし、コ
ピーしたファイルを編集してください。また、デフォルトのpolicyファイルがIJServerクラスタで使用されないようにするため、
IJServerクラスタのJVMオプションに「-Djava.security.policy=[編集したpolicyファイルのフルパス]」を設定してください。こ
のJVMオプションは、IJServerクラスタを再起動することにより有効となります。
JVMオプションの設定は、Interstage Java EE管理コンソールまたはasadminのcreate-jvm-optionsサブコマンドで行います。
・ Interstage Java EE管理コンソール
[設定] > [クラスタ名-config] または [server-config] > [JVM 設定] > [JVM オプション]タブ
- 421 -
・ asadminのcreate-jvm-optionsサブコマンド
注意
policyファイル編集時の注意事項
Interstage Java EE DASサービスのpolicyファイルは変更しないでください。
デフォルトのpolicyファイルには、IJServerクラスタが動作するために必要な権限が設定されています。
「// Core server classes get all permissions by default」から「//Required to register MBeans, fails otherwise」の変更および
削除は行わないでください。変更した場合、IJServerクラスタが起動できなくなる可能性があります。
policyファイルでマルチバイト文字を使用する場合は、policyファイルをUTF-8で保管するか、IJServerクラスタのJVMオ
プションに「-Dsun.security.policy.utf8=false」を設定してください。
policyファイルをデフォルト以外の場所に定義した場合、バックアップコマンドによるバックアップの対象となりません。手
動でバックアップしてください。
5.3.8.3 アプリケーションのアクセス権の設定
policyファイルは、grant構文と複数のpermission構文により構成されます。セキュリティレベルの低下を防ぐためアクセス
権を設定する場合は、すべてのアプリケーションではなく、変更が必要なアプリケーションへ適切なアクセス権を設定し
てください。
アプリケーションのアクセス権は、policyファイルの「// Please change the following content if necessary.// Basic set of required
permissions granted to all remaining code」という記述の次から始まるgrant構文を変更してください。デフォルトでいくつか
のアクセス権が定義されているため、必要に応じて変更してください。
例えば、デフォルトではすべてのファイルへの読み込み/書き込みが許可されていますが、特定のJava EEアプリケーショ
ンのみに権限を付与したい場合は、デフォルトの定義をコメントアウト(※1)し、特定のJava EEアプリケーションへの権限
を追加(※2)してください。
// Please change the following content if necessary.
// Basic set of required permissions granted to all remaining code
grant {
:
//
permission java.io.FilePermission
"<<ALL FILES>>", "read,write"; ・・・※1
:
};
grant codeBase "file:${com.sun.aas.installRoot}/var/domains/interstage/applications/j2ee-apps/[アプリ
ケーション名]/-" {
permission java.io.FilePermission
"<<ALL FILES>>", "read,write"; ・・・※2
};
各アプリケーションのアクセス制御を行う場合は、grant文のcodeBaseを設定する必要があります。
省略値の${com.sun.aas.instanceRoot}変数、${com.sun.aas.installRoot}変数については、「6.8.1 定義時に利用できるプ
ロパティ」を参照してください。
IJServerクラスタに配備されたすべてのJava EEアプリケーション(EARモジュール)に対してアクセス制御を行う場合は、以
下のように指定します。
grant codeBase "file:${com.sun.aas.installRoot}/var/domains/interstage/applications/j2ee-apps/- " {
...
};
Java EEアプリケーション(EARモジュール)ごとにアクセス制御を行う場合は、以下のように指定します。
grant codeBase "file:${com.sun.aas.installRoot}/var/domains/interstage/applications/j2ee-apps/[アプリ
ケーション名]/-" {
- 422 -
...
};
Webモジュール(war)、EJBモジュール(ejb-jar)、connector(rar)などのモジュールごとにアクセス制御を行う場合は、以下
のように指定します。
grant codeBase "file:${com.sun.aas.installRoot}/var/domains/interstage/applications/j2ee-modules/[モ
ジュール名]/-" {
...
};
配備時に出力されるスタブコードに対してアクセス制御を行う場合は、以下のように指定します。
grant codeBase "file:${com.sun.aas.instanceRoot}/generated/-" {
...
};
JSPに対してアクセス制御を行う場合は、JSPのコンパイル結果の保管先ディレクトリを指定してください。デフォルトでは、
上記スタブと同じ値です。
コンパイル結果出力ディレクトリを変更している場合は、コンパイル結果出力先ディレクトリを指定してください。
server.policyファイル内に設定するアクセス権(permission構文)の詳細については、以下のサイトを参照してください。
・ 日本語:http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/security/permissions.html
・ 英語:http://download.oracle.com/javase/1.5.0/docs/guide/security/permissions.html
PermissionクラスのJavadoc は、以下のサイトを参照してください。
・ 日本語:http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/security/Permission.html
・ 英語:http://download.oracle.com/javase/1.5.0/docs/api/java/security/Permission.html
5.4 Webサービスのセキュリティ設定
Webサービスの安全化には、HTTP Basic認証機能、SSLを利用できます。
WebサービスをHTTP Basic認証機能で安全化する
WebサービスにHTTP Basic認証を設定し、適切な権限設定(認可設定)を行うことで、クライアントの特定および許可され
たクライアント以外からの呼出しを排除できます。
WebサービスをHTTP Basic認証機能で安全化するには、以下の設定を行ってください。
・ 実装クラスがJAX-WSエンドポイントの場合はServletに対する設定と同様です。詳細は「3.2.2.2 Web application
deployment descriptor (web.xml)」を参照してください。
・ 実装クラスがStateless Session Beanの場合は、Stateless Session Beanに対して認可の設定を行い、Interstage
deployment descriptor に webservice-endpoint 要 素 を 作 成 し て login-config 要 素 を 記 載 す る こ と で 設 定 し ま す。
webservice-endpoint要素の詳細は「3.2.3.3 Interstage EJB application deployment descriptor (sun-ejb-jar.xml)」を参
照してください。
なお、HTTP Basic認証では、通信路においてユーザ名およびパスワードは暗号化されません。HTTP Basic認証を利用
する場合、通常はSSLを併用して通信路での盗聴を防止してください。
WebサービスをSSLで安全化する
SSLを使用することで、通信を暗号化して通信路での盗聴・情報漏洩を防止できるほか、クライアント認証を行うSSL設定
を使用することで、クライアントの特定および許可されたクライアント以外からの呼出しを排除できます。
- 423 -
WebサービスをSSLで安全化するには、WebアプリケーションのSSL設定と同様にWebサーバでSSLの設定をしてください。
設定方法は、Servletに対する設定と同様です。詳細は、「5.2.3 SSL」を参照してください。
5.5 Webサービスクライアントのセキュリティ設定
HTTP Basic認証機能、またはSSLで安全化されたWebサービスを呼び出すことができます。
HTTP Basic認証情報を設定してWebサービスを呼び出す
呼び出すWebサービスにHTTP Basic認証が設定されている場合、WebサービスクライアントからのリクエストにHTTP Basic
認証情報を設定する必要があります。
認証情報は、Java EEアプリケーションクライアントと同様にセキュリティコールバックハンドラによって設定できます。設定
については、「5.2.1 認証」の「Java EEアプリケーションクライアントによる認証」を参照してください。
同方法でアクセスできない場合は、アプリケーションでJAX-WSのAPI javax.xml.ws.BindingProviderを使用してリクエス
トメッセージのコンテキストにUSERNAME_PROPERTYおよびPASSWORD_PROPERTYのプロパティを指定してください。
例
ユーザ名"username"、パスワード"password"の場合
stock.server.StockQuoteProvider port = service.getStockQuoteProviderPort();
((BindingProvider)port).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "username");
((BindingProvider)port).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "password");
なお、HTTP Basic認証では、通信路においてユーザ名およびパスワードは暗号化されません。HTTP Basic認証を利用
する場合、通常はSSLを併用して通信路での盗聴を防止してください。
SSLを使用してWebサービスを呼び出す
SSLを使用することで、通信を暗号化して通信路での盗聴・情報漏洩を防止できます。
WebサービスのエンドポイントのURLが「https」で指定されていれば、JSSE(Secure Socket Extension)の設定にしたがって
SSLで安全化されたWebサービスの呼出しが行われます。利用する証明書などはキーストア・トラストストアの設定で指定
可能です。詳細は、「5.2.3 SSL」を参照してください。
5.6 リソースアクセス時の認証情報
以下の各種リソースにアクセスする場合に使用される認証情報(ユーザー名/パスワード)について説明します。
・ JDBCリソース
・ JMS接続ファクトリ
・ コネクタリソース
リソースの認証方法としてdeployment descriptorファイル(web.xmlやejb-jar.xml)の<res-auth>タグの指定によりアプリケー
ション管理による認証(Application)と、コンテナ管理による認証(Container)を選択できます。
アプリケーション管理による認証(Application)
アプリケーション管理による認証(Application)を指定すると、アプリケーションで認証メソッドを呼び出す時に認証情報を
指定します。
認証メソッドの引数
認証
なし
認証失敗の例外(JDBCリソースの場合、
java.sql.SQLException)を返却
ユーザー名/パスワードを指定
指定されたユーザー名/パスワードで認証
- 424 -
各種リソースの認証メソッドは以下です。
リソース
JDBCリソース
JMS接続ファクトリ
認証メソッド
javax.sql.DataSourceクラスのgetConnectionメソッド
・ javax.jms.ConnectionFactoryクラスのcreateConnectionメソッド
・ javax.jms.QueueConnectionFactoryクラスのcreateQueueConnectionメソッド
・ javax.jms.TopicConnectionFactoryクラスのcreateTopicConnectionメソッド
コネクタリソース
javax.resource.spi.ConnectionManagerクラスのallocateConnectionメソッドに渡される
javax.resource.spi.ConnectionRequestInfoクラスの情報(注)
注)
この認証メソッドはリソースアダプタ内で実行されるため、リソースアダプタの実装に依存します。認証の使用については
リソースアダプタ提供者に問い合わせてください。
コンテナ管理による認証(Container)
コンテナ管理による認証(Container)を指定すると、アプリケーションで認証メソッドを呼び出す時に指定した認証情報は
無視されて以下の優先順位で認証情報(Principal)をコンテナが決定します。
1. 【コネクタリソースの場合のみ】セキュリティーマップ
呼び出し側の認証情報が存在する場合には、呼び出し側の認証情報にマッピングされたBackend Principal(バッ
クエンド主体と呼ぶ場合もあります)をEISとの認証情報として使用できます。このBackend Principalにマッピングす
る機能をセキュリティーマップと呼びます。
呼び出し側の認証情報が存在しない場合、または、呼び出し側の認証情報にマッピングするBackend Principalが
定義されていない場合には、2.以降の認証情報が使用されます。セキュリティーマップの詳細は「セキュリティー
マップ」を参照してください。
2. Interstage deployment descriptorのデフォルト認証情報
Interstage deployment descriptorファイルの<resource-ref><default-resource-principal>タグが定義されている場合、
定義された認証情報を使用します。
3. 【コネクタリソースの場合のみ】リソースアダプタの接続定義のプロパティ
ra.xml の <connector><resourceadapter><outbound-resourceadapter><connection-definition><config-property> タ
グに以下のプロパティ名が定義されている場合には、定義された認証情報を使用します。
ユーザー名: プロパティ名「USERNAMEまたはUSER」のプロパティ値
パスワード: プロパティ名「PASSWORD」のプロパティ値
4. リソースクラスのプロパティ
リソースクラスにgetter/setterメソッドが実装されている場合には、以下のメソッドの返却値を認証情報として使用しま
す。このメソッドの返却値はJDBC接続プール、JMS接続ファクトリ、コネクタ接続プールの追加プロパティ(UserName、
User、Password)に値を指定することで、対応するsetterメソッドを運用時に呼び出して値を変更できます。
ユーザー名: getUserName()またはgetUser()の返却値
パスワード: getPassword()の返却値
5. 上記のいずれも該当しない
上記のいずれも該当しない場合、長さ0の文字列を認証情報として使用します。
セキュリティーマップ
コネクタリソースを使用してコンテナ管理の認証を選択する場合、セキュリティーマップ機能を使用できます。
- 425 -
ここでは、ユーザーをPrincipal(主体と呼ぶ場合もあります)、グループをユーザーグループと呼びます。
セキュリティーマップ機能とは、リソースアダプタを利用してEISへアクセスするJava EEコンポーネントのPrincipalを、
EISとの認証で使用するBackend Principal(バックエンド主体と呼ぶ場合もあります)へマッピングする機能です。
1つのセキュリティーマップは、以下の形式で定義します。
マップ元: Principal/ユーザーグループ
マップ先: Backend Principal
マップ元はカンマ(,)区切りで複数指定可能です。1つのセキュリティーマップにはPrincipalまたはユーザーグループ
を複数定義することができます。ただし、マップ元にPrincipalとユーザーグループが同時に登録されている場合、マッ
ピング機能の動作時にはPrincipalが優先されます。
また、Principal/ユーザーグループにはワイルドカードを意味するアスタリスク(*)を指定できます。
マップ先のBackend Principalには(ユーザー名、パスワードの組)を指定します。
セキュリティーマップはコネクタ接続プールへ設定します。1つのコネクタ接続プールに対し複数のセキュリティーマッ
プを指定可能です。
リソースアダプタはBackend Principalを用いてEISへ認証します。
セキュリティーマップの管理
セキュリティーマップの管理は、以下の方法が選択できます。
- Interstage Java EE管理コンソールでコネクタ接続プールを選択し、「セキュリティーマップ」タブをクリックしてくだ
さい。セキュリティーマップの一覧画面が表示されます。この画面から新規作成・更新・削除の各操作を実行して
ください。
- asadminコマンドの以下のサブコマンドから新規作成・更新・削除・一覧表示の各操作を実行してください。サブコ
マンドの詳細は、「リファレンスマニュアル(コマンド編)」-「サブコマンド-カテゴリ: セキュリティ」を参照してくださ
い。
- create-connector-security-map
- delete-connector-security-map
- update-connector-security-map
- list-connector-security-maps
注意
- コネクタ接続プールを削除すると、そのプールに設定されたセキュリティーマップも削除されます。
- Interstage Java EE管理コンソールからセキュリティマップを操作する場合、マップ元にPrincipalとユーザーグルー
プが同時に登録されている場合には、マッピング機能の動作時に優先されるPrincipalのみが表示されます。
- asadminコマンドからセキュリティマップを操作する場合、list-connector-security-mapsサブコマンドの--verboseオ
プションの指定により、登録されている全てのPrincipalまたはユーザーグループが表示されます。
- 426 -
5.7 JMSのセキュリティ機能
JMS機能が提供するセキュリティとして、以下を説明します。
・ ユーザとグループ
・ アクセス制御プロパティファイル
5.7.1 ユーザとグループ
Interstage JMSは、メッセージブローカとの接続に必要なユーザとグループを管理する機能を提供します。
ユーザがメッセージブローカとの接続時(アプリケーションからの接続時、コマンド実行時など)、メッセージブローカは提
供されたユーザ名とパスワードを調べて認証します。
ユーザは、以下の3つのいずれかのグループに所属します。
adminグループ
メッセージブローカの管理者です。本グループに割り当てられたユーザは、デフォルトでメッセージブローカの設定/
管理を行うことができます。管理者は、adminグループに複数のユーザを割り当てることができます。
userグループ(デフォルト)
通常のJMS利用者です。デフォルトでは、すべてのTopicとQueueへのメッセージ送信/受信、すべてのQueueのメッ
セージの検索を行うことができます。
anonymousグループ
メッセージブローカに認識されているユーザ名を使用しないクライアント用です。クライアントアプリケーションが実際
に使用するユーザ名を認識していないなどの理由がある場合に使用します。
単層型ファイルリポジトリ
単層型ファイルリポジトリは、メッセージブローカごとに作成されるファイル上でユーザを管理します。
単層型ファイルリポジトリのグループ名の変更/削除、新しいグループの作成を行うことはできませんが、グループに所
属するユーザがどの操作を実行可能であるかを定義できます。詳細については、「5.7.2 アクセス制御プロパティファイ
ル」を参照してください。
単層型ファイルリポジトリは、デフォルトで以下の2つのユーザを保持しています。新たにユーザを作成する場合、および
ユーザを管理する場合は、imqusermgrコマンドを使用してください。
ユーザ名
パスワード
グループ
アクティブ状態
admin
admin
admin
アクティブ
guest
guest
anonymous
アクティブ
注意
・ デフォルトで保持されているadminユーザのパスワードは、セキュリティの観点から、メッセージブローカ作成後、直ち
に変更してください。なお、コマンドでパスワードを変更した場合は、IJServerクラスタで管理するJMSホストの管理者
パスワード設定も変更する必要があります。
・ 一度作成されたユーザが所属するグループは、変更できません。ユーザが属するグループを変更するには、一度、
ユーザを削除してから、再度、変更したいグループに所属するようユーザを作成してください。
5.7.2 アクセス制御プロパティファイル
アクセス制御プロパティファイルには、ユーザおよびグループがどの操作を実行可能であるかを指定します。メッセージ
ブローカごとに異なるアクセス制御プロパティファイルを使用できます。
- 427 -
本機能は、メッセージブローカプロパティのimq.accesscontrol.enabledが有効になっている場合にだけ使用可能です。
imq.accesscontrol.enabledの詳細については、「6.7.5 セキュリティに関するプロパティ」を参照してください。
メッセージブローカは、以下の操作の実行時に、アクセス制御プロパティファイルをチェックします。
・ ブローカへの接続
・ 物理格納先へのアクセス
特定の物理格納先、またはすべての物理格納先に対して、コンシューマ/プロデューサ/キューブラウザの作成
・ 物理格納先の自動生成
アクセス制御プロパティファイルは、以下に格納されます。
[Java EE共通ディレクトリ]\domains\interstage\imq\instances\${メッセージブローカ名}\etc
\accesscontrol.properties
[Java EE共通ディレクトリ]/domains/interstage/imq/instances/${メッセージブローカ名}/etc/
accesscontrol.properties
アクセス制御プロパティファイルでは、以下のアクセス制御を行う規則を指定できます。
・ 接続のアクセス制御
・ 物理格納先のアクセス制御
・ 物理格納先の自動生成のアクセス制御
注意
・ アクセス制御プロパティファイルのversionプロパティは、変更しないでください。
・ アクセス制御プロパティファイルを編集する場合は、メッセージブローカを停止してから編集してください。
以降では、以下について説明します。
・ アクセス制御プロパティファイルに記述する規則の基本構文
・ アクセス制御プロパティファイルの定義規則
・ リソースタイプがconnectionの場合の注意事項
・ リソースタイプがqueueまたはtopicの場合の注意事項
アクセス制御プロパティファイルに記述する規則の基本構文
アクセス制御プロパティでアクセス制御の規則を記述するための基本構文は、要素をドット(.)で連結して記述します。
・ リソースタイプがconnectionの場合
リソースタイプ.リソース名.アクセス種別.対象種別=対象者
- 428 -
・ リソースタイプがqueue/topic の場合
- アクセス規則の種類がcreate以外の場合
リソースタイプ.リソース名.アクセス規則の種類.アクセス種別.対象種別=対象者
- アクセス規則の種類がcreateの場合
リソースタイプ.アクセス規則の種類.アクセス種別.対象種別=対象者
各要素について、以下に説明します。
要素
リソースタイプ
(resourceType)
意味
規則を適用するリソース
のタイプを指定します。
設定値
以下のいずれかを指定します。
・ connection
・ queue
・ topic
リソース名
(resourceVariant)
リソースタイプで指定し
リソース名/ワイルドカードを指定します。
たリソースを特定する名 以下のリソース名が有効です。
前を指定します。
・ リソースタイプがconnectionの場合
特定する必要がなく、リ
NORMAL/ADMIN
ソースタイプに該当する
すべてのリソースに対し
・ リソースタイプがqueue/topicの場合
てアクセス制御を有効に
物理接続先の名前
する場合、ワイルドカー
ド(*)を指定することもで
きます。
アクセス規則の種類に
createを指定する場合は、
リソース名を省略してくだ
さい。
アクセス規則の種類
(opeartion)
リソースに対するアクセ
ス規則の種類を指定しま
す。リソースタイプが
queue/topicの場合に
だけ指定します。
以下のいずれかを指定します。
・ produce(送信)
・ consume(受信)
・ browse(検索)(注)
・ create(作成)
(注)リソースタイプがqueueの場合にだけ指定可
能です。
アクセス種別
(access)
対象者に対して、アクセ
スを許可するか、許可し
ないかを指定します。
以下のいずれかを指定します。
・ allow(アクセスを許可する)
・ deny(アクセスを許可しない)
対象種別
(principalsType)
アクセス権の付与対象が、 以下のいずれかを指定します。
ユーザかグループかを
・ user(ユーザ)
指定します。
・ group(グループ)
対象者
(principals)
アクセス権の付与対象を
指定します。カンマ(,)で
区切ることにより、複数の
ユーザ/グループを指
定できます。
・ 対象種別がuserの場合
ユーザ名/ユーザ名のリストを指定します。
- 429 -
要素
意味
設定値
・ 対象種別がgroupの場合
グループ名/グループ名のリストを指定し
ます。
・ ユーザ/グループを指定する必要がない
場合
ワイルドカード(*)を指定します。
注意
アクセス制御プロパティファイルには、ASCIIコード以外を記述できません。ASCIIコードではない文字列を含むアクセス
制御プロパティファイルを使用する場合、Unicodeエスケープ文字(\uXXXX)を使用してください。
アクセス制御プロパティファイルの定義規則
アクセス制御プロパティファイルのアクセス制御の定義規則について、以下に説明します。
・ アクセス制御プロパティファイルに未記載のアクセス権は、拒否されます。
・ 同一条件のアクセス規則が複数存在する場合は、最後に記述されたアクセス規則が有効となります。
例
以下の定義の場合、「queue.q1.consume.allow.user=user3」のアクセス規則が有効となります。
:
:
queue.q1.consume.allow.user=user1,user2
queue.q1.consume.allow.user=user3
・ アクセス規則が複数存在し、かつアクセス種別(allow、deny)以外のアクセス規則の条件が同一である場合、それら
のアクセス規則の定義は無効となります。
例
以下の定義の場合、定義(2)および(3)は無効となり、定義(1)だけが有効となります。
queue.*.consume.allow.user=user1
queue.q1.consume.allow.user=user1
queue.q1.consume.deny.user=user1
(1)
(2)
(3)
・ アクセス規則の優先度を以下に示します。
定義
リソース名
優先度
1. 特定のリソース名
2. ワイルドカード
対象種別/対象
者
1. 特定のユーザ
2. 特定のグループ
3. ワイルドカードを指定したユーザ
4. ワイルドカードを指定したグループ
- 430 -
例
リソース「connection」/リソース「queue」の場合の優先度
優先度
高
低
リソース「connection」
リソース名「queue」
connection.NORMAL.allow.user=use
r1
queue.q1.consume.allow.user=user1
connection.NORMAL.allow.group=u
ser
queue.q1.consume.allow.group=user
connection.NORMAL.allow.user=*
queue.q1.consume.allow.user=*
connection.NORMAL.allow.group=*
queue.q1.consume.allow.group=*
connection.*.allow.user=user1
queue.*.consume.allow.user=user1
connection.*.allow.group=user
queue.*.consume.allow.group=user
connection.*.allow.user=*
queue.*.consume.allow.user=*
connection.*.allow.group=*
queue.*.consume.allow.group=*
リソースタイプがconnectionの場合の注意事項
デフォルトでは、すべてのユーザにNORMAL接続サービスへのアクセス権を付与し、adminグループに所属するユーザ
にADMIN接続サービスへのアクセス権を付与します。
connection.NORMAL.allow.user=*
connection.ADMIN.allow.group=admin
ADMIN接続サービスへのアクセス権を付与する方法は、ユーザリポジトリにより、設定方法が異なります。
単層型ファイルリポジトリ
・ アクセス制御が無効に設定されている場合、adminグループに、ADMIN接続サービスへのアクセス権を付与します。
・ アクセス制御が有効に設定されている場合、アクセス制御プロパティファイルに記述した規則に従い、アクセス権を
付与します。
リソースタイプがqueueまたはtopicの場合の注意事項
デフォルトでは、すべてのユーザ/グループに、任意の物理格納先(queueまたはtopic)のアクセス権を保持しています。
queue.*.produce.allow.user=*
queue.*.consume.allow.user=*
queue.*.browse.allow.user=*
topic.*.produce.allow.user=*
topic.*.consume.allow.user=*
また、リソースタイプがqueue/topicの場合、物理格納先を自動生成するかどうかのアクセス制御を指定可能です。自動
生成に関するアクセス制御のデフォルトは、すべてのユーザ/グループに、メッセージブローカに物理格納先を自動作
成させるアクセス権を保持しています。
物理格納先の自動生成については、「2.18.3 物理格納先の管理」を参照してください。
queue.create.allow.user=*
topic.create.allow.user=*
注意
物理格納先の自動作成のアクセス規則と、物理格納先のアクセス規則が一致している必要があります。
- 431 -
5.7.3 アプリケーションからJMSを利用する際の認証方法
アプリケーションからJMS利用時のメッセージブローカに対する認証は、以下のユーザID/パスワードで認証されます。
deployment descriptor<res-auth>タグの定義が「Application」の場合
認証
getConnectionメソッドの引数
なし
javax.jms.JMSSecurityExceptionを返却します。
ユーザID/パスワードを指定する場合
指定されたユーザID/パスワードで認証します。
deployment descriptor<res-auth>タグの定義が「Container」の場合
呼出し側の認 Interstage deployment descriptorの
証情報(プリン <resource-ref><default-resourceシパル)
principal>の定義 (注)
認証
存在する
-
呼出しコンポーネントの認証情報で認証
します。
存在しない
あり
定義されているユーザ情報で認証します。
なし
JMS接続ファクトリの追加プロパティ
UserName/Passwordのプロパティ値で認
証します。
注)
Message-driven Beanのメッセージ受信に利用するJMS接続ファクトリの認証情報をMessage-driven Bean単位で定義
する場合は、ejb-jar.xmlの<activation-config-property>に定義します。
定義するプロパティ名を以下に示します。定義方法の詳細については、EJB2.1以降のEJB規約の「Activation
Configuration Properties」を参照してください。
- ユーザIDのプロパティ名:UserName
- パスワードのプロパティ名:Password
5.8 Symfowareの監査証跡
Interstage V10 Java EEでアプリケーションがSymfowareに対して操作を行うときに、これらの操作情報を、自動的に
Symfowareの監査ログデータベースに出力します。
監査ログ自動出力機能はSymfowareより提供され、出力情報には、アクセス時間、アクセスIP、実行したSQL文などが含
まれます。追跡調査用の詳細情報を提供するために、Interstage V10 Java EE機能で提供されている監査証跡機能は、
Symfowareの監査ログに、サーバーインスタンス名およびスレッド情報を追加します。
Interstage V10 Java EEでは以下の図のようにSymfowareと連携して、サーバーインスタンス名およびスレッド情報を自動
的にSymfowareの監査ログに出力することができます。
発行されたSQL文などのデータベースアクセス情報とともにスレッド情報が監査ログに出力されるため、どのサーバーイ
ンスタンスのどのスレッドからデータベースのデータを操作したかを特定することも可能です。
- 432 -
5.8.1 Symfowareの監査証跡の実行
Symfowareの監査証跡機能では、InterstageがSymfowareへのコネクション取得時にSymfowareより提供される以下のプ
ロシージャを呼び出し、Symfowareの監査ログに出力する情報を自動的に設定します。
・ CALL RDBII_SYSTEM.RDBII_CLIENT_INF_PROC[?]
引数の値は、CLINET_INFの値となります。
・ CALL RDBII_SYSTEM.RDBII_MODULE_INF_PROC[?,?]
第1引数は、MODULE_INFの値となります。
第2引数は、何も設定されません。
設定に失敗した場合、サーバーログに警告メッセージを出力して、処理を続行します。
CLINET_INF、MODULE_INFについては「5.8.2 出力情報の内容」を参照してください。
5.8.2 出力情報の内容
5.8.2.1 Symfowareの監査ログとの対応
Interstage V10 Java EEとSymfowareが連携して出力される情報(以降、アクセス情報)は以下です。
採取される情報
スレッドID
最大長
Symfowareの監査ログとの対応
CLIENT_INF
64
MODULE_INF
64
スレッド名
サーバーインスタンス名
クライアントアプリケーションの場合、文字列「_CLIENT」をサーバーインスタンス名として出力します。
- 433 -
・ CLINET_INF
CLINET_INFには以下の書式で情報が設定されます。斜体文字の部分は可変情報です。
書式
ThreadID=スレッドID,ThreadName=スレッド名
可変情報
スレッドID:アクセスのスレッドID
スレッド名:アクセスのスレッド名
出力例
ThreadID=3548,ThreadName=httpWorkerThread-28080-4
注意
長さが64を超えた場合、64以降のデータを切り捨てます。
・ MODULE_INF
書式
サーバーインスタンス名
出力例
Instance001
5.8.2.2 各種操作の記録情報
下記のデータベース操作が表AUDITに記録されます。
操作
カラム
ACCESS_TYPE
AUDIT_TEXT
CLIENT_INF
MODULE_INF
物理コネクションの
取得
N:アプリケーション
のCONNECT文の
実行
-
-
-
接続検証のための
SQL文の実行
-
接続検証用のSQL
利用者のスレッド情
報
利用者のサーバー
インスタンス名
アプリケーションが
SQL文の実行
-
アプリケーションの
利用者のスレッド情
報
利用者のサーバー
インスタンス名
物理コネクションのク
ローズ
D:アプリケーション
のDISCONNECT文
の実行
当該物理コネクショ
ンの最終利用者のス
レッド情報
当該物理コネクショ
ンの最終利用者の
サーバーインスタン
ス名
実行したSQL
-
表AUDITについてはSymfowareのマニュアル「Symfoware Server RDB運用ガイド」の「監査ログ表の詳細」を参照してく
ださい。
- 434 -
注意
・ 当該機能を使用するには、監査ログデータベースを設定しなければなりません。
詳細の設定情報は、Symfowareマニュアルの「監査ログデータベースのセットアップ」を参照してください。
・ Symfowareの監査ログ機能は、アクセス時間や、アクセスIP、実行した操作などを自動的に記録します。
詳細は、Symfowareマニュアルにおける監査ログ機能の関連内容を参照してください。
・ 監査証跡機能がSymfowareより提供される2つのストアドプロシージャを実行することも記録されます。このときスレッ
ド情報には古い情報が出力される場合があるので、この情報は無視してください。
- 435 -
第6章 定義項目一覧
ここでは、Java EE実行環境の定義項目について説明します。
定義変更後の再起動について
IJServerクラスタの動作環境またはリソースの定義項目を変更した場合は、IJServerクラスタの再起動が必要となる場合が
あります。再起動が必要かどうかは、各定義項目の説明を参照してください。
指定可能な最大文字列長について
各定義項目のうち、ユーザーが任意の文字列を指定可能な定義項目の最大文字列長は、特に断りのない限り512文字
となります。512文字以外の最大文字列長の制限がある定義項目に関しては、各定義項目の説明に文字列長の制限を
記載しています。
なお、特定の値(true/falseなど)しか指定できない項目や、特定の範囲の数値(0~2147483647など)を指定する項目に関
しては、文字列長の制限はありません。(範囲外の値を指定した場合はエラーとなります。)
システムプロパティ利用時の入力値チェックについて
定義項目の値にシステムプロパティを利用した場合、文字列長や指定可能文字などの入力値チェックは動作しません。
定義値にシステムプロパティを利用する場合、システムプロパティで指定する値の妥当性に注意してください。システム
プロパティについては、「6.8.1 定義時に利用できるプロパティ」を参照してください。
DOSデバイス名の指定ついて
ファイル名やディレクトリ名として使用される設定項目はDOSデバイス名を指定しないでください。
例
ファイル名やディレクトリ名として使用される設定項目
・ IJServerクラスタ名
・ サーバーインスタンス名
・ ログ出力ディレクトリ
・ 各アプリケーションの名前
・ データベースの名前
・ メッセージブローカインスタンス名
他
6.1 ドメインの定義項目
定義項目
項目名
ロケール
省略値
範囲
説明
再起動要否
(※)
以下のいず
れかの形式
で有効なロ
ケールを指
定します。
OSのロケール設定を上書きします。
本項目で指定したロケールが、以下のサー
ビス/プロセスで有効となります。
○
・ languag
e
・ Interstage Java EE DASサービス
・ IJServerクラスタ配下のサーバーインスタ
ンス
- 436 -
項目名
省略値
範囲
説明
再起動要否
(※)
・ languag
e_countr
y
※language
には2桁の小
文字からなる
ISO-639
コードを指定
します。
※countryに
は2桁の大文
字からなる
ISO-3166
コードを指定
します。
Javaバー
ジョン
管理者パス
ワード
・ JDK5.0
・ JDK6.0
以下の文字
列を指定で
きます。
8~20文字、
英数字記号
(0x21-0x7e)
※空白、制
御コードを除
くascii文字
Java EE運用環境で利用するJavaのバージョ
ンを表示します。
本項目を変更するには、Java EE運用環境を
初期化する必要があります。
詳細は、「ijinitコマンド」を参照してください。
管理者パスワードを変更します。
コマンドで管理者パスワードを変更する場合、
asadmin change-admin-passwordサブコマン
ドを利用してください。
○
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
change-admin-passwordサブコマンド
asadminコマンドで
の定義項目名
domainの定義項目
6.2 Interstage Java EE Node Agentサービスの定義項目
- 437 -
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
Node
Agent名
ijna
ijna
Interstage Java EE Node Agentサービ
スのNode Agent名(ijna)です。この値
は変更できません。
システム
JMXコネ
クタ名
system
system
Interstage Java EE Node Agentサービ
スが利用するシステムJMXコネクタ名
(system)です。この値は変更できませ
ん。
×
IJServerク
ラスタの
自動起動
true
Interstage Java EE Node Agentサービ
スの起動時、IJServerクラスタの自動起
動を行うかどうかを指定します。
×
・ true
・ false
・ true:定義済みのすべてのIJServer
クラスタの自動起動を行います。
・ false:IJServerクラスタの自動起動
を行いません。
注) IJServerクラスタ自動起動に20分以
上経過した場合は、Interstage Java EE
Node Agentサービスの停止が実施さ
れて、IJServerクラスタは強制停止され
ます。
Node
Agentの
追加プロ
パティ
JMXコネ
クタ名
system
system
他のサービスからInterstage Java EE
Node Agentサービスへ接続するため
に使用されるJMXコネクタによって使
用されるコネクタの名前(system)です。
この値は変更できません。
JMXコネ
クタプロト
コル
rmi_jrm
p
rmi_jrmp
JMXコネクタがサポートするプロトコル
(rmi_jrmp)です。この値は変更できま
せん。
○
JMXコネ
クタアドレ
ス
0.0.0.0
文字列
JMXコネクタのサーバスタブを登録す
る場合、指定するサービスのIPアドレ
スで指定します。システムに複数のIP
アドレス(ネットワークインタフェース)を
持っている場合は、接続するサーバか
ら参照できる特定のIPアドレスを指定
してください。
すべてのネットワークインタフェースを
指定する場合、0.0.0.0を指定します。
○
JMXコネ
クタポート
空ポート
が使用
される
1~65535
JMXコネクタが使用するRMIレジストリ
の接続ポート番号を指定します。シス
テムで利用可能なポート番号を指定し
てください。
○
一般ユーザでJava EEアプリケーション
を運用する場合、1~1024のポートを
使用することはできません。
- 438 -
項目名
省略値
JMXコネ
クタレルム
名
adminrealm
レルム名
adminrealm
レルムクラ
ス名
com.fuj
itsu.inte
rstage.j
avaee.s
ecurity.
auth.rea
lm.os.O
SRealm
範囲
説明
再起動要否
(※)
adminrealm
このJMXコネクタから運用中のサーバ
のセキュリティレルムの名前です。この
値は変更できません。
○
adminrealm
Interstage Java EE Node Agentサービ
スが利用するレルムの名前(adminrealm)です。この値は変更できません。
JMXコネ
クタの追
加プロパ
ティ
・ com.fuj
itsu.inte
rstage.j
avaee.s
ecurity.
auth.rea
lm.os.O
SRealm
Interstage Java EE Node Agentサービ
スが利用するレルムのクラス名です。
Interstage Java EE DASサービス、
IJServerクラスタのレルム設定と同一の
値を指定してください。
・ com.su
n.enter
prise.se
curity.a
uth.real
m.file.F
ileReal
m
・ com.su
n.enter
prise.se
curity.a
uth.real
m.ldap.
LDAP
Realm
レルムの
追加プロ
パティ
なし
1~512文
字の文字列
追加プロパティを指定できます。
利用できるプロパティについては、「指
定可能なプロパティ」を参照してくださ
い。
すべてのプロパティについて、
Interstage Java EE DASサービス、
IJServerクラスタのレルム設定と同一の
値を指定してください。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
プロパティ
参照/設定可能なプロパティには以下があります(一部を記載しています)。
「Node Agentの追加プロパティ」で指定可能なプロパティ
- 439 -
×
項目名
プロパティ名
アプリケーション展開処理を実行するプロセスのJava VM
オプション
INSTANCE-SYNC-JVM-OPTIONS
「JMXコネクタの追加プロパティ」で指定可能なプロパティ
項目名
プロパティ名
説明
クライアント
ホスト名
client-hostname
Interstage Java EE DASサービスまたはサーバーインスタンスか
ら、Interstage Java EE Node Agentサービスにアクセスする場合
に使用するホスト名です。本指定に誤りがある場合、Interstage
Java EE DASサービスはInterstage Java EE Node Agentサービ
スが起動していないと誤認識します。サーバーインスタンスは
起動に失敗します。
また、RMI-IIOP通信でロードバランス機能を使用する場合、
サーバーインスタンスのリストとして、IIOPリスナーのネットワー
クアドレスとポート番号の情報を接続元に返却しますが、IIOPリ
スナーの定義項目のネットワークアドレスが「0.0.0.0」(デフォル
ト)の場合には、このクライアントホスト名が返却されます。
デフォルトでは、本プロパティにはJava EEをインストールしたマ
シンのホスト名が設定されます。
「レルムの追加プロパティ」で指定可能なプロパティ
「レルムの追加プロパティ」で指定可能なプロパティについては、「6.8.12 セキュリティの定義項目」の「プロパティ」を参照
してください。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
node-agentsの定義項目
6.2.1 ロガーの定義項目
定義項目
項目名
省略値
ログ出力
ディレクトリ
[Java EE
共通
ディレク
トリ]/
nodeage
nts/ijna/
agent/
logs
範囲
文字列
説明
再起動要否
(※)
Interstage Java EE Node Agentサービスのロ
グを出力するディレクトリのルートパスを指定
します。
相対パスを指定した場合、下記のパスが起
点となります。
○
[Java EE共通ディレクトリ]/nodeagents/ijna/
agent
- 440 -
項目名
省略値
範囲
説明
再起動要否
(※)
・ logsize
ログサイズ(logsize)とログ収集時間(time)のど
ちらでローテーションを行うかを指定します。
○
ローテー
ションのタイ
プ
logsize
ログサイズ
1
1~
512(Mbyte)
ログの最大サイズを指定します。ログファイル
が指定したサイズに達するとローテーション
されます。
○
ログ収集時
間
0
0~23(時間)
ローテーションを実行する時間を指定します。
毎日指定した時刻にローテーションされます。
○
世代数
1
1~9(世代)
ローテーションしたログファイルを保管する世
代数を指定します。
保管するログファイルの数が指定した世代数
を超えた場合は、一番古い世代のログファイ
ルが削除されます。
○
・ time
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
4.21 Java EEアプリケーションのログ
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
node-agents.node-agent.log-serviceの定義項目
6.3 サーバーインスタンスの定義項目
定義項目
項目名
サーバーイ
ンスタンス
名
省略値
範囲
説明
サーバーインスタンスの名前です。サーバー
インスタンスの作成時だけ指定できます。
サーバーインスタンス名には、1~28バイトま
での半角英数字および'_'と'-'を含めた文字
列を利用できます。以下に注意してください。
・ 2バイト文字や、先頭と最終の文字に'_'と
'-'は、使用することはできません。
・ すでに存在するサーバーインスタンス名
は大文字・小文字の違いにかかわらず指
定できません。例えば、instance001が定
義済みの場合は、INSTANCE001を新規
に作成することはできません。
- 441 -
再起動要否
(※)
項目名
省略値
範囲
説明
再起動要否
(※)
・ 以下の名前のサーバーインスタンスは作
成できません。
- domain
- ijna
- default
- server
- resources
DOSデバイス名は利用できません。
アプリケー
ション参照
アプリケー
ション参照
の可否
アプリケーションを特定のターゲットに関連付
けます。
true
・ true
・ false
○
アプリケーションの活性状態を変更する場合
は、asadmin enable/disableコマンドを利用で
きます。
アプリケー
ション名
文字列
リソース参
照
リソース参
照の可否
アプリケーションとターゲットの関連付けを有
効または無効にします。
関連付けられたアプリケーションのアプリケー
ション名です。本項目は変更できません。
リソースを特定のターゲットに関連付けます。
true
リソース名
・ true
リソースを有効または無効にします。
・ false
文字列
リソース名を取得します。
システムプ
ロパティ
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
serversの定義項目
6.4 クラスタの定義項目
- 442 -
×
定義項目
項目名
省略値
範囲
IJServerクラ
スタ名
説明
再起動要否
(※)
IJServerクラスタの名前です。IJServerクラスタ
の作成時だけ指定できます。
IJServerクラスタ名には、1~28バイトまでの半
角英数字および'_'を含めた文字列を利用で
きます。以下に注意してください。
・ 2バイト文字や、先頭と最終の文字に'_'は、
使用することはできません。
・ すでに存在するIJServerクラスタ名は大
文字・小文字の違いにかかわらず指定で
きません。例えば、ijserver001が定義済
みの場合は、IJSERVER001を新規に作
成することはできません。
・ 以下の名前のIJServerクラスタは作成で
きません。
- domain
- ijna
- default
- server
- resources
・
DOSデバイス名は利用できません。
アプリケー
ション参照
アプリケー
ション参照
の可否
アプリケーションを特定のターゲットに関連付
けます。
true
・ true
・ false
○
アプリケーションの活性状態を変更する場合
は、asadmin enable/disableコマンドを利用で
きます。
アプリケー
ション名
文字列
リソース参
照
リソース参
照の可否
アプリケーションとターゲットの関連付けを有
効または無効にします。
関連付けられたアプリケーションのアプリケー
ション名です。本項目は変更できません。
リソースを特定のターゲットに関連付けます。
true
・ true
リソースを有効または無効にします。
×
・ false
リソース名
文字列
リソース名を取得します。
ハートビート
ポート
1024~
49151
グループ管理サービスがグループイベントの
待機に使用する通信ポートです。
○
ハートビート
アドレス
文字列
グループ管理サービスがグループイベントを
待機するアドレスです(マルチキャストだけサ
ポート)。
○
・ true
trueの場合、ハートビートが有効になります。
IJServerクラスタ内の各サーバーインスタンス
の起動・停止状態を定期的な信号の受信に
よって認識します。
○
ハートビート
false
・ false
- 443 -
項目名
省略値
範囲
説明
再起動要否
(※)
falseの場合、ハートビートが無効になります。
IJServerクラスタ内のサーバーインスタンスは
すべて起動状態であると認識します。
システムプ
ロパティ
本バージョンでは使用できません。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
本項目は、Interstage Java EE DASサービスでは利用できません。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.21 グループ管理サービス
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
clustersの定義項目
6.4.1 IIOPロードバランスの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
ロードバラ
ンス方式
disable
・ disable
・ ejbdispatch
・ gms
IIOP通信時のロードバランス方式を指定しま
す。
○
・ disable
ロードバランスを使用しません。
・ ejb-dispatch
EJBディスパッチ機能によるロードバラン
スを使用します。
・ gms
グループ管理サービスによるロードバラ
ンスを使用します。
オブジェクト
リファレンス
のフェイル
オーバー設
定
false
・ true
・ false
オブジェクトリファレンスに処理要求を送信し
た時にサーバーインスタンスが停止していた
場合に、同一クラスタの他サーバーインスタ
ンスにフェイルオーバーするかを指定します。
[注意事項]
本機能を有効にすると、EJBディスパッチャが
振り分け対象から除外したサーバーインスタ
ンスに対してもリクエストが要求される場合が
- 444 -
○
項目名
省略値
範囲
説明
再起動要否
(※)
あるため、EJBディスパッチ機能でコマンドに
よる振り分け操作を行う場合には有効にしな
いでください。
EJBディスパッチャ設定
リクエスト
ディスパッ
チ情報ログ
false
ディスパッ
チターゲット
情報ログ
false
ディスパッ
チターゲット
なし
・ false
・ true
・ false
・ true
定義済みの
IJServerクラ
スタ名
この設定を有効(true)に設定した場合、EJB
ディスパッチャが要求をどの対象に振り分け
たかを示す情報をログに出力します。
×
この設定を有効(true)に設定した場合、EJB
ディスパッチャへ振り分け対象となるサーバー
インスタンスの情報をログに出力します。
×
EJBアプリケーションに対するIIOP通信要求
の振り分け対象となるIJServerクラスタ名を指
定します。
[注意事項]
EJBディスパッチャのIJServerクラスタは自分
自身をディスパッチターゲットに指定すること
はできません。
×
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.7.3 EJBディスパッチ機能によるロードバランス
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
clustersの定義項目
6.4.2 JNDIサービスの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
外部ネーミ
ングサービ
スURL
なし
文字列
サーバーインスタンス上のネーミングサービ
スを参照した際に、該当のJNDI名のオブジェ
クトリファレンスが存在しなかった場合、指定
した外部サーバーインスタンスのネーミング
サービスに問い合わせます。この定義にEJB
ディスパッチャが稼動サーバーインスタンス
を指定することで、URLには以下のようにホ
スト名とポート番号をコロン(':')で区切って指
定します。複数指定する場合にはカンマで区
- 445 -
×
項目名
省略値
範囲
説明
再起動要否
(※)
切って複数指定します。複数指定した場合は、
先頭の宛先から接続を試行し、接続に失敗
したら次の宛先に接続してフェイルオーバー
します。
ホスト名:ポート番号,...
[指定例]
localhost:37001,localhost:37002
オブジェクト
リファレンス
キャッシュ
・ true
false
・ false
連携するサーバーのURLから取得したオブ
ジェクトリファレンスをキャッシュし、次回同一
のJNDI名が参照された場合、キャッシュされ
たオブジェクトを再利用するかを指定します。
×
【補足】
クライアントに提供される
「
com.fujitsu.appserv.jndi.remote.object.cache
」と同等の設定です。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.13 JNDI
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
clustersの定義項目
6.5 アプリケーションに関する定義項目
アプリケーションに関する定義項目について説明します。
6.5.1 Java EEアプリケーションの定義項目
定義項目
項目名
名前
省略値
範囲
英数字、また
は特殊文字
(‘-’、‘_’、
‘.’、‘;’)。
先頭には、
英数字また
説明
Java EEアプリケーションの名前です。
DOSデバイス名は利用できません。
- 446 -
再起動要否
(※)
項目名
省略値
範囲
説明
再起動要否
(※)
は‘_’だけ指
定可。
場所
文字列
Java EEアプリケーションの格納先です。
×
ライブラリ
文字列
Java EEアプリケーションが参照するライブラ
リを相対パス、または絶対パスで指定します。
複数のライブラリを指定する場合、各ライブラ
リのパスを以下の文字で区切って指定しま
す。
×
;
:
注意
以下は、指定しないでください。
・ 2byte文字
・ 最後尾に空白文字(スペース、タブ)
指定した場合、クラスを正しくロードできない
可能性があります。
・ true
状態
・ false
この設定を有効(true)に設定した場合、Java
EEアプリケーションの状態が有効となります。
×
×
説明
文字列
Java EEアプリケーションの説明です。
Webサービ
ス名
文字列
Webサービスのモニタリングを設定したWeb
サービスのモジュール名#エンドポイント名で
す。
Webサービスのモニタリングを設定していな
い場合、参照できません。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
状態の変更(有効/
無効の切り替え)と
参照
asadminコマンドの以下のサブコマンド
show-component-statusサブコマンド
enableサブコマンド
disableサブコマンド
asadminコマンドで
の定義項目名
applications.j2ee-applicationの定義項目
- 447 -
6.5.2 Webアプリケーションの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
名前
コンテキスト
ルート
英数字、また
は特殊文字
(‘-’、‘_’、
‘.’、‘;’)。
先頭には、
英数字また
は‘_’だけ指
定可。
Webアプリケーションの名前。
文字列
Webアプリケーションのコンテキストルート。
WebアプリケーションのURLでは、コンテキス
トルートはポート番号の直後に続きます(http://
host:port/context-root/...)。
コンテキストルートは、スラッシュから始めてく
ださい(例: /hello)。
また、以下の文字は指定できません。
DOSデバイス名は利用できません。
×
・ 全角文字(ひらがな、カタカナ、漢字、英
数、記号)
・ 半角文字のカタカナ
・ ‘+’、‘-’、‘.’、‘_’、‘$’、‘/’以外の記号
(‘.’を使用する場合は他の文字と一緒に
使用すること)
・ 空白
・ 64文字を超えるもの
・ Windowsの場合、DOSデバイス名
場所
文字列
Webアプリケーションが展開されているサー
バ上のパス
×
ライブラリ
文字列
Webアプリケーションが参照するライブラリ
(JAR)ファイルを相対パスまたは絶対パスで
指定。複数のライブラリを指定する場合、各
ライブラリのパスを以下の文字で区切って指
定します。
×
;
:
注意
以下は、指定しないでください。
・ 2byte文字
・ 最後尾に空白文字(スペース、タブ)
指定した場合、クラスを正しくロードできない
可能性があります。
- 448 -
項目名
省略値
範囲
説明
再起動要否
(※)
・ true
状態
・ false
この設定を有効(true)に設定した場合、Web
アプリケーションの状態が有効となります。
×
×
説明
文字列
Webアプリケーションを識別しやすくするため
の説明。
Webサービ
ス名
文字列
Webサービスのモニタリングを設定したWeb
サービスのエンドポイント名です。
Webサービスのモニタリングを設定していな
い場合、参照できません。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
状態の変更(有効/
無効の切り替え)と
参照
asadminコマンドの以下のサブコマンド
show-component-statusサブコマンド
enableサブコマンド
disableサブコマンド
asadminコマンドで
の定義項目名
applications.web-moduleの定義項目
6.5.3 EJBモジュールの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
名前
英数字、また
は特殊文字
(‘-’、‘_’、
‘.’、‘;’)。
先頭には、
英数字また
は‘_’だけ指
定可。
EJBモジュールの名前を指定します。
場所
文字列
アプリケーションサーバ内のEJBモジュール
のパスを指定します。
×
ライブラリ
文字列
EJBモジュールが参照するライブラリ(JAR)
ファイルを相対パスまたは絶対パスで指定し
ます。複数のライブラリを指定する場合、各ラ
×
DOSデバイス名は利用できません。
- 449 -
項目名
省略値
範囲
説明
再起動要否
(※)
イブラリのパスを以下の文字で区切って指定
します。
;
:
注意
以下は、指定しないでください。
・ 2byte文字
・ 最後尾に空白文字(スペース、タブ)
指定した場合、クラスを正しくロードできない
可能性があります。
・ true
状態
・ false
この設定を有効(true)に設定した場合、EJB
モジュールの状態が有効となります。
×
×
説明
文字列
EJBモジュールを識別しやすくするための説
明を指定します。
Webサービ
ス名
文字列
Webサービスのモニタリングを設定したWeb
サービスのエンドポイント名です。
Webサービスのモニタリングを設定していな
い場合、参照できません。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
状態の変更(有効/
無効の切り替え)と
参照
asadminコマンドの以下のサブコマンド
show-component-statusサブコマンド
enableサブコマンド
disableサブコマンド
asadminコマンドで
の定義項目名
applications.ejb-moduleの定義項目
6.5.4 アプリケーションクライアントモジュールの定義項目
定義項目
- 450 -
項目名
省略値
範囲
説明
再起動要否
(※)
名前
英数字、また
は特殊文字
(‘-’、‘_’、
‘.’、‘;’)。
先頭には、
英数字また
は‘_’だけ指
定可。
アプリケーションクライアントモジュールの名
前を指定します。
場所
文字列
アプリケーションサーバ内のアプリケーション
クライアントモジュールのパスを指定します。
×
説明
文字列
アプリケーションクライアントモジュールの説
明を指定します。
×
DOSデバイス名は利用できません。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
applications.appclient-moduleの定義項目
6.5.5 コネクタモジュールの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
名前
「.rar file
name」
英数字、また
は特殊文字
(‘-’、‘_’、
‘.’、‘;’)。
先頭には、
英数字また
は‘_’だけ指
定可。
コネクタモジュールの名前を指定します。
場所
文字列
アプリケーションサーバ内のコネクタモジュー
ルのパスを指定します。
×
状態
・ true
この設定を有効(true)に設定した場合、コネ
クタモジュールの状態が有効となります。
×
コネクタモジュールの説明を指定します。
×
・ false
説明
文字列
DOSデバイス名は利用できません。
- 451 -
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
状態の変更(有効/
無効の切り替え)と
参照
asadminコマンドの以下のサブコマンド
show-component-statusサブコマンド
enableサブコマンド
disableサブコマンド
asadminコマンドで
の定義項目名
applications.connector-moduleの定義項目
6.5.6 ライフサイクルモジュールの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
名前
英数字、また
は特殊文字
(‘\’、‘-’、
‘_’、‘.’、
‘/’、‘;’、
‘#’)。
先頭には、
英数字また
は‘_’だけ指
定可。
ライフサイクルモジュールの定義名を指定し
ます。
○
クラス名
文字列
ライフサイクルモジュールの完全修飾クラス
名を指定します。
○
クラスパス
文字列
ライフサイクルモジュールのクラスパスを指定
します。
○
この設定を有効(true)に設定した場合、ライ
フサイクルモジュールの状態が有効となります。
○
ライフサイクルモジュールの読み込み順序を
指定します。値が小さいものから順に実行さ
れます。100以上、システムのMAXINT値未
満の値を指定します。読み込み順を省略し
た場合、または他の設定と等しい場合、読み
込み順序は保証されません。
100未満の値はIJServerクラスタで利用する場
合があります。また、今後のバージョンで利用
する可能性があります。100未満の値を設定
○
状態
・ true
・ false
読み込み順
序
100~システ
ムの
MAXINT値
- 452 -
項目名
省略値
範囲
説明
再起動要否
(※)
する場合は動作確認の実施および互換性を
検証した上で設定してください。
説明
文字列
追加プロパ
ティ
■プロパティ
名:
・半角英数
字、または特
殊文字('-' 、
'_' 、'.'、'/'、
';'、'#')
ライフサイクルモジュールに関する任意の説
明を設定します。
○
・先頭には、
半角英数字
または‘_’の
み指定可。
・1~512文
字の文字列
■プロパティ
値:
1~512文字
の文字列
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
プロパティ
参照/設定可能なプロパティには以下があります。
「追加プロパティ」で指定可能なプロパティ
ユーザー任意のプロパティを設定可能です。「追加プロパティ」で設定したプロパティは、ライフサイクルモジュール内で
取得することができます。
ライフサイクルモジュールでのプロパティの取得方法については、「3.1.9 ライフサイクルモジュールの作成方法」を参照
してください。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
機能説明
参照先
2.23 ライフサイクルモジュール
3.1.9 ライフサイクルモジュールの作成方法
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
create-lifecycle-moduleサブコマンド
delete-lifecycle-moduleサブコマンド
list-lifecycle-modulesサブコマンド
- 453 -
内容
参照先
状態の変更(有効/
無効の切り替え)と
参照
asadminコマンドの以下のサブコマンド
show-component-statusサブコマンド
enableサブコマンド
disableサブコマンド
asadminコマンドで
の定義項目名
applications.lifecycle-moduleの定義項目
6.6 リソースに関する定義項目
リソースに関する定義項目について説明します。
6.6.1 JDBC接続プールの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※1)
接続プール
名
・ 半角英
JDBC接続プールの名前です。
数字、ま
たは特
殊文字
('-' 、 '_'、
'.'、'/'、';')。
・ 先頭に
は、半角
英数字
ま た は
‘_’のみ
指定可。
・ 1 ~ 255
文字の
文字列
データソー
スクラス名
リソースタイ
プ
文字列
・ javax.sq
l.DataSo
urce
・ javax.sq
l.Conne
ctionPo
olDataS
ource
データソースの実装クラスです。
○
データソースのインタフェース名です。リソー
スタイプを指定しなかった場合や、使用する
データソースクラスがリソースタイプに指定し
たインタフェースを実装していない場合には、
javax.sql.DataSourceが指定された場合と同
様の動作をします。
○
JDBC接続プールの説明文です。
○
・ javax.sq
l.XADat
aSource
説明
文字列
追加プロパ
ティ
■プロパティ
名:
半角英数字、
マルチバイト
○
(プロパティ
値)
- 454 -
項目名
省略値
範囲
説明
再起動要否
(※1)
文字、または
特殊文字
(‘-’、‘_’、
‘.’、‘/’、
‘;’、‘#’)。
先頭には、
半角英数字
もしくはマル
チバイト文字
を指定可。
■プロパティ
値:
文字列
プロパティの
値の型が
java.util.Pro
pertiesの場
合、プロパ
ティに
「
{[name=val
ue[,name=va
lue]...]}」とい
う形式で値を
指定します。
nameとvalue
には特殊文
字の(‘,’、
‘=’)を使用
できません。
プール内の接続数
初期および
最小プール
サイズ
8
0~
214748364
7(個)
(最大プール
サイズ以下)
プール内の接続の最小数を指定します。こ
の値は、プールを最初に作成する時のプー
ルに含まれる接続数としても使用されます。
×
最大プール
サイズ
32
1~
214748364
7(個)
(初期および
最小プール
サイズ以上、
かつプール
サイズ変更
量以上)
プールに含まれる接続の最大数を指定します。
プール数が最大プールサイズに達し、すべ
ての接続が使用中の場合、接続要求は
キューに格納されます。使用中の接続が解
放されると、キューにたまった要求が取り出さ
れて処理が実行されます。
×
プールサイ
ズ変更量
2
1~
214748364
7(個)
(最大プール
サイズ以下)
プールのサイズを最大プールサイズおよび
最小プールサイズに対して拡大および縮小
すると、一括処理でプールサイズが変更され
ます。
ただし、プールサイズ変更時には最大プー
ルサイズまで拡大し、最小プールサイズまで
縮小するように変更します。
この値は一括処理での接続の数を指定します。
×
- 455 -
項目名
省略値
範囲
説明
再起動要否
(※1)
この値を過大に設定すると接続の作成と再
利用が遅れ、過小に設定すると効率が落ち
ます。
アイドルタイ
ムアウト
300
0~
214748364
7(秒)
プールで接続がアイドル状態のままでいられ
る最長時間(秒)を指定します。この時間を過
ぎると、接続はプールから削除されます。0が
指定された場合、接続はアイドルタイムアウト
によって、プールから削除されることはありま
せん。
○
(※2)
最大待ち時
間
60000
0~
214748364
7(ミリ秒)
プールに含まれる接続数が最大プールサイ
ズに達し、すべての接続が使用中の場合、
接続を要求するアプリケーションが接続タイ
ムアウトになるまでに待つ時間(ミリ秒)を指定
します。0が指定された場合、接続タイムアウ
トは発生しません。
×
接続検証を有効にします。
×
接続を検証する方法を指定します。
×
接続検証
接続検証
true
・ true
・ false
検証方法
rollback
・ rollback
・ table
・ rollback
アプリケーションサーバは、接続に対して
rollback()メソッドを呼び出して検証します。
・ table
アプリケーションサーバは、指定したデー
タベースのテーブルにSQL文を発行して
検証します。指定するテーブルは実在し、
アクセス可能である必要があります。この
検証方法では指定したテーブルの行数
をカウントするSQL文を発行するため、多
くの行を持つテーブルや、頻繁にアクセ
スされているテーブルは指定しないでく
ださい。
注)検証される接続がコンテナーのトランザク
ション中となる場合、 その接続を検証しませ
ん。
V9.3以前の資産をV10に移行する場合、移
行対象資産にauto-commit、meta-data検証
方法が含まれているときには、これら2つの検
証も同様にサポートします。
なお、移行後にauto-commit、meta-data検証
方法を別の検証方法に変更すると、Java EE
管理コンソールではauto-commit、meta-data
オプションに戻せなくなります。
この場合、コマンドでauto-commit、meta-data
オプションに変更してください。
データベースがPowerGres Plusの場合、
rollback検証方法で無効なデータベース接
続を検出できないため、table検証方法で接
続検証を行うことを推奨します。
- 456 -
項目名
省略値
範囲
説明
再起動要否
(※1)
PowerGres Plus以外のデータベースでもテー
タベースの仕様によりrollback検証方法で無
効なデータベース接続を検出できない場合
があります。
テーブル名
文字列
「検証方法」でtableを選択した場合は、ここで
テーブル名を指定します。指定したテーブル
に以下のようなSQL文を実行し、接続を検証
します。
×
・ SELECT COUNT(*) FROM テーブル名
すべての障
害で
false
・ true
・ false
この設定を有効にした場合、1つの接続障害
を検出すると、アプリケーションサーバはプー
ルに含まれるすべての接続を閉じ、初期およ
び最小プールサイズで指定した数だけ接続
を再確立します。この際、クローズされた接続
は接続検証に失敗した接続としてみなされま
す。
無効の場合は、クライアントからの接続要求
の契機でプールから取り出した接続に対して
接続検証を行い、検証に失敗した接続のみ
を破棄します。
×
トランザクション管理されていない接続を返し
ます。
×
本機能が有効なJDBCリソースの場合、JTAト
ランザクション開始後にオープンした接続だ
けトランザクションに参加します。
×
プール内で生成された接続が、指定されたト
ランザクション遮断レベルに設定されます。
×
アプリケーションに返却される接続が、常にト
ランザクション遮断で指定した遮断レベルに
設定されることを保証します。
×
異常に長い時間実行されているクエリーを終
了させるまでの時間(秒)を指定します。
アプリケーションサーバは、Statement、
PreparedStatement、CallableStatementオブ
ジェクトに対してsetQueryTimeout()メソッドを
実行し、実行タイムアウト値を設定します。
アプリケーション側でも明示的に
×
トランザクション管理
非トランザク
ション接続
false
トランザク
ション開始
後の接続の
み参加
false
トランザク
ション遮断
JDBCド
ライバに
よって設
定される
デフォル
トの遮断
レベル
・ true
・ false
・ true
・ false
・ readuncomm
itted
・ readcommitt
ed
・ repeatab
le-read
・ serializa
ble
遮断レベル
true
・ true
・ false
詳細属性
文のタイム
アウト
-1
-1~
2147483647
- 457 -
項目名
省略値
範囲
説明
再起動要否
(※1)
setQueryTimeout()メソッドを発行した場合、
以下の順番で設定が行われます。
1. アプリケーションサーバが、文のタイム
ア ウ ト に 指 定 し た 時 間 で
setQueryTimeout()メソッドを発行します。
2. ア プ リ ケ ー シ ョ ン か ら
setQueryTimeout()メソッドを発行します。
setQueryTimeout()メソッドの詳細は、
java.sql.StatementインタフェースのJavaDOC
やJDBCドライバのマニュアルを参照してくだ
さい。
0以下の値を指定した場合は、この属性が無
効(setQueryTimeout()メソッドを実行しない)
であることを示します。
プーリング
(※4)
true
リークタイム
アウト
0
リーク再要
求
false
作成再試行
回数
0
再試行間隔
10
・ true
Interstage側のプーリング機能を有効にします。
JDBCドライバ側のプーリング機能を使用す
る場合は、この設定を無効に設定し、
Interstage側のプーリング機能を無効にしてく
ださい。
×
正常な接続に使われる最大時間(秒)を指定
します。接続の使用時間がこの値を超えた場
合、その接続にリークが発生したと見なしま
す。
接続リークが発生した場合、接続がオープン
されたときのスタックトレースがサーバーログ
に記録され、JDBC接続プールのモニタ機能
により、リークが発生した接続の数を取得で
きます。
リーク再要求をtrueに設定した場合、リークが
発生した接続は自動的にその物理接続を破
棄します。
×
この設定を有効にした場合、リークが発生し
た接続は自動的にその物理接続を破棄しま
す。
×
0~
2147483647
新しい接続の作成に失敗した場合、再試行
する回数を指定します。
0が指定された場合、再試行しません。
×
1~
2147483647
接続の作成を再試行する間隔(秒)を指定し
ます。この値は、再試行回数が 0 よりも大き
い場合、有効となります。
×
この設定を有効にした場合、Symfowareの監
査ログにアクセス情報を出力します
○(※3)
・ false
0~
2147483647
・ true
・ false
監査証跡
監査ログへ
のアクセス
情報出力
false
・ true
・ false
※1:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
※2:アプリケーションからの初回アクセス時の設定値が有効になります。
- 458 -
※3:監査ログへのアクセス情報出力機能を有効から無効に変更しても、CLIENT_INFとMODULE_INFに古い情報が出
力する可能性があります。この場合プロセスを再起動してください。監査ログへのアクセス情報出力機能を無効から有効
に変更しても、CLIENT_INFとMODULE_INFに情報が出力しない可能性があります。この場合プロセスを再起動してく
ださい。
※4:JDBCドライバ側で提供されているプーリング機能を有効にすると、Interstage側のプーリング機能と冗長に動作する
可能性があります。JDBCドライバ側のプーリング機能を有効にする場合は、Interstage側のプーリング機能を無効にして
ください。
Interstage側のプーリング機能が無効の場合、以下のJDBC接続プールの定義項目は無効となります。
・ 初期および最小プールのサイズ
・ 最大プールのサイズ
・ プールサイズの変更量
・ アイドルタイムアウト
・ 最大待ち時間
・ すべての障害で
SymfowareのJDBCドライバ側のプーリング機能はサポートしません。Symfowareを利用する場合、本設定をtrueに設定し
てください。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.16 データベース連携/JDBC
チューニング方法
「チューニングガイド」-「データベース連携環境のチューニング」
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
create-jdbc-connection-poolサブコマンド
delete-jdbc-connection-poolサブコマンド
list-jdbc-connection-poolsサブコマンド
asadminコマンドで
の定義項目名
resources.jdbc-connection-poolの定義項目
6.6.2 JDBCリソースの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
JNDI
名
・ 半角英数字、半角空白、 データソースを
または特殊文字(‘!’、’
( ‘ 、 ’ ) ’ 、 ’ ‘、’.’、’/’、’;’、’<’、’
>’、’@’、’\’、’^’、’
_’、’`’、’{‘、’|’、’}’、’
~’)
lookupするための
JNDI名です。
- 459 -
項目名
省略値
範囲
説明
再起動要否
(※)
・ 先頭には、半角空白を除
く上記の任意の文字を指
定可
・ 1~255文字の文字列
接続
プール
名
文字列
関連付けされた
JDBC接続プールの
名前です。
説明
文字列
JDBCリソースの説明
文です。
×
JDBCリソースを有効
または無効にします。
×
状態
・ true
true
・ false
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.16 データベース連携/JDBC
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
create-jdbc-resourceサブコマンド
delete-jdbc-resourceサブコマンド
list-jdbc-resourcesサブコマンド
asadminコマンドで
の定義項目名
resources.jdbc-resourceの定義項目
6.6.3 JMS接続ファクトリの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※1)
JNDI名
・ 半角英
JMS接続ファクトリをlookupするためのJNDI
数字、ま 名です。
たは特
殊文字
('-' 、 '_'、
'.'、'/'、';')。
・ 先頭に
は、半角
英数字
ま た は
- 460 -
項目名
省略値
範囲
説明
再起動要否
(※1)
‘_’のみ
指定可。
・ 1 ~ 255
文字の
文字列
・ javax.jm
リソースタイ
プ
JMS接続ファクトリのタイプです。
s.Topic
Connect
ionFacto
ry
・ javax.jm
s.Queue
Connect
ionFacto
ry
・ javax.jm
s.Conne
ctionFac
tory
説明
状態
文字列
true
・ true
JMS接続ファクトリの説明文です。
○
JMS接続ファクトリの有効/無効を指定します。
×
・ false
追加プロパティ
UserName
guest
■プロパティ
値:
文字列
メッセージブローカとの接続時に使用する
ユーザ名です。
○
Password
guest
■プロパティ
値:
文字列
メッセージブローカとの接続時に使用するパ
スワードです。
○
ClientId
■プロパティ
値:
文字列
永続的なサブスクライバ(durable subscriber)
が使用するJMS接続ファクトリのクライアント
IDです。
○
任意のプロ
パティ名
■プロパティ
名:
半角英数字、
マルチバイト
文字、または
特殊文字
(‘-’、‘_’、
‘.’、‘/’、
‘;’、‘#’)。
先頭には、
半角英数字
もしくはマル
チバイト文字
を指定可。
■プロパティ
値:
文字列
○
- 461 -
項目名
省略値
範囲
説明
再起動要否
(※1)
プール設定
初期および
最小プール
サイズ
8
0~
2147483647
(最大プール
サイズ以下)
プール内の接続の最小数を指定します。本
値は、最初のプール作成時に、プールに含
まれる接続数としても使用されます。
×
最大プール
サイズ
32
1~
2147483647
(初期および
最小プール
サイズ以上、
かつプール
サイズ変更
量以上)
プールに含まれる接続の最大数を指定します。
プール数が最大プールサイズに達し、すべ
ての接続が使用中の場合、接続要求は
キューに格納されます。使用中の接続が解
放されると、キューにたまった要求が取り出さ
れて処理が実行されます。
×
プールサイ
ズ変更量
2
1~
2147483647
(最大プール
サイズ以下)
プールのサイズを最大プールサイズ/最小
プールサイズに対して拡大/縮小を行うと、
一括処理でプールサイズが変更されます。
ただし、プールサイズ変更時には最大プー
ルサイズまで拡大し、最小プールサイズまで
縮小するように変更します。
本値は、一括処理での接続数を指定します。
本値を過大に設定すると、接続の作成と再
利用が遅れます。過小に設定すると、効率が
落ちます。
×
アイドルタイ
ムアウト
300
0~
2147483647
プールにおいてアイドル状態のままで接続で
きる最長時間(秒)を指定します。この時間を
過ぎると、接続はプールから削除されます。
0を指定すると、アイドルタイムアウトにより、
接続はプールから削除されません。
○(※2)
最大待ち時
間
60000
0~
2147483647
接続を要求するアプリケーションが接続タイ
ムアウトになるまでの待ち時間(ミリ秒)を指定
します。0を指定すると、接続タイムアウトは発
生しません。
×
すべての障
害で
false
本設定を有効にした場合、1つの接続障害を
検出すると、アプリケーションサーバはプー
ルに含まれるすべての接続を閉じて、初期/
最小プールサイズで指定した数だけ接続を
再確立します。このとき、クローズされた接続
は接続検証に失敗した接続とみなされます。
無効の場合は、クライアントからの接続要求
の契機でプールから取り出した接続に対して
接続検証を行い、検証に失敗した接続だけ
を破棄します。
×
接続ファクトリがサポートするトランザクション
のレベルです。
×
接続検証を有効にします。
×
・ true
・ false
・ XATran
トランザク
ションサ
ポート
saction
・ LocalTr
ansactio
n
・ NoTrans
action
接続検証
false
・ true
- 462 -
項目名
省略値
範囲
説明
再起動要否
(※1)
・ false
※1:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
※2:アプリケーションからの初回アクセス時の設定値が有効になります。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
機能説明
参照先
JMSの提供機能
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
create-jms-resourceサブコマンド
delete-jms-resourceサブコマンド
list-jms-resourcesサブコマンド
asadminコマンドで
の定義項目名
resources.connector-resourceの定義項目
resources.connector-connection-poolの定義項目
6.6.4 JMS送信先リソースの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
JNDI名
・ 半角英数字、半角空
白、または特殊文字
(‘!’、’(‘、’)’、’‘、’.’、’/’、’;’、’<’、’
>’、’@’、’\’、’^’、’
_ ’ 、 ’ ` ’ 、 ’
{‘、’|’、’}’、’~’)
JMS送信先リソースを
lookupするための
JNDI名です。
・ 先頭には、半角空白を
除く上記の任意の文字
を指定可
・ 1~255文字の文字列
物理送
信先名
・ 半角英数字、下線文
字(‘_’)、またはドル記
号(‘$’)
・ 先頭には、半角数字を
JMS送信先リソースが
参照するメッセージブ
ローカの物理格納先
名です。
除く上記の任意の文字
を指定可
・ 1~512文字の文字列
- 463 -
○
項目名
省略値
範囲
説明
再起動要否
(※)
・
リソース
タイプ
JMS送信先リソースの
タイプです。
注)すでに作成した
JMS送信先リソースの
リソースタイプを変更
する場合は、対象の
JMS送信先リソースを
再作成してください。
○
・ 文字列
JMS送信先リソースの
説明文です。
○
・ true
JMS送信先リソースの
有効/無効を指定し
ます。
×
javax.jms.Topic
javax.jms.Queue
説明
状態
文 字 列 が
「mq.sys.dmq」でリソー
ス タ イ プ が
javax.jms.Queue の 指
定
true
・ false
追加プロ
パティ
・ ■プロパティ名:
○
半角英数字、マルチバ
イト文字、または特殊
文 字 ( ‘ - ’ 、 ‘ _ ’ 、 ‘ . ’、
‘/’、‘;’、‘#’)。
先頭には、半角英数字
もしくはマルチバイト文
字を指定可。
■プロパティ値:
文字列
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
機能説明
参照先
JMSの提供機能
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
create-jms-resourceサブコマンド
delete-jms-resourceサブコマンド
list-jms-resourcesサブコマンド
asadminコマンドで
の定義項目名
resources.admin-object-resourceの定義項目
6.6.5 JavaMailセッションの定義項目
- 464 -
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
・ 半 角 英 数 字、 JNDI名を取得します。
JNDI
名
半角空白、ま
たは特殊文字
( ‘ ! ’ 、 ’
(‘、’)’、’‘、’.’、’/’、’;
’、’<’、’>’、’
@’、’\’、’
^’、’_’、’
` ’ 、 ’
{‘、’|’、’}’、’
~’)
・ 先頭には、半
角空白を除く
上記の任意の
文字を指定可
・ 1 ~ 255 文 字
の文字列
ストア
プロト
コル
imap
文字列
使用するストアオブジェクト通信
の方法を定義します。
×
ストア
プロト
コルク
ラス
com.su
n.mail.
imap.I
MAPS
tore
文字列
目的のストアプロトコルを実装す
るストア通信メソッドクラスを指定
します。
×
トランス
ポート
プロト
コル
smtp
文字列
トランスポート通信の方法を指定
します。
×
トランス
ポート
プロト
コルク
ラス
com.su
n.mail.
smtp.S
MTPT
ranspo
rt
文字列
トランスポートクラスの通信メソッ
ドを定義します。
×
メール
ホスト
文字列
デフォルトメールサーバーのホス
ト名。プロトコル固有のホストプロ
パティが提供されていない場合、
StoreオブジェクトとTransportオ
ブジェクトの接続メソッドはこの値
を使用します。この名前は実際
のホスト名として解決可能である
必要があります。
×
デフォ
ルト
ユーザ
文字列
メールサーバへの接続時に渡さ
れるユーザ名。プロトコル固有の
usernameプロパティが提供され
ていない場合、Storeオブジェク
×
- 465 -
項目名
省略値
範囲
説明
再起動要否
(※)
トとTransportオブジェクトの接続
メソッドはこの値を使用します。
デフォ
ルトの
返信用
アドレ
ス
文字列
デバッ
グ
false
状態
true
・ true
・ false
・ true
・ false
説明
文字列
追加プ
ロパ
ティ
・ ■プロパティ
名:
半 角 英 数 字、
マルチバイト
文字、または
特 殊 文 字
( ‘ - ’ 、 ‘ _ ’、
‘.’、‘/’、‘;’、
‘#’)。
先頭には、半
角英数字もし
くはマルチバ
イト文字を指
定可。
■プロパティ
値:
文字列
デフォルトユーザの電子メール
アドレス。
「username@hostdomain」の形
式で入力します。
×
デバッグ情報の出力を指定しま
す。
指定した値はSession Propertyの
mail.debugに設定されます。
×
リソースをすべてのIJServerクラ
スタやInterstage Java EE DAS
サービスで有効(true)とするかど
うかを指定します。
コンポーネントの説明を入力しま
す。
追加するSession Propertyのキー
と値のペアを指定します。定義
項目と重複するプロパティを指
定した場合はこの定義で上書き
されます。指定可能なSession
PropertyはJavaMail APIのドキュ
メントを参照してください。
注) キーに使用する値でピリオ
ド‘.’の部分はハイフン‘-’に置き
換えて指定してください。
例) mail.debug は mail-debug と
指定。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
機能説明
参照先
4.14.2 JavaMailを利用する場合の手順
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
create-javamail-resourceサブコマンド
delete-javamail-resourceサブコマンド
list-javamail-resourcesサブコマンド
- 466 -
×
内容
参照先
asadminコマンドで
の定義項目名
resources.mail-resourceの定義項目
6.6.6 コネクタ接続プールの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※1)
・ 半角英
接続プール
名
コネクタ接続プールの名前です。
数字、ま
たは特
殊文字
('-' 、 '_'、
'.'、'/'、';')。
・ 先頭に
は、半角
英数字
ま た は
‘_’のみ
指定可。
・ 1 ~ 255
文字の
文字列
リソースアダ
プタ名
文字列
関連付けされたリソースアダプタの名前です。
○
接続定義名
文字列
接続ファクトリのインタフェース名です。
○
説明
文字列
コネクタ接続プールの説明文です。
○
追加プロパ
ティ
■プロパティ
名:
半角英数字、
マルチバイト
文字、または
特殊文字
(‘-’、‘_’、
‘.’、‘/’、
‘;’、‘#’)。
先頭には、
半角英数字
もしくはマル
チバイト文字
を指定可。
■プロパティ
値:
文字列
○
プール内の接続数
初期および
最小プール
サイズ
8
0~
2147483647
(最大プール
サイズ以下)
プール内の接続の最小数を指定します。こ
の値は、プールを最初に作成する時のプー
ルに含まれる接続数としても使用されます。
- 467 -
×
項目名
省略値
範囲
説明
再起動要否
(※1)
最大プール
サイズ
32
1~
2147483647
(初期および
最小プール
サイズ以上、
かつプール
サイズ変更
量以上)
プールに含まれる接続の最大数を指定します。
プール数が最大プールサイズに達し、すべ
ての接続が使用中の場合、接続要求は
キューに格納されます。使用中の接続が解
放されると、キューにたまった要求が取り出さ
れて処理が実行されます。
×
プールサイ
ズ変更量
2
1~
2147483647
(最大プール
サイズ以下)
プールのサイズを最大プールサイズおよび
最小プールサイズに対して拡大および縮小
すると、一括処理でプールサイズが変更され
ます。ただし、プールサイズ変更時には最大
プールサイズまで拡大し、最小プールサイズ
まで縮小するように変更します。
この値は一括処理での接続の数を指定します。
この値を過大に設定すると接続の作成と再
利用が遅れ、過小に設定すると効率が落ち
ます。
×
アイドルタイ
ムアウト
300
0~
2147483647
プールで接続がアイドル状態のままでいられ
る最長時間(秒)を指定します。この時間を過
ぎると、接続はプールから削除されます。0が
指定された場合、接続はアイドルタイムアウト
によって、プールから削除されることはありま
せん。
○
(※2)
最大待ち時
間
60000
0~
2147483647
接続を要求するアプリケーションが接続タイ
ムアウトになるまでに待つ時間(ミリ秒)を指定
します。0が指定された場合、接続タイムアウ
トは発生しません。
×
接続検証を有効にします。
×
この設定を有効にした場合、1つの接続障害
を検出すると、アプリケーションサーバはプー
ルに含まれるすべての接続を閉じ、初期およ
び最小プールサイズで指定した数だけ接続
を再確立します。この際、クローズされた接続
は接続検証に失敗した接続としてみなされま
す。
無効の場合は、クライアントからの接続要求
の契機でプールから取り出した接続に対して
接続検証を行い、検証に失敗した接続のみ
を破棄します。
×
ra.xmlに記載されたトランザクションサポート
レベルを、指定したより低いレベルへ上書き
します。
×
接続検証
・ true
接続検証
・ false
すべての障
害で
false
・ true
・ false
トランザクション管理
トランザク
ションサ
ポート
・ XATran
saction
・ LocalTr
ansactio
n
- 468 -
項目名
省略値
範囲
説明
再起動要否
(※1)
・ NoTrans
action
コネクタのセキュリティ
セキュリ
ティーマッ
プ名
・ 半角英
特定のセキュリティーマップの参照に使用す
数字、ま る名前です。
たは特
殊文字
('-' 、 '_'、
'.'、'/'、';')。
・ 先頭に
は、半角
英数字
ま た は
‘_’のみ
指定可。
・ 1 ~ 512
文字の
文字列
Principal(
主体)
文字列
適切なバックエンド主体にマッピングされるア
プリケーションの呼び出し側ユーザー名です。
○
ユーザーグ
ループ
文字列
適切なバックエンド主体にマッピングされるア
プリケーションの呼び出し側グループ名です。
○
ユーザー名
文字列
バックエンド主体のユーザー名です。EISの
ユーザー名に該当します。
○
パスワード
文字列
バックエンド主体のパスワードです。EISユー
ザーのパスワードに該当します。
○
※1:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
※2:アプリケーションからの初回アクセス時の設定値が有効になります。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.19 コネクタの提供機能
チューニング方法
「チューニングガイド」-「コネクタのチューニング」
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
create-connector-connection-poolサブコマンド
delete-connector-connection-poolサブコマンド
list-connector-connection-poolsサブコマンド
create-connector-security-mapサブコマンド
delete-connector-security-mapサブコマンド
update-connector-security-mapサブコマンド
list-connector-security-mapsサブコマンド
- 469 -
内容
asadminコマンドで
の定義項目名
参照先
resources.connector-connection-poolの定義項目
6.6.7 コネクタリソースの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
・ 半角英数字、半角空
JNDI
名
白、または特殊文字
(‘!’、’(‘、’)’、’‘、’.’、’/’、’;’、’
<’、’>’、’@’、’
\’、’^’、’_’、’`’、’
{‘、’|’、’}’、’~’)
接続ファクトリをlookupする
ためのJNDI名です。
・ 先頭には、半角空白
を除く上記の任意の
文字を指定可
・ 1~255文字の文字
列
接続
プール
名
文字列
関連付けされたコネクタ接
続プールの名前です。
○
説明
文字列
コネクタリソースの説明文
です。
○
・ true
コネクタリソースを有効また
は無効にします。
×
状態
true
・ false
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
機能説明
参照先
2.19 コネクタの提供機能
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
create-connector-resourceサブコマンド
delete-connector-resourceサブコマンド
list-connector-resourcesサブコマンド
asadminコマンドで
の定義項目名
resources.connector-resourceの定義項目
- 470 -
6.6.8 管理オブジェクトリソースの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
・ 半 角 英 数 字、 管理対象オブジェクトをlookup
JNDI
名
半角空白、ま
たは特殊文字
( ‘ ! ’ 、 ’
(‘、’)’、’‘、’.’、’/’、’;
’、’<’、’>’、’
@’、’\’、’
^’、’_’、’
` ’ 、 ’
{‘、’|’、’}’、’
~’)
するためのJNDI名です。
・ 先頭には、半
角空白を除く
上記の任意の
文字を指定可
・ 1~255文字の
文字列
リソー
スタイ
プ
文字列
管理対象オブジェクトのインタ
フェース名です。
○
リソー
スアダ
プタ名
文字列
関連付けされたリソースアダプ
タの名前です。
○
説明
文字列
管理オブジェクトリソースの説
明文です。
○
・ true
管理オブジェクトリソースを有
効または無効にします。
×
状態
true
・ false
追加プ
ロパ
ティ
■プロパティ名:
半角英数字、マル
チバイト文字、また
は特殊文字(‘-’、
‘_’、‘.’、‘/’、‘;’、
‘#’)。
先頭には、半角英
数字もしくはマル
チバイト文字を指
定可。
■プロパティ値:
文字列
○
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
- 471 -
内容
参照先
機能説明
2.19 コネクタの提供機能
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
create-admin-objectサブコマンド
delete-admin-objectサブコマンド
list-admin-objectsサブコマンド
asadminコマンドで
の定義項目名
resources.admin-object-resourceの定義項目
6.6.9 リソースアダプタ定義情報の定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
リソースアダ
プタ名
半角英数字、 関連付けされたリソースアダプタの名前です。
または特殊
文字(‘¥’、
‘-’、‘_’、
‘.’、‘/’、
‘;’、‘#’)。
先頭には、
英数字また
は‘_’のみ指
定可。
スレッドプー
ルID
文字列
リソースアダプタからの作業要求を処理する
スレッドプールのIDです。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
機能説明
参照先
2.19 コネクタの提供機能
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
create-resource-adapter-configサブコマンド
delete-resource-adapter-configサブコマンド
list-resource-adapter-configsサブコマンド
asadminコマンドで
の定義項目名
resources.resource-adapter-configの定義項目
- 472 -
○
6.6.10 カスタムリソースの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
・ 半 角 英 数 字、 JNDI名前空間で一意となる名前
JNDI
名
半角空白、ま
たは特殊文字
( ‘ ! ’ 、 ’
(‘、’)’、’‘、’.’、’/’、’;
’、’<’、’>’、’
@’、’\’、’
^’、’_’、’
` ’ 、 ’
{‘、’|’、’}’、’
~’)
を指定します。
・ 先頭には、半
角空白を除く
上記の任意の
文字を指定可
・ 1 ~ 255 文 字
の文字列
リソー
スタイ
プ
文字列
完全修飾形式でオブジェクトの
型を指定します。
×
ファクト
リクラス
文字列
完全修飾形式でリソースのファク
トリクラスを指定します。
javax.naming.spi.ObjectFactory
を実装する必要があります。
×
説明
文字列
カスタムリソースの説明文です。
×
・ true
カスタムリソースを有効または無
効にします。
×
ファクトリクラスで利用できる固有
のプロパティを指定します。
○
状態
true
・ false
追加プ
ロパ
ティ
文字列
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
- 473 -
内容
参照先
create-custom-resourceサブコマンド
delete-custom-resourceサブコマンド
list-custom-resourcesサブコマンド
asadminコマンドで
の定義項目名
resources.custom-resourceの定義項目
6.6.11 外部リソースの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
・ 半角英数字、 JNDI名前空間で一意となる名
JNDI名
半 角 空 白、 前を指定します。
または特殊
文
字
(‘!’、’
(‘、’)’、’‘、’.’、’/’、
’;’、’<’、’
>’、’@’、’
\’、’^’、’
_’、’`’、’
{‘、’|’、’}’
、’~’)
・ 先 頭 に は、
半角空白を
除く上記の
任意の文字
を指定可
・ 1~255文字
の文字列
リソース
タイプ
文字列
完全修飾形式でオブジェクト
の型を指定します。
×
ファクトリ
クラス
文字列
完全修飾形式でリソースのファ
クトリクラスを指定します。
javax.naming.spi.InitialConte
xtFactoryを実装する必要があ
ります。
×
JNDI検
索
文字列
外部リポジトリの検索に使用す
るJNDI名を指定します。
×
説明
文字列
外部リソースの説明文です。
×
外部リソースを有効または無効
にします。
×
ファクトリクラスで利用できる固
有のプロパティを指定します。
○
状態
true
・ true
・ false
追加プロ
パティ
文字列
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
- 474 -
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
create-jndi-resourceサブコマンド
delete-jndi-resourceサブコマンド
list-jndi-resourcesサブコマンド
asadminコマンドで
の定義項目名
resources.external-jndi-resourceの定義項目
6.7 メッセージブローカのオプションプロパティ
Interstage JMSのメッセージブローカのオプションプロパティについて説明します。
ブローカ起動時に指定する場合は、imqbrokerdコマンドで以下のオプションを指定してください。
起動中のブローカの設定を変更する場合は、imqcmdコマンドでオプションを指定してください。
6.7.1 接続サービスに関するプロパティ
プロパティ
構成情報
設定値
省略値
コマンドでの設定
(値の範囲)
imqbrok
erd
imqcmd
imq.<serviceN
ame>.max_thr
eads (注1)(注
2)
指定された接続サービス
のスレッドプールに保持
するスレッドの最大数を
指定します。 (注3)
整数値
jms:
1000
admin:
10
○
(2~
214748
3647)
△ (注4)
(2~
214748
3647)
imq.<serviceN
ame>.min_thr
eads (注1)(注
2)
指定された接続サービス
のスレッドプールに保持
するスレッドの最小数を
指定します。
整数値
jms:
10
admin:
4
○
(0~
214748
3647)
△ (注5)
(0~
214748
3647)
imq.<serviceN
ame>.threadpo
ol_model (注
1)
スレッドプール管理のス
dedicate
レッドモデルを指定します。 d
shared
・ dedicated
接続ごとに、受信用
と送信用の2つの専
用スレッドを使用しま
す。
dedicate
d
○
×
0 (注7)
○
(0~
65535)
△ (注8)
(1~
65535)
・ shared
メッセージの送受信
時に共有スレッドによ
り接続を処理します。
imq.<serviceN
ame>.tcp.port
(注1)(注6)
指定された接続サービス
のポート番号を指定しま
す。
整数値
- 475 -
○:設定可能
△:別名で設定可能 ×:設定不可
注1)
serviceNameには、接続サービスを表す以下の値を指定します。
- admin
- jms
接続サービスの詳細については、「2.18.4 接続サービス」を参照してください。
注2)
max_threadsに設定する値は、min_threadsに設定する値以上の値を設定してください。
注3)
以下の式で見積もって設定してください。
- threadpool_modelがdedicatedの場合
[serviceNameがjmsの場合]
( (1) + (2) + (3) + (4) ) × 2 以上
(1) JMSを使用するIJServerクラスタのサーバーインスタンス数
IJServerクラスタが複数ある場合は、IJServerクラスタごとの合計数です。
(2) IJServerクラスタに配備されたMessage-driven Beanアプリケーション数×サーバーインスタンス数
IJServerクラスタが複数ある場合は、IJServerクラスタごとの合計数です。
(3) JMS接続ファクトリを参照するIJServerクラスタのサーバーインスタンス数 × JMS接続ファクトリに設定され
ている最大プールサイズ
JMS接続ファクトリが複数存在する場合は、JMS接続ファクトリごとに算出した数の合計数です。
(4) JMS接続ファクトリを参照するJMSクライアントアプリケーション(アプリケーションクライアントコンテナ)数 ×
JMS接続ファクトリに設定されている最大プールサイズ
JMS接続ファクトリが複数存在する場合は、JMS接続ファクトリごとに算出した数の合計数です。
- 476 -
上記の環境の場合、以下のように見積もってください。
(1
)
[IJServerクラスタA] サーバーインスタンス数:3
[IJServerクラスタB] サーバーインスタンス数:2
したがって、3 + 2 = 5
(2
)
[IJServerクラスタA] Message-driven Beanアプリケーション数:2
[IJServerクラスタA] サーバーインスタンス数:3
[IJServerクラスタB] Message-driven Beanアプリケーション数:1
[IJServerクラスタB] サーバーインスタンス数:2
したがって、( 2 × 3 ) + ( 1 × 2 ) = 8
(3
)
[JMS接続ファクトリQueueCF] 最大プールサイズ:32
[JMS接続ファクトリQueueCF]参照するIJServerクラスタAのサーバーインスタンス数:3
[JMS接続ファクトリTopicCF] 最大プールサイズ:16
[JMS接続ファクトリTopicCF]参照するIJServerクラスタBのサーバーインスタンス数:2
したがって、( 3 × 32 ) + ( 2 × 16 ) = 128
(4
)
[JMS接続ファクトリQueueCF] 最大プールサイズ:32
[JMS接続ファクトリQueueCF]参照するアプリケーションクライアントコンテナ数:1
[JMS接続ファクトリTopicCF] 最大プールサイズ:16
[JMS接続ファクトリTopicCF]参照するアプリケーションクライアントコンテナ数:3
したがって、( 1 × 32 ) + ( 3 × 16 ) = 80
上記の表より、imq.jms.max_threadsに設定する値は、以下の値となります。
( (1) + (2) + (3) + (4) ) × 2 = ( 5 + 8 + 128 + 80 ) × 2 = 442 以上
[serviceNameがadminの場合]
( (1) + (2) ) × 2 以上
(1) メッセージブローカを参照するサーバーインスタンス数
(2) imqcmdコマンドの実行多重度
- threadpool_modelがsharedの場合
メッセージブローカ上で利用制限したいスレッドの最大数をadminサービス、jmsサービスごとに設定してください。
注4)
imqcmdで設定する場合は、「-o maxThreads=設定値」を指定してください。
注5)
imqcmdで設定する場合は、「-o minThreads=設定値」を指定してください。
注6)
adminサービスとjmsサービスに設定するポート番号は、それぞれ別のポート番号を指定してください。
注7)
メッセージブローカ起動時に利用可能なポートを使用します。
注8)
imqcmdで設定する場合は、「-o port=設定値」を指定してください。
6.7.2 ルーティングサービスに関するプロパティ
- 477 -
プロパティ
構成情報
設定値
省略値
コマンドでの設定
(値の範囲)
imqbrok imqcmd
erd
imq.destinatio
n.DMQ.trunca
teBody
デッドメッセージキューに保存
する前にメッセージのボディ
を削除するかを指定します。
trueの場合は、メッセージの
ヘッダとプロパティだけが保
存されます。
true
false
false
○
○
imq.message.e
xpiration.inter
val
期限切れメッセージの検出間
隔(秒単位)を指定します。
初期設定値(60秒)から変更し
ないことを推奨します。初期設
定値より小さい値を設定した
場合は、メッセージブローカ
のプロセスの負荷が上がり、
性能が劣化する可能性があり
ます。
整数値
60
○
(-1~
214748
3647)
×
imq.message.
max_size
単一メッセージの最大サイズ
(単位:バイト/キロバイト/メ
ガバイト(注1))を指定します。
「-1」を指定した場合、単一メッ
セージの最大サイズは無制限
となります。
整数値
70m
○
(-1, 1~
214748
3647)
○
(-1~
214748
3647)
imq.system.m
ax_count
メッセージブローカが保持す
るメッセージの最大数を指定
します。
本設定値を超過した場合、
メッセージは拒否され、メッ
セージブローカに蓄積されま
せん。
「-1」を指定した場合、メッセー
ジの最大数は無制限となりま
す。
整数値
-1
○
(-1, 1~
214748
3647)
○
(-1~
214748
3647)
imq.system.m
ax_size
メッセージの最大許容サイズ 整数値
(単位:バイト/キロバイト/メ
ガバイト(注1))を指定します。
本設定値を超過した場合、
メッセージは拒否され、メッ
セージブローカに蓄積されま
せん。
「-1」を指定した場合、最大許
容サイズは無制限となります。
-1
○
(-1, 1~
214748
3647)
○
(-1~
214748
3647)
imq.transactio
n.producer.ma
xNumMsgs
プロデューサが、単一のトラン
ザクションで処理できるメッ
セージの最大数を示します。
整数値
1000
○
(1~
214748
3647)
×
imq.transactio
n.consumer.m
axNumMsgs
コンシューマが、単一のトラン
ザクションで処理できるメッ
セージの最大数を示します。
整数値
100
○
(1~
214748
3647)
×
○:設定可能
×:設定不可
- 478 -
注1)
単位は、数値の後ろに、以下の半角英字を付加して指定します(省略時:バイト)。
- 単位がバイトの場合:b
例)100b
- 単位がキロバイト(1024バイト)の場合:k
例)100k
- 単位がメガバイト(1024×1024バイト)の場合:m
例)100m
6.7.3 物理格納先自動生成に関するプロパティ
本プロパティは、物理格納先の自動作成時に物理格納先の設定値として反映されます。
すでに自動生成されている物理格納先の設定を変更する場合は、imqcmd update dstコマンドに「物理格納先の生成ま
たは更新に関するプロパティ」を指定して更新してください。
プロパティ
構成情報
設定値
省略値
コマンドでの設定
(値の範囲)
imqbrok
erd
imqcmd
imq.autocrea
te.destination
.maxBytesPe
rMsg
物理格納先で許容される 整数
単一のメッセージの最大サ 値
イズ(単位:バイト/キロバ
イト/メガバイト(注1))を指
定します。本プロパティは、
limitBehaviorプロパティを
REJECT_NEWESTに設
定した場合にだけ有効とな
ります。
メッセージが指定値を超え
る場合、プロデューサに例
外通知されます(持続性の
ないメッセージの場合は通
知されません)。
「-1」を指定した場合、許容
される単一のメッセージの
最大サイズは無制限となり
ます。
10m
○
(-1, 1~
214748
3647)
×
imq.autocrea
te.destination
.maxTotalMs
gBytes
物理格納先に許容される
メッセージの最大合計サイ
ズ(単位:バイト/キロバイト
/メガバイト(注1))を指定
します。
「-1」を指定した場合、許容
されるメッセージの最大合
計サイズは無制限となりま
す。
整数
値
10240m
○
(-1, 1~
214748
3647)
×
imq.autocrea
te.destination
.limitBehavi
or
maxTotalMsgBytes/
maxBytesPerMsg/
maxNumMsgsの制限値に
達した場合のメッセージブ
ローカの応答方法を指定
します。
以下のいずれかを選択し
ます。
FLOW
_CON
TROL
REM
OVE_
OLDE
ST
REM
REJECT
_NEWES
T
○
×
- 479 -
プロパティ
構成情報
・ FLOW_CONTROL
メッセージが物理格納
先に蓄積可能になる
までメッセージの蓄積
処理を待機させます。
(注2)
・ REMOVE_OLDEST
最も古いメッセージを
破棄します。
設定値
省略値
コマンドでの設定
(値の範囲)
imqbrok
erd
imqcmd
OVE_
LOW_
PRIO
RITY
REJE
CT_N
EWES
T
・ REMOVE_LOW_PR
IORITY
有効期限に従って最
も優先度の低いメッ
セージを破棄します。
プロデューサには通知
しません。
・ REJECT_NEWEST
新しいメッセージを拒
否します。持続メッ
セージの場合にだけ、
プロデューサに例外を
通知します。
imq.autocrea
te.destination
.maxNumMs
gs
物理格納先で許容される 整数
蓄積メッセージ数の最大
値
数を指定します。
「-1」を指定した場合、許容
される蓄積メッセージ数の
最大数は無制限となります。
100000
○
(-1, 1~
214748
3647)
×
imq.autocrea
te.destination
.maxNumPro
ducers
物理格納先に接続できる
プロデューサの最大数を
指定します。
「-1」を指定した場合、接続
できるプロデューサの最大
数は無制限となります。
整数
値
100
○
(-1, 1~
214748
3647)
×
imq.autocrea
te.destination
.useDMQ
物理格納先が制限値など
によりメッセージを破棄す
る場合に、デッドメッセージ
キューに退避するか、メッ
セージを破棄するかを指
定します。
falseの場合は、メッセージ
を破棄します。
true
false
true
○
×
imq.autocrea
te.queue
Queueの自動作成を許可 true
false
するかを指定します。
falseの場合は、Queueの
自動作成を許可しません。
true
○
○
imq.autocrea
te.queue.cons
Queueに対してだけ有効な
設定です。
メッセージブローカに接続
1000
○
(-1, 1~
×
整数
値
- 480 -
プロパティ
構成情報
設定値
省略値
コマンドでの設定
(値の範囲)
imqbrok
erd
imqcmd
umerFlowLi
mit
した時点で、メッセージコ
ンシューマに配信可能な
メッセージの数を指定しま
す。
「-1」を指定した場合、メッ
セージコンシューマに配信
可能なメッセージの数は無
制限となります。
メッセージの有効期限を設
定して運用を行う場合は、
本値に小さい値を設定す
ることを推奨します。
imq.autocrea
te.queue.max
NumActiveC
onsumers
Queueに対してだけ有効な
設定です。
物理格納先からメッセージ
を受信できるコンシューマ
の最大数を指定します。
「-1」を指定した場合、物理
格納先からメッセージを受
信できるコンシューマの最
大数は無制限となります。
整数
値
-1
○
(-1, 1~
214748
3647)
○
(-1, 1~
2147483
647)
imq.autocrea
te.queue.max
NumBackup
Consumers
Queueに対してだけ有効な
設定です。
物理格納先からメッセージ
を受信待機できるコン
シューマの最大数を指定
します。
「-1」を指定した場合、物理
格納先からメッセージを受
信待機できるコンシューマ
の最大数は無制限となりま
す。
整数
値
0
○
(-1~
214748
3647)
○
(-1~
2147483
647)
imq.autocrea
te.topic
Topicの自動作成を許可
true
するかどうかを指定します。 false
true
○
○
1000
○
(-1, 1~
214748
3647)
×
214748
3647)
falseの場合は、Topicの自
動作成を許可しません。
imq.autocrea
te.topic.cons
umerFlowLi
mit
Topicに対してだけ有効な 整数
値
設定です。
メッセージブローカに接続
した時点で、メッセージコ
ンシューマに配信可能な
メッセージの数を指定しま
す。
「-1」を指定した場合、メッ
セージコンシューマに配信
可能なメッセージの数は無
制限となります。
メッセージの有効期限を設
定して運用を行う場合には、
- 481 -
プロパティ
構成情報
設定値
省略値
コマンドでの設定
(値の範囲)
imqbrok
erd
imqcmd
本値に小さい値を設定す
ることを推奨します。
○:設定可能
×:設定不可
注1)
単位は、数値の後ろに、以下の半角英字を付加して指定します(省略時:バイト)。
- 単位がバイトの場合:b
例)100b
- 単位がキロバイト(1024バイト)の場合:k
例)100k
- 単位がメガバイト(1024×1024バイト)場合:m
例)100m
注2)
待機状態が解除されるまで、プロデューサに処理は復帰しません。
6.7.4 持続サービスに関するプロパティ
プロパティ
構成情報
imq.persist.file.
sync.enabled
○:設定可能
メモリ内の状態を不揮発情報
ファイルと同期させるかを指定
します。
trueの場合は、メモリ内の状態
を不揮発情報ファイルと同期さ
せます。
設定値
true
false
省略値
false
コマンドでの設定
imqbroke
rd
imqcmd
○
×
×:設定不可
6.7.5 セキュリティに関するプロパティ
プロパティ
構成情報
imq.accesscontr
ol.enabled
○:設定可能
接続サービスのアクセス制御を
使用するかを指定します。
falseの場合は、アクセス制御を
行いません。
設定値
true
false
×:設定不可
6.7.6 ログ機能に関するプロパティ
- 482 -
省略値
true
コマンドでの設定
imqbroke
rd
imqcmd
○
×
プロパティ
構成情報
設定値
省略値
コマンドでの設定
(値の範囲)
imqbroke imqcm
rd
d
imq.destinati
on.logDead
Msgs
デッドメッセージに関する情
報をログに書き込むかを指定
します。
trueの場合、次のイベントが
ログに書き込まれます。
true
false
false
○
○
・ 物理格納先が最大サイ
ズ/最大メッセージ数に
達していっぱいになった。
・ 管理コマンドか配信通知
以外の理由でメッセージ
ブローカがメッセージを
破棄した。
・ メッセージブローカがデッ
ドメッセージキューにメッ
セージを退避した。
imq.log.file.
rolloverbyte
s
新しいログファイルにロー
テーションして出力するファ
イル長(バイト単位)を指定し
ます。
「-1」を指定した場合、ファイ
ル長に基づくローテーション
を行いません。
整数値
2684354
56(256
MB)
○
(-1, 1~
9223372
0368547
75807)
○
(-1~
21474
83647
)
imq.log.file.
rolloversecs
新しいログファイルにロー
テーションして出力するファ
イルの有効期間(秒単位)を
指定します。
「-1」を指定した場合、ファイ
ルの有効期間に基づくロー
テーションを行いません。
整数値
604800(
1週間)
○
(-1, 1~
9223372
0368547
75807)
○
(-1~
21474
83647
)
imq.log.time
zone
ログのタイムスタンプのタイム
ゾーンを指定します。
使用可能な値は、メソッド
java.util.TimeZone.getTime
Zone で使用される値と同じ
です。
例)"Asia/Tokyo","America/
Los_Angeles","Europe/
London","GMT-9","GMT"
文字列
該当地
域のタイ
ムゾーン
○
×
imq.log.acce
ss.level
アクセスログのログレベルを
指定します。
NORM
AL
○
×
2684354
56(256
MB)
○
(-1, 1~
9223372
0368547
75807)
×
・ NO
NE
・ NO
RM
AL
imq.log.acce
ss.rolloverby
tes
アクセスログのログローテー
ションするファイル長を指定
します。
整数値
- 483 -
プロパティ
構成情報
設定値
省略値
コマンドでの設定
(値の範囲)
imqbroke imqcm
rd
d
「-1」を指定した場合、ファイ
ル長に基づくローテーション
を行いません。
imq.log.acce
ss.rolloverse
cs
アクセスログのログローテー
ションするファイルの有効期
間を指定します。
整数値
○
(-1, 1~
9223372
0368547
75807)
604800(
1週間)
「-1」を指定した場合、ファイ
ルの有効期間に基づくロー
テーションを行いません。
○:設定可能
×
×:設定不可
6.7.7 物理格納先の生成または更新に関するプロパティ
プロパティ
構成情報
設定値
省略値
コマンドでの設定
(値の範囲)
imqbroker
d
imqcmd
consumerF
lowLimit
物理格納先にメッセージ 整数値
が蓄積されている場合、
本プロパティで設定した
メッセージ数を一単位とし
てメッセージの受信処理
を行うコンシューマに、蓄
積されたメッセージがなく
なるまで配信します。
「-1」を指定した場合、コン
シューマに配信可能なメッ
セージの数は無制限とな
ります。
メッセージの有効期限を
設定して運用を行う場合
には、本値に小さい値を
設定することを推奨します。
1000
×
○
(-1~
2147483
647)
maxBytesP
erMsg
物理格納先で許容される
単一のメッセージの最大
サイズ(単位:バイト/キロ
バイト/メガバイト(注1))を
指定します。
本プロパティは、
limitBehaviorプロパティ
をREJECT_NEWESTに
設定した場合にだけ有効
となります。
メッセージが指定値を超
える場合、プロデューサに
例外通知されます(持続
性のないメッセージの場
合は通知されません)。
「-1」を指定した場合、許
-1
×
○
(-1~
2147483
647)
整数値
- 484 -
プロパティ
構成情報
設定値
省略値
コマンドでの設定
(値の範囲)
imqbroker
d
imqcmd
容される単一のメッセージ
の最大サイズは無制限と
なります。
maxTotal
MsgBytes
物理格納先に許容される
メッセージの最大合計サ
イズ(単位:バイト/キロバ
イト/メガバイト(注1))を指
定します。
「-1」を指定した場合、許
容されるメッセージの最大
合計サイズは無制限とな
ります。
整数値
-1
×
○
(-1~
2147483
647)
limitBehav
ior
maxTotalMsgBytes/
maxBytesPerMsg/
maxNumMsgsの制限値
に達した場合のメッセー
ジブローカの応答方法を
指定します。
FLOW_
CONTR
OL
REMO
VE_OL
DEST
REMO
VE_LO
W_PRI
ORITY
REJEC
T_NEW
EST
REJE
CT_N
EWES
T
×
○
-1
×
○
(-1, 1~
2147483
647)
・ FLOW_CONTROL
メッセージが物理格
納先に蓄積可能にな
るまでメッセージの蓄
積処理を待機させま
す。(注2)
・ REMOVE_OLDEST
最も古いメッセージを
破棄します。
・ REMOVE_LOW_P
RIORITY
有効期限に従って最
も優先度の低いメッ
セージを破棄します。
プロデューサには通
知しません。
・ REJECT_NEWEST
新しいメッセージを拒
否します。持続メッ
セ ー ジ の 場 合 だ け、
プロデューサに例外
を通知します。
maxNumA
ctiveConsu
mers
Queueに対してだけ有効 整数値
な設定です。
物理格納先からメッセー
ジを受信できるコンシュー
マの最大数を指定します。
「-1」を指定した場合、物
理格納先からメッセージ
を受信できるコンシューマ
- 485 -
プロパティ
構成情報
設定値
省略値
コマンドでの設定
(値の範囲)
imqbroker
d
imqcmd
の最大数は無制限となり
ます。
maxNumB
ackupCons
umers
Queueに対してだけ有効
な設定です。
物理格納先からメッセー
ジを受信待機できるコン
シューマの最大数を指定
します。
「-1」を指定した場合、物
理格納先からメッセージ
を受信待機できるコン
シューマの最大数は無制
限となります。
整数値
0
×
○
(-1~
2147483
647)
maxNum
Msgs
物理格納先で許容される
蓄積メッセージ数の最大
数を指定します。
「-1」を指定した場合、許
容される蓄積メッセージ数
の最大数は無制限となり
ます。
整数値
-1
×
○
(-1~
2147483
647)
maxNumP
roducers
物理格納先に接続できる
プロデューサの最大数を
指定します。
「-1」を指定した場合、接
続できるプロデューサの
最大数は無制限となりま
す。
整数値
100
×
○
(-1, 1~
2147483
647)
useDMQ
物理格納先が制限値など
によりメッセージを破棄す
る場合に、デッドメッセー
ジキューに退避するか、
メッセージを破棄するかを
指定します。
falseの場合は、メッセージ
を破棄します。
true
false
true
×
○
○:設定可能
×:設定不可
注1)
単位は、数値の後ろに、以下の半角英字を付加して指定します(省略時:バイト)。
- 単位がバイトの場合:b
例)100b
- 単位がキロバイト(1024バイト)の場合:k
例)100k
- 単位がメガバイト(1024×1024バイト)の場合:m
例)100m
注2)
待機状態が解除されるまで、プロデューサに処理は復帰しません。
- 486 -
6.8 動作環境に関する定義項目
動作環境に関する定義項目について説明します。
6.8.1 定義時に利用できるプロパティ
定義更新を行う際、定義済みプロパティとシステムプロパティを定義値中の変数として利用できます。
以下のようにプロパティ名を{}で囲い、先頭に'$'を付加することでこれらのプロパティを指定できます。
${com.sun.aas.javaRoot}
定義済みプロパティ
Java EE実行環境では以下のプロパティがあらかじめ定義されており、定義更新時に利用できます。
なお、これらの項目は参照だけ可能であり、ユーザがプロパティの値を変更することはできません。
プロパティ名
com.sun.aas.installRoot
説明
Java EE実行環境のインストールディレクトリです。
デフォルト値は以下のとおりです。
C:\Interstage¥F3FMisjee
/opt/FJSVisjee
com.sun.aas.javaRoot
JDK/JREのインストールディレクトリです。
デフォルト値は以下のとおりです。
C:\Interstage¥JDK6
/opt/FJSVawjbk/jdk6
com.sun.aas.instanceRoot
サーバーインスタンスのルートディレクトリです。
デフォルト値は以下のとおりです。
サーバーインスタンス
[Java EE共通ディレクトリ]¥nodeagents¥ijna¥[サーバーインスタンス
名]
[Java EE共通ディレクトリ]/nodeagents/ijna/[サーバーインスタンス
名]
Interstage Java EE DASサービス
[Java EE共通ディレクトリ]¥domains¥interstage
[Java EE共通ディレクトリ]/domains/interstage
Interstage Java EE Node Agentサービス
[Java EE共通ディレクトリ]¥nodeagents¥ijna¥agent
[Java EE共通ディレクトリ]/nodeagents/ijna/agent
- 487 -
プロパティ名
com.sun.aas.derbyRoot
説明
Java DBのルートディレクトリです。
デフォルト値は以下のとおりです。
C:\Interstage¥F3FMisjee¥javadb
/opt/FJSVisjee/javadb
com.sun.aas.hostName
Java EE実行環境が動作するマシンのホスト名です。
file.separator
ファイルパスの区切り文字です。
すべてのプラットフォームで“/”が使用されます。
path.separator
環境変数の区切り文字です。
“;”が使用されます。
“:”が使用されます。
例
以下のように利用します。
> asadmin set IJServer001.java-config.java-home=${com.sun.aas.javaRoot}
> asadmin set IJServer001.log-service.log-directory=${com.sun.aas.instanceRoot}/logs
システムプロパティ
システムプロパティは、以下のそれぞれに対して定義できます。
・ ドメイン
・ 設定
・ IJServerクラスタ
・ サーバーインスタンス
それぞれにシステムプロパティを定義した場合の有効範囲と指定方法は、以下のとおりです。
ターゲット
有効範囲
指定方法
ドメイン
Interstage Java EE DASサービスを含
むすべてのサーバーインスタンスで
有効になります。
固定文字列「domain」を指定します。
設定
指定された設定を参照するすべての
IJServerクラスタ配下のサーバーイン
スタンス、またはInterstage Java EE
DASサービスで有効になります。
設定名を指定します。
Interstage Java EE DASサービスの
設定を指定する場合は、「serverconfig」を指定してください。
IJServerクラスタ
指定されたIJServerクラスタ配下のす
べてのサーバーインスタンスで有効
になります。
IJServerクラスタ名を指定します。
サーバーインスタンス
指定されたサーバーインスタンスで
有効になります。
サーバーインスタンス名を指定しま
す。
Interstage Java EE DASサービスの
サーバーインスタンスを指定する場
合は、「server」を指定してください。
- 488 -
同一のシステムプロパティが重複して定義されている場合は、より優先順位の高い定義内容が有効となります。
優先順位は、ドメイン < 設定< IJServerクラスタ < サーバーインスタンスです。
以下の項目については、各サーバーインスタンスで有効となる値が一意となるように設定してください。
これらの値は、IJServerクラスタが参照する設定、または、サーバーインスタンスのシステムプロパティとして定義されます。
なお、サーバーインスタンスの作成時、IJServerクラスタが参照する設定のシステムプロパティで定義されたポート番号が、
他のサーバーインスタンスにより利用されている場合、設定で定義された値を起点に利用可能なポート番号が自動的に
採番されてサーバーインスタンス配下にシステムプロパティが作成されます。
設定のシステムプロパティで定義されているポート番号を利用しているインスタンスが他に存在しない場合は、サーバー
インスタンスのシステムプロパティは作成されず、設定のシステムプロパティの定義値がサーバーインスタンスで有効に
なります。
この場合、asadmin getサブコマンドによるサーバーインスタンスのシステムプロパティ参照に失敗します。
サーバーインスタンスで有効なシステムプロパティの値を確認するには、asadmin list-system-propertiesサブコマンド、ま
たは、Interstage Java EE管理コンソールを利用してください。
プロパティ名
省略値
範囲
説明
HTTP_LISTENER_PORT
28090
5001~
65535
HTTPリスナーのポート番号です。
詳細は、「6.8.3 HTTPサービスの定義項目」を参照してください。
IIOP_LISTENER_PORT
23700
1~
65535
IIOPリスナーのポート番号です。
詳細は、「6.8.4 IIOPサービスの定義項目」を参照してください。
IIOP_SSL_LISTENER_PO
RT
23820
1~
65535
SSL通信用のIIOPリスナーのポート番号です。
詳細は、「6.8.4 IIOPサービスの定義項目」を参照してください。
IIOP_SSL_MUTUALAUTH
_PORT
23920
1~
65535
SSL通信クライアント認証用のIIOPリスナーのポート番号です。
詳細は、「6.8.4 IIOPサービスの定義項目」を参照してください。
JMX_SYSTEM_CONNECT
OR_PORT
28686
1~
65535
JMXコネクタが使用するRMIレジストリの接続ポート番号です。
詳細は、「6.8.5 管理サービスの定義項目」を参照してください。
注)設定値の更新後にInterstage Java EE Node Agentサービスの
再起動が必要です。
例
以下のように利用します。
> asadmin set IJServer001.iiop-service.iiop-listener.orb-listener-1.port=$
{IIOP_LISTENER_PORT}
>asadmin set IJServer001-config.system-property.IIOP_LISTENER_PORT=33700
>asadmin set Instance002.system-property.IIOP_LISTENER_PORT=23701
また、以下の項目はIJServerクラスタごとに値を設定してください。サーバーインスタンスごとにシステムプロパティを設定
することはできません。
プロパティ名
JMS_PROVIDER_PORT
説明
JMSプロバイダのポート番号です。
詳細は、「6.8.10 JMSサービスの定義項目」を参照してください。
例
以下のように利用します。
- 489 -
> asadmin set IJServer001-config.jms-service.jms-host.default_JMS_host.port=$
{JMS_PROVIDER_PORT}
> asadmin set IJServer001-config.system-property.JMS_PROVIDER_PORT=37676
システムプロパティの設定については、以下も参照してください。
・ create-system-propertiesサブコマンド
・ delete-system-propertiesサブコマンド
・ list-system-propertiesサブコマンド
6.8.2 設定の定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
設定名
設定の名前です。設定の作成時だけ指定で
きます。
設定名には、1~35バイトまでの半角英数字
および'_'と'-'を含めた文字列を利用できます。
以下に注意してください。
・ 2バイト文字や、先頭と最終の文字に'_'と
'-'は、使用することはできません。
・ すでに存在する設定名は大文字・小文
字の違いにかかわらず指定できません。
例えば、config001が定義済みの場合は、
CONFIG001を新規に作成することはで
きません。
・ 以下の名前のIJServerクラスタは作成で
きません。
- domain
- ijna
- default
- server
- resources
・
DOSデバイス名は利用できません。
○:設定可能
×:設定不可
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
- 490 -
内容
参照先
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.http-serviceの定義項目
6.8.3 HTTPサービスの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
形式
%client.na
me%
%client.id
% %authuser-name
%
%datetime
%
%request
% %status
%
%response
.length%
%headers.
host%
%cookies.
JSESSIO
NID%
%timetaken%
%thread.id
%
%thread.n
ame%
%webserv
er.name%
ローテー
ションのタイ
プ
logsize
ログサイズ
1
ログ収集時
間
0
アクセスログに出力する項目
を指定します。
設定できる項目は、「4.21.3
HTTPアクセスログ」を参照し
てください。
×
HTTPアクセスログをバック
アップする場合にログサイズ
(logsize)とログ収集時間
(time)のどちらでバックアップ
を行うかを示します。
×
1~
512(MByte)
HTTPアクセスログの最大サ
イズを指定します。
ログファイルが指定したサイ
ズに達するとローテーション
されます。
×
0~23(時)
HTTPアクセスログについて、
ローテーションを実行する時
刻を指定します。毎日指定し
×
1~512
・ logsize
・ time
- 491 -
項目名
省略値
範囲
説明
再起動要否
(※)
た時刻にローテーションされ
ます。
世代数
1~999
ローテーションしたHTTPアク
セスログを保管する世代数を
指定します。
保管するログファイルの数が
指定した世代数を超えた場
合は、一番古い世代のログ
ファイルが削除されます。
HTTPリス
ナー名
英数字、また
は特殊文字
(‘\’、‘-’、
‘_’、‘.’、
‘/’、‘;’、
‘#’)。
先頭には、
英数字また
は‘_’だけ指
定可。
HTTPリスナーの名前です。
ネットワーク
アドレス
文字列
サーバで有効なIPアドレス、
「0.0.0.0」、またはプロパティ
名を指定します。
5
×
×
サーバで有効なすべてのIP
アドレスを使用する場合は、
「0.0.0.0」を指定してくださ
い。
プロパティ名を指定した場合
は、サーバーインスタンスの
プロパティに値を指定する必
要があります。
リスナー
ポート
IJServer
クラスタ配
下のサー
バーインス
タンス
システムプ
ロパティ
HTTP_LI
STENER_
PORT(自
動採番)
IJServerクラ
スタ配下の
サーバーイ
ンスタンス
1-65535(注)
Interstage
Java EE
DASサービ
ス
・ 運用管
Interstage
Java EE
DASサー
ビス
・ 運 用
管 理
用
HTTP
リ ス
理
用
HTTP リ
スナー
のポー
ト
:
1-65535
・ HTTP リ
スナー
のポー
ト
:
リスナーが待機するポート番
号または、プロパティ名を指
定します。
IJServerクラスタ配下のサー
バーインスタンス
IJServerクラスタ配下のサー
バーインスタンスのポート番
号は、デフォルトではシステ
ムプロパティとして定義され
てます。
IJServerクラスタ配下のサー
バーインスタンスのポート番
号を変更する場合は、本項
目を更新せず、システムプロ
パティ
HTTP_LISTENER_PORT
の値を変更してください。
システムプロパティの詳細に
ついては、「6.8.1 定義時に
利用できるプロパティ」を参
照してください。
- 492 -
○
項目名
省略値
範囲
説明
再起動要否
(※)
ナ ー
の
ポ ー
ト
:
12001
・ HTTP
リ ス
ナ ー
の
ポ ー
ト
:
28080
ブロック化
false
1-6553
5(注)
注)
Webサーバ
を経由する
場合は
5001-65535
WebサーバとIJServerクラス
タを別マシンで運用している
場合は、上記設定とあわせ
てWebサーバコネクタの接続
先情報の設定が必要です。
詳細は「4.8.2.2 Webサーバ
とIJServerクラスタを別のマシ
ンで運用する場合」を参照し
てください。
Interstage Java EE DAS
サービス
Interstage Java EE DASサー
ビスの運用管理用HTTPリス
ナーのポート番号の設定に
ついては、「チューニングガ
イド」の「Interstage Java EE
DASサービスのチューニン
グ」を参照ください。
・ true
・ false
HTTPリスナーの動作を指定
します。
○
・ true: クライアントからのリ
クエストを非同期で受け
付けます。
・ false: クライアントからの
リクエストを同期して受け
付けます。
注) 通常は省略値(false)で構
いません。
以下のWindows固有問題を
回避する方法として、trueを
指定してください。
・ HTTPリスナーが使用す
るポートの数を制限する
・ 「トラブルシューティング」
-「Windows Server(R)
2003でnonpaged poolが
リークする」
アクセプ
タースレッド
セキュリティ
1
1~
2147483647
・ 運 用
管 理
用
・ true
・ false
アクセプタースレッドの数を
変更します。
アクセプタースレッドは、接続
を待ち受けるスレッドです。
受け入れた接続は、キュー
に入れます。
このキューから、ワーカース
レッドによって接続が取りだ
されます。
×
インストール時に「SSL暗号
化通信を使用」で指定した値、
および、ijinitコマンド実行時
×
- 493 -
項目名
省略値
範囲
説明
再起動要否
(※)
HTTP
リ ス
ナ ー
の セ
キュリ
ティ:
true
- イ
ン
ス
ト
ー
ル
時
に
“
使
用
す
る
”
を
選
択
し
た
場
合
に-sslオプションで指定した
値が、運用管理用HTTPリス
ナーのセキュリティに反映さ
れます。
運用管理用HTTPリスナーの
本設定項目を変更する場合、
「チューニングガイド」の
「Interstage Java EE DAS
サービスのチューニング」も
参照してください。
- iji
nit
コ
マ
ン
ド
で
ssl
オ
プ
シ
ョ
ン
に
tr
ue
を
設
定
し
た
場
合
(ssl
- 494 -
項目名
省略値
範囲
説明
再起動要否
(※)
オ
プ
シ
ョ
ン
を
指
定
し
な
い
場
合
は
デ
フ
ォ
ル
ト
の
tr
ue
が
設
定
さ
れ
ま
す
。)
・ HTTP
リ ス
ナ ー
の セ
キュリ
ティ:
false
XPoweredBy ヘッダー
フィールド
false
リスナー
true
・ true
Webコンテナが生成する
HTTP
レスポンスヘッダーに XPowered-By ヘッダーフィー
ルドを含めるかどうかを指定
します。
×
サーバの再起動時にHTTP
リスナーを有効にするか指定
します。
×
文字列
既存サーバの鍵ペアと証明
書の名前。
○
・ true
「SSL2」のセキュリティプロト
コルを有効にするか指定しま
す。
○
・ false
・ true
・ false
証明書の
ニックネー
ム
SSL2
false
・ false
- 495 -
項目名
省略値
範囲
説明
再起動要否
(※)
・ rc4
SSL2の暗
号方式
・ rc4expo
「SSL2」で利用可能な暗号
方式群を選択。
○
「SSL3」のセキュリティプロト
コルを有効にするか指定しま
す。
○
「SSL3」で利用可能な暗号
方式群を選択。
○
「TLS」プロトコルを有効にす
るか判定します。
○
rt
・ rc2
・ rc2expo
rt
・ idea
・ des
・ desede3
SSL3
true
・ true
・ false
SSL3の暗
号方式
TLS
(注1)
true
・ true
・ false
HTTPリス
ナーの追加
プロパティ
リクエスト
URIの解析
に使用する
エンコー
ディング
UTF-8
「SJIS」、
「EUC_JP」
など、Javaで
サポートされ
ているエン
コーディング
プロパティ:uriEncodingで指
定します。
リクエストURIの解析に使用
するエンコーディングを指定
します。
×
タイムアウト
時間
30000
1~
214748364
7(ミリ秒)
プロパ
ティ:connectionUploadTime
outで指定します。
タイムアウト時間を指定しま
す。
以下の場合、リクエストはタイ
ムアウトとして処理されます。
×
・ Webサーバコネクタから
の通信が指定した時間
以上途絶えた場合
注) Webコンテナは指定した
値を使用して、タイムアウトの
チェックを2回行います。その
ため、指定する値は、運用環
境において必要とする値を2
回に分けた値で指定する必
要があります。例えば1分
(60000ミリ秒)としたい場合に
は、2回に分けた値、30秒
(30000ミリ秒)と指定します。
- 496 -
項目名
省略値
範囲
説明
再起動要否
(※)
POSTリクエ
ストの最大
サイズ
2097152
1~
2147483647
プロパティ:maxPostSizeで指
定します。
POSTで送られたBODYの最
大サイズをバイト単位で指定
します。
この値が有効なのは
HttpServletRequestの以下の
APIで値を取得した場合です。
×
・ getParameter
・ getParameterNames
・ getParameterValues
・ getParameterMaps
Content-Lengthヘッダーの
値が指定された値よりも大き
い場合に
IllegalStateExceptionがス
ローされます。
ServletRequestのgetReader/
getInputStreamで取得した
Reader/ServletInputStream
を使用して読み込む場合は、
無効です。この場合にサイズ
制限を行う必要がある場合は、
アプリケーション側でサイズ
をチェックしてください。
Webコンテ
ナへアクセ
スする運用
形態
nocheck
・ direct
・ webserv
er
・ nocheck
プロパティ: requestCheckで
指定します。
Webコンテナへアクセスする
運用形態を指定します。本
設定は、Webサーバコネクタ
との連携の設定に連動して”
direct”または、”webserver”
が設定されます。
・ direct:Webサーバを経
由しない場合に指定しま
す。Webサーバを経由し
てリクエストを受信した場
合、Webコンテナは、クラ
イ ア ン ト に 「 400 Bad
Request」を返却します。
・ webserver:Webサーバ
を経由する場合に指定
します。Webサーバを経
由せずリクエストを受信
した場合、Webコンテナ
はクライアントに「400 Bad
Request」を返却します。
・ nocheck:Webサーバを
経由する かつ負荷分散
- 497 -
×
項目名
省略値
範囲
説明
再起動要否
(※)
装置などでWebコンテナ
に対して、故障監視を行
う場合に指定します。運
用形態のチェックを行い
ません。この場合は、セ
キュリティ強化のためIP
アクセスコントロール機
能で、Webサーバコネク
タおよび、負荷分散装置
などのIPアドレスを許可
するようにします。
注意)プロパティの定義値
を変更後に、Webサーバコネ
クタとの連携の設定を変更し
た場合、変更した定義値が”
direct”または、”webserver”
に変更されます。
仮想サーバ
名
英数字、また
は特殊文字
(‘\’、‘-’、
‘_’、‘.’、
‘/’、‘;’、
‘#’)。
先頭には、
英数字また
は‘_’だけ指
定可。
仮想サーバの名前。
IP形式(IPv6
含む)
プロパ
ティ:allowRemoteAddressで
指定します。
IJServerクラスタに対して要
求を受け付けるリモートアド
レスを、正規表現で指定しま
す。複数のパターンを指定
する場合には、カンマ(‘,’)で
区切ります。
指定しない場合、すべてのク
ライアントからの接続を許可
します。セキュリティの面から
本項目を設定することをお勧
めします。
注1) 同一マシン上のWeb
サーバからのアクセスのみを
許可する場合には、
127.0.0.1(ループバックアド
レス)を指定してください。
注2) 正規表現ではピリオド
‘.’は任意の一文字となりま
す。要求を受け付けるクライ
アントのIPアドレスを完全に
仮想サーバ
の追加プロ
パティ
要求を受け
付けるクライ
アントのアド
レス
- 498 -
×
項目名
省略値
範囲
説明
再起動要否
(※)
指定する場合にはエスケー
プ文字(\"またはバックスラッ
シュ)を付加してください。
例) 127\.0\.0\.1
正規表現の詳細について
は「JavaTM 2 Platform
Standard API 仕様」の
java.util.regex.Patternクラス
を参照してください。
スレッド数
64
2~2048
(初期スレッド
数以上)
要求処理スレッドの最大数。
×
初期スレッ
ド数
16
2~2048
(スレッド数以
下)
サーバ起動時に利用可能な
要求処理スレッドの数。
注)thread-count(スレッド数)
より大きい値を指定した場合、
この値はthread-count(スレッ
ド数)で指定した値となります。
×
スレッドの増
分
16
2~2048
要求数が初期スレッド数を超
えた場合に追加される要求
処理スレッドの数。
×
キープアラ
イブのタイ
ムアウト
15
10~
2147483647
キープアライブ接続を維持し
ておく最大秒数。
×
キューサイ
ズ
200
1~
2147483647
HTTP接続キューの最大数。
×
最大保留カ
ウント
200
1~
2147483647
Listenバックログの最大数。
×
受信バッ
ファーサイ
ズ
49152
1~
2147483647
HTTPリスナーの受信バッ
ファーのサイズをバイト単位
で指定します。
本項目は以下を満たす値を
指定する必要があります。
×
受信バッファーサイズ > リク
エストラインと全リクエストヘッ
ダーの合計サイズ
リクエストラインと全リクエスト
ヘッダーの合計サイズが指
定した値を超えた場合
サーバーログに
ISJEE_WEB0777や
PWC4662が出力され、リクエ
ストが処理されず中断しま
す。
このときクライアントにはエ
ラーレスポンスが返却されま
す。
- 499 -
項目名
省略値
範囲
説明
再起動要否
(※)
また本項目の値を増やした
場合、メモリ使用量(ヒープ領
域)が増大する可能性があり
ます。
以下の式で見積もった値を
メモリ使用量に加算してくだ
さい。
受信バッファーサイズ ×
HTTPサービスのキューサイ
ズ (単位:バイト)
HTTPプロト
コルのバー
ジョン
HTTP/1.1
SSL
true
文字列
使用するHTTPプロトコルの
バージョン。
×
・ true
サーバのセキュリティをグロー
バルに有効または無効にし
ます。
×
プロパ
ティ:maxKeepAliveRequests
で指定します。
キープアライブの有効/無効
および、1回のコネクションで
処理可能なリクエスト数を指
定します。
×
・ false
HTTPサー
ビスの追加
プロパティ
1回のコネク
ションで処
理可能なリ
クエスト数
0
-1~
2147483647
・ 0:キープアライブ無効
・ -1:キープアライブ有効
・ 1以上:1回のコネクショ
ンで処理可能なリクエス
ト数の上限
注)"-1"を指定した場合は、
1回のコネクションで処理可
能なリクエスト数は無制限に
なります。
アクセスログ
true
・ true
・ false
HTTPアクセスログの出力を
有効にするかを指定します。
×
・ true: 有効
・ false: 無効
トレースログ
true
・ true
※初期値
はtrueです
が、省略値
は、falseに
なります。
・ false
HTTPトレースログの動作を
指定します。
・ true: 有効
・ false: 無効
- 500 -
○
項目名
省略値
範囲
説明
再起動要否
(※)
トレースログ
のログサイ
ズ
10
1-2000
(単位はMB)
HTTPトレースログの最大サ
イズを指定します。
ログファイルが指定したサイ
ズに達するとローテーション
されます。
○
トレースログ
の世代数
10
1 - 999
ローテーションしたHTTPト
レースログを保管する世代数
を指定します。
保管するログファイルの数が
指定した世代数を超えた場
合は、一番古い世代のログ
ファイルが削除されます。
○
TRACEメ
ソッドの動
作
false
プロパティ: traceEnabledで指
定します。
HTTP TRACEメソッドの動作
を設定します。
×
・ true
・ false
・ true: 有効
・ false: 無効
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
注1)
以下が「SSL3」で利用可能な暗号方式群です。
- SSL_RSA_WITH_RC4_128_MD5
- SSL_RSA_WITH_RC4_128_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA
- SSL_RSA_WITH_3DES_EDE_CBC_SHA
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA
- SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
- TLS_DHE_DSS_WITH_AES_128_CBC_SHA
- SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
- SSL_RSA_WITH_DES_CBC_SHA
- SSL_DHE_RSA_WITH_DES_CBC_SHA
- SSL_DHE_DSS_WITH_DES_CBC_SHA
- SSL_RSA_EXPORT_WITH_RC4_40_MD5
- SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
- SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
- SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
- SSL_RSA_WITH_NULL_MD5
- SSL_RSA_WITH_NULL_SHA
- 501 -
プロパティ
参照/設定可能なプロパティには以下があります(一部を記載しています)。
「HTTPリスナーの追加プロパティ」で指定可能なプロパティ
項目名
プロパティ名
リクエストURIの解析に使用するエンコーディング
uriEncoding
タイムアウト時間
connectionUploadTimeout
POSTリクエストの最大サイズ
maxPostSize
Webコンテナへアクセスする運用形態
requestCheck
「仮想サーバの追加プロパティ」で指定可能なプロパティ
項目名
プロパティ名
要求を受け付けるクライアントのアドレス
allowRemoteAddress
「HTTPサービスの追加プロパティ」で指定可能なプロパティ
項目名
プロパティ名
1回のコネクションで処理可能なリクエスト数
maxKeepAliveRequests
TRACEメソッドの動作
traceEnabled
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.5 Servletの提供機能
チューニング方法
「チューニングガイド」-「Webコンテナのチューニング」
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.http-serviceの定義項目
6.8.4 IIOPサービスの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
IIOPサービスの定義
IIOPクライ
アント認証
false
・ true
・ false
trueを指定すると認証情報がない要求を受け
付けず、クライアントに送信するIORに
authentication-requiredフラグを設定します。
○
デフォルトスレッドプールのスレッドプールID
を指定します。
「thread-pool-1」を指定してください。
○
IIOPサービスのORB定義
スレッドプー
ルID
文字列
- 502 -
項目名
省略値
範囲
説明
再起動要否
(※)
最大メッ
セージ分割
サイズ
1024
128~
2147483647
IIOPメッセージの最大フラグメントサイズを設
定します。 (注1)
○
総接続数
1024
0~
2147483647
IIOP通信の最大同時接続数を指定します。
○
プロパティ名
IIOPアクセスログの出力設定を指定します。
○
ORBの追
加プロパ
ティ
・ ISJEEL
ogIiopA
ccessRot
ationsize
・ ISJEEL
ogIiopA
ccessRot
ationcou
nt
・ ISJEEL
ogIiopA
ccessMo
de
プロパティ値
・ ISJEEL
ogIiopA
ccessRot
ationsize
の場合
1
~
2000(M
B)
・ ISJEEL
ogIiopA
ccessRot
ationcou
nt の 場
合
1~999
・ ISJEEL
ogIiopA
ccessMo
de の 場
合
- acce
ss
- trac
e
- non
e
IIOPリスナーの定義
- 503 -
項目名
省略値
範囲
説明
再起動要否
(※)
・ orb-
IIOPリス
ナー名
リスナーを特定する名前を指定します。
listener1
・ SSL
・ SSL_M
UTUAL
AUTH
ネットワーク
アドレス
リスナー
ポート
・ Inte
rsta
ge
Java
EE
DA
S
サ
ービ
ス
- o
r
b
l
i
s
t
n
e
r
1
2
3
6
0
0
文字列
サーバで有効なホスト名、IPアドレスまたは
「0.0.0.0」を指定します。
サーバで有効なすべてのネットワークアドレ
スを使用する場合は、「0.0.0.0」を指定してく
ださい。
「0.0.0.0」を指定した場合、サーバアプリケー
ションとのIIOP通信時に、サーバホストのIPア
ドレスが使用されます。
○
1~65535
リスナーが待機するポート番号を入力します。
○
一般ユーザでJava EEアプリケーションを運
用する場合、1~1024のポートを使用するこ
とはできません。
注意
IJServerクラスタ配下のサーバーインスタンス
のポート番号はシステムプロパティとして定義
されています。
IJServerクラスタ配下のサーバーインスタンス
のポート番号を変更する場合は、本項目を更
新せず、システムプロパティの値を変更して
ください。
システムプロパティの詳細については、「6.8.1
定義時に利用できるプロパティ」を参照して
ください。
- S
S
L
2
3
6
0
1
- 504 -
項目名
省略値
範囲
説明
再起動要否
(※)
- S
S
L
_
M
U
T
U
A
L
A
U
T
H
2
3
6
0
2
・ IJSe
rver
クラ
スタ
配
下
の
サ
ー
バ
ーイ
ンス
タン
ス
以
下
のシ
ステ
ムプ
ロパ
ティ
の
デ
フォ
ルト
値
- I
I
O
P
_
L
I
S
T
- 505 -
項目名
省略値
範囲
説明
再起動要否
(※)
E
N
E
R
_
P
O
R
T
- I
I
O
P
_
S
S
L
_
L
I
S
T
E
N
E
R
_
P
O
R
T
- I
I
O
P
_
S
S
L
_
M
U
T
U
A
L
A
U
T
H
_
P
O
- 506 -
項目名
省略値
範囲
説明
再起動要否
(※)
R
T
リスナー
true
・ true
リスナーを有効にするか指定します。
○
・ false
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
注1)
1024byteより小さい値は設定しないでください。最大メッセージ分割サイズを1024byteより小さくした場合、サーバ側
で必要なスレッド数が見積もり数を超過してしまう可能性があります。
また、設定可能な値は、Interstage Java EE管理コンソールとasadminコマンドで異なります。
- Interstage Java EE管理コンソールの場合
1024/2048/4096/8192/16384/32768から選択できます。
- asadminコマンドの場合
128~2147483647の範囲で任意に指定できます。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.11 ORB(Object Request Broker)/RMI-IIOP
チューニング方法
「チューニングガイド」-「Java EE機能のチューニング」-「ORBのチューニ
ング」
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.iiop-serviceの定義項目
6.8.5 管理サービスの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
JMXコネ
クタ名
system
system
インスタンス間のJMX接続のために使用
されるシステムJMXコネクタ名(system)で
す。この値は変更できません。
プロトコ
ル
rmi_jrm
p
rmi_jr
mp
JMXコネクタがサポートするプロトコル
(rmi_jrmp)です。この値は変更できませ
ん。
○
アドレス
0.0.0.0
文字列
JMXコネクタのサーバスタブを登録する
場合、指定するサービスのIPアドレスで
指定します。システムに複数のIPアドレス
(ネットワークインタフェース)を持っている
場合は、接続するサーバから参照できる
○
- 507 -
項目名
省略値
範囲
説明
再起動要否
(※)
特定のIPアドレスを指定してください。
すべてのネットワークインタフェースを指
定する場合、0.0.0.0を指定します。
注)設定値の更新後にInterstage Java EE
Node Agentサービスの再起動が必要で
す。
ポート
・ Inte
・ Int
rsta
ge
Jav
a
EE
DA
S
サ
ー
ビ
ス:
な
し
ers
tag
e
Ja
va
EE
D
A
S
サ
ー
ビ
ス:
1
~
65
53
5
・ IJS
erv
erク
ラス
タ
配
下
の
サ
ー
バ
ー
イン
スタ
ン
ス:
シ
ス
テ
ム
プ
ロ
パ
ティ
JM
X_
SY
ST
EM
_C
ON
NE
CT
・ IJ
JMXコネクタが使用するRMIレジストリの
接続ポート番号を指定します。指定した
番号に対して、クライアントからアクセスし
てください。
一般ユーザでJava EEアプリケーションを
運用する場合、1~1024のポートを使用
することはできません。
注)
IJServerクラスタ配下のサーバーインスタ
ンスのポート番号はシステムプロパティと
して定義されてます。
IJServerクラスタ配下のサーバーインスタ
ンスのポート番号を変更する場合は、本
項目を更新せず、システムプロパティの
値を変更してください。
システムプロパティの詳細については、
「6.8.1 定義時に利用できるプロパティ」を
参照してください。
Se
rv
er
ク
ラ
ス
タ
配
下
の
サ
ー
バ
ー
イ
ン
ス
タ
ン
ス:
$
{J
M
X_
S
Y
ST
- 508 -
○
項目名
省略値
範囲
説明
再起動要否
(※)
OR
_P
OR
Tの
デ
フォ
ルト
値
(注)
セキュリ
ティレル
ム名
adminrealm
オートリ
ロード
false
E
M
_C
O
N
N
E
C
T
O
R_
P
O
R
T}
(
注
)
adminrealm
このJMXコネクタから運用中のサーバの
セキュリティレルムの名前です。この値は
変更できません。
○
・ tru
オートリロード機能を有効にするか指定
します。
○
e
・ fal
se
・ true:有効
・ false:無効
オートリ
ロードの
ポーリン
グ間隔
2
1~
21474
83647(
秒)
オートリロード機能を有効にしたアプリ
ケーション内の.reloadファイルの変更を
サーバーがチェックする頻度を指定しま
す。
○
セッショ
ンタイム
アウト
60
0~
21474
83647(
分)
Interstage Java EE管理コンソールのセッ
ションタイムアウト値です。この項目は
Interstage Java EE DASサービスに対し
てのみ設定できます。
○
JMXコネ
クタの追
加プロパ
ティ
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
プロパティ
参照/設定可能なプロパティには以下があります(一部を記載しています)。
「JMXコネクタの追加プロパティ」で指定可能なプロパティ
項目名
クライアントホスト名
プロパティ名
client-hostname
- 509 -
注意
プロパティ「クライアントホスト名」を更新する場合、設定値の更新後にInterstage Java EE Node Agentサービスの再起動
が必要です。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.admin-serviceの定義項目
6.8.6 コネクタサービスの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
シャットダウ
ンタイムアウ
ト
30
1~
214748364
7(秒)
リソースアダプタの停止処理の完了をアプリ
ケーションサーバーが待機する時間(秒)です。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
「チューニングガイド」-「コネクタのチューニング」
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.connector-serviceの定義項目
6.8.7 Webコンテナの定義項目
定義項目
- 510 -
○
項目名
省略値
範囲
説明
再起動要否
(※)
マネージャ
プロパティ
の追加プロ
パティ
本バージョンでは使用できません。
セッションプ
ロパティの
追加プロパ
ティ
本バージョンでは使用できません。
追加プロパ
ティ
○
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
プロパティ
参照/設定可能なプロパティには以下があります(一部を記載しています)。
「追加プロパティ」で指定可能なプロパティ
項目名
プロパティ名
ディスパッチ回数の上限値
dispatcher-max-depth
追加プロパティの定義項目
項目名
ディスパッチ
回数の上限
値
省略値
20
範囲
説明
1~
2147483647(
回)
1リクエスト内でのディスパッチ回数の上限値
を指定します。上限値を超えてディスパッチ
した場合、コンテナログにPWC1232を出力し
ます。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.5 Servletの提供機能
チューニング方法
「チューニングガイド」-「Webコンテナのチューニング」
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.web-containerの定義項目
6.8.8 EJBコンテナの定義項目
定義項目
- 511 -
項目名
省略値
範囲
説明
再起動要否
(※1)
(※2)
Enterprise Beanインスタンスのキャッシング
最大キャッ
シュサイズ
512
0~
2147483647
(キャッシュの
サイズ変更
量以上)
・ noneの場合
○
キャッシュできるBeanインスタンスの最大
数を決定する数です。
この数までインスタンスをキャッシュした
状態で、さらにインスタンスを作成する要
求があった場合、そのインスタンスの作
成は失敗し、呼び出し元に例外を返却し
て、処理を中断します。
・ fileの場合
キ ャ ッ シ ュ さ れ た Bean イ ン ス タ ン ス を
passivate対象とするか判断する数です
(注1)(注2)。
0を設定した場合はキャッシュサイズが無制
限になります。
設定した値の数だけ、アプリケーションの起
動時にインスタンスを格納する領域を確保し
ます。このため、値を大きく変更する場合には、
指定した値までキャッシュされるかどうかに関
わらず、ヒープサイズをチューニングしてくだ
さい。
キャッシュの
サイズ変更
量
キャッシュア
イドルタイム
アウト
32
600
1~
2147483647
(最大キャッ
シュサイズ以
下)
0~
214748364
7(秒)
・ noneの場合
○
この項目はEntity Beanのみ有効となりま
す。
・ fileの場合
キ ャ ッ シ ュ さ れ た Bean イ ン ス タ ン ス を
passivate対象とするかを判定する監視時
間です。指定した時間間隔でキャッシュ
を監視し、指定した時間以上アイドル状
態 が 続 い て い る Bean イ ン ス タ ン ス を
passivate対象とします。
Beanインスタンスをpassivateする場合、こ
の数のインスタンスをpassivateしてキャッ
シュから破棄します(注2)。
・ noneの場合
キャッシュされたBeanインスタンスを削除
するかを判定する監視時間です。指定し
た時間間隔でキャッシュを監視し、指定
した時間以上アイドル状態が続いている
Beanインスタンスを削除します。
・ fileの場合
キ ャ ッ シ ュ さ れ た Bean イ ン ス タ ン ス を
passivate対象とするかを判定する監視時
間です。指定した時間間隔でキャッシュ
を監視し、指定した時間以上アイドル状
態 が 続 い て い る Bean イ ン ス タ ン ス を
passivate対象とします(注2)。
0を設定した場合はキャッシュアイドルタ
イムアウトが動作しません。
- 512 -
○
項目名
削除タイム
アウト
省略値
5400
範囲
0~
214748364
7(秒)
説明
再起動要否
(※1)
(※2)
・ noneの場合
○
無効です。
・ fileの場合
passivateしたBeanインスタンスがファイル
シ ス テ ム に 存 在 で き る 最 大 時 間 で す。
Beanインスタンスに対して、この時間を超
過してもビジネスメソッドが実行されなかっ
た場合、EJBコンテナが該当のインスタン
スの対話状態をファイルシステムから削
除します。キャッシュアイドルタイムアウト
以下の値を指定すると、Beanインスタン
スをpassivateした後に削除します(注3)。
0を設定した場合は削除タイムアウトが動
作しません。
選択内容の
削除ポリ
シー
nru(注3)
・ nru
・ fifo
・ lru
・ noneの場合
削除対象のインスタンスを選択するポリ
シーです。
過度のインスタンスをキャッシュから廃棄
する場合、このアルゴリズムで削除する
Beanインスタンスを決定します。以下から
ポリシーを選択します。
- nru: 最近使用されていない
- fifo: ファーストインファーストアウト
- lru: 最近の使用頻度がもっとも低い
NRU ポ リ シ ー (Not Recently Used) は、
キャッシュ内で古い、かつ最近アクセスさ
れていないBeanインスタンスを優先的に
削除します。FIFOポリシー(First In, First
Out)は、キャッシュ内で最も古いBeanを
削除します。LRUポリシー(Least Recently
Used)は、最近最もアクセスされていない
Beanを削除します。
Entity Beanの場合は常にfifoが適用され
ます。
・ fileの場合
削除対象のインスタンスを選択するポリ
シーです。
過度のインスタンスをpassivateしキャッ
シュから廃棄する場合、このアルゴリズム
で削除するBeanインスタンスを決定します。
以下からポリシーを選択します。
- nru: 最近使用されていない
- fifo: ファーストインファーストアウト
- lru: 最近の使用頻度がもっとも低い
NRU ポ リ シ ー (Not Recently Used) は、
キャッシュ内で古い、かつ最近アクセスさ
れていないBeanインスタンスを優先的に
削除します。FIFOポリシー(First In, First
Out)は、キャッシュ内で最も古いBeanを
- 513 -
○
項目名
省略値
範囲
説明
再起動要否
(※1)
(※2)
削除します。LRUポリシー(Least Recently
Used)は、最近最もアクセスされていない
Beanを削除します。
Entity Beanの場合は常にfifoが適用され
ます。
Enterprise Beanインスタンスのプーリング
初期および
最小プール
サイズ
0
0~
2147483647
(最大プール
サイズ以下)
プールに確保するインスタンスの数です。
EJBアプリケーションへのアクセス時、または
アイドルタイムアウト監視処理時に、プールサ
イズが指定された数より少ない場合、EJBコン
テナは処理スレッドとは別のスレッドでBeanイ
ンスタンスを生成してプールに追加します。
生成数はプールサイズ変更量が適用されます。
指定された値が最大プールサイズより大きい
場合には、最大プールサイズを初期および
最小プールサイズとみなします。
また、処理要求によりプールに存在するイン
スタンス数が指定した値より小さくなると、EJB
コンテナはプールされたBeanインスタンスが
指定された値になるまでBeanインスタンスを
生成してプールに追加します。
○
最大プール
サイズ
32
0~
2147483647
(初期および
最小プール
サイズ以上、
かつプール
サイズ変更
量以上)
プールされるBeanインスタンスの最大数です。
Beanインスタンスでの処理完了時にプール
に存在するインスタンス数が指定された数の
場合には、使用したBeanインスタンスをプー
ルに戻さずに破棄します。
0を設定した場合はプールサイズが無制限に
なります。
○
プールサイ
ズ変更量
8
0~
2147483647
(最大プール
サイズ以下)
一度に縮小または拡張するプールサイズです。
最大プールサイズを超えたり、最小プールサ
イズを下回ることがないように、調整されます。
0を設定した場合、または最小プールサイズ
に0を指定した場合は適用されません。適用
されない場合は1インスタンスずつ生成します。
○
プールアイ
ドルタイムア
ウト
600
0~
214748364
7(秒)
プール内インスタンスの最大許容アイドル時
間です。
EJBコンテナは設定値の間隔でプールを監
視し、プールサイズを調整します(注4)。
プール内インスタンス数が最小プールサイズ
以上の場合、設定値よりも長くアクセスがな
かったインスタンスを破棄します。
プール内インスタンス数が最小プールサイズ
未満の場合、プールサイズ変更量に従いイ
ンスタンスを追加します。
0を設定した場合は監視しません。
○
1~
214748364
7(ミリ秒)
EJBタイマーの最小配信間隔です。EJBタイ
マーの生成時に指定された配信間隔が本設
定値より小さい場合、本設定値が使用されま
す。
○
EJBタイマーサービス
最小配信間
隔
7000
- 514 -
項目名
省略値
範囲
説明
再起動要否
(※1)
(※2)
最大再配信
回数
1
1~
214748364
7(回)
EJBタイマーの再配信回数の最大値です。
本設定値の回数分の再配信を実行してもコー
ルバック処理が成功しなかった場合、EJBタ
イマーサービスは該当のEJBタイマーを削除
します。
○
再配信間隔
5000
1~
214748364
7(ミリ秒)
EJBタイマーの再配信間隔です。
○
タイマー
データソー
ス
jdbc/
__Timer
Pool
文字列
EJBタイマーサービスが使用するデータソー
スです。
○
本バージョンでは使用できません。
EJBタイ
マーサービ
スの追加プ
ロパティ
その他
SFSB持続
性のタイプ
none
セッション格
納位置
$
{com.su
n.aas.ins
tanceRo
ot}/
sessionstore
追加プロパ
ティ
・ none
・ file
文字列
キャッシュされているStateful Session Beanの
インスタンス情報の格納方法を選択できます。
(注5)
・ noneの場合
○
○
無効です。
・ fileの場合
passivateしたBeanインスタンスの対話状
態を格納するディレクトリを指定します。
空文字を設定した場合は省略値が適用
されます。相対パスで指定した場合は
IJServerクラスタのカレントディレクトリから
の相対パスとなります。
本バージョンでは使用できません。
※1:「説明」に「noneの場合」、「fileの場合」とある定義項目は「SFSB持続性のタイプ」の定義値によって説明が変更とな
ります。ただし、Entity Beanインスタンスは「fileの場合」でキャッシングされます。
※2:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
注1)
メソッド実行完了時にBeanインスタンスをキャッシュに戻した時に、キャッシュに存在するBeanインスタンスが最大キャッ
シュサイズとキャッシュのサイズ変更量から算出された閾値を超過した場合、超過したインスタンスはpassivate対象の
インスタンスとなります。
閾値は以下の式で算出されています。
- キャッシュのサイズ変更量が最大キャッシュサイズを超えている場合
閾値 = 最大キャッシュサイズ × 0.75 + 1
- キャッシュのサイズ変更量が最大キャッシュサイズを超えていない場合
閾値 = 最大キャッシュサイズ - キャッシュのサイズ変更量 + 1
注2)
passivate対象のインスタンスはキャッシュのサイズ変更量の指定値分passivateしますが、passivate対象のインスタンス
数が8に満たない場合はpassivateしません。
- 515 -
注3)
削除タイムアウトとキャッシュアイドルタイムアウトの指定値の大小関係とその場合の動作を説明します。
- 削除タイムアウト>キャッシュアイドルタイムアウトの場合
アイドル状態のBeanはキャッシュアイドルタイムアウトの指定時間超過後passivate対象となります。passivateされた
Beanは、削除タイムアウトの指定時間超過後に削除されます。
- 削除タイムアウト≦キャッシュアイドルタイムアウトの場合
アイドル状態のBeanはキャッシュアイドルタイムアウトの指定時間超過後passivate対象となり、passivate後に直ち
に削除されます。
注4)
プールの監視は指定値の間隔で実施しますが、起動後に1回行った後はEJBアプリケーションの使用状況を確認し、
使用されていないBeanインスタンスはプールサイズを調整しません。
注5)
Interstage Java EE DASサービスではSFSB持続性のタイプは「none」固定となります。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.7 EJBの提供機能
チューニング方法
「チューニングガイド」-「EJBコンテナのチューニング」
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.ejb-container定義項目
configs.config.ejb-container-availabilityの定義項目
6.8.9 Message-driven Beanデフォルトプールの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
Enterprise Beanインスタンスのプーリング
初期および
最小プール
サイズ
0
0~
2147483647
(最大プール
サイズ以下)
プールに確保するインスタンスの数です。
EJBアプリケーションへのアクセス時、または
アイドルタイムアウト監視処理時に、プールサ
イズが指定された数より少ない場合、EJBコン
テナは処理スレッドとは別のスレッドでBeanイ
ンスタンスを生成してプールに追加します。
生成数はプールサイズ変更量が適用されます。
指定された値が最大プールサイズより大きい
場合には、最大プールサイズを初期および
最小プールサイズとみなします。
また、処理要求によりプールに存在するイン
スタンス数が指定した値より小さくなると、EJB
コンテナはプールされたBeanインスタンスが
指定された値になるまでBeanインスタンスを
生成してプールに追加します。
- 516 -
○
項目名
省略値
範囲
説明
再起動要否
(※)
最大プール
サイズ
32
0~
2147483647
(初期および
最小プール
サイズ以上、
かつプール
サイズ変更
量以上)
プールされるBeanインスタンスの最大数です。
Beanインスタンスでの処理完了時にプール
に存在するインスタンス数が指定された数の
場合には、使用したBeanインスタンスをプー
ルに戻さずに破棄します。
0を設定した場合はデフォルト値が設定され
ます。
○
プールサイ
ズ変更量
8
0~
2147483647
(最大プール
サイズ以下)
一度に縮小または拡張するプールサイズです。
最大プールサイズを超えたり、最小プールサ
イズを下回ることがないように、調整されます。
0を設定した場合、デフォルト値が設定されま
す。
○
アイドルタイ
ムアウト
600
1~
214748364
7(秒)
プール内インスタンスの最大許容アイドル時
間です。
EJBコンテナは設定値の間隔でプールを監
視し、プールサイズを調整します(注)。
プール内インスタンス数が最小プールサイズ
以上の場合、設定値よりも長くアクセスがな
かったインスタンスを破棄します。
プール内インスタンス数が最小プールサイズ
未満の場合、プールサイズ変更量に従いイ
ンスタンスを追加します。
0を設定した場合はデフォルト値が設定され
ます。
○
その他
追加プロパ
ティ
本バージョンでは使用できません。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
注) プールの監視は指定値の間隔で実施しますが、起動後に1回行った後はEJBアプリケーションの使用状況を確認し、
使用されていないBeanインスタンスはプールサイズを調整しません。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.7 EJBの提供機能
チューニング方法
「チューニングガイド」-「EJBコンテナのチューニング」
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.mdb-containerの定義項目
6.8.10 JMSサービスの定義項目
- 517 -
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
ホスト
localhos
t
文字列
IJServerクラスタが参照するメッセージブロー
カの動作するホスト名を定義します。
○
ポート
7676
1~65535
IJServerクラスタが参照するメッセージブロー
カのポート番号を定義します。
○
管理ユー
ザーID
文字列
IJServerクラスタが参照するメッセージブロー
カの管理者のユーザ名を定義します。
本定義はMessage-driven Beanアプリケーショ
ンが参照するJMS送信先リソースの存在確認
をメッセージブローカに対して行う際などに
使用されます。
○
管理者パス
ワード
文字列
IJServerクラスタが参照するメッセージブロー
カの管理者のパスワードを定義します。
本定義はMessage-driven Beanアプリケーショ
ンが参照するJMS送信先リソースの存在確認
をメッセージブローカに対して行う際などに
使用されます。
○
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.18 JMSの提供機能
4.16 JMSの運用方法
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.jms-serviceの定義項目
6.8.11 ロガーの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
ログ出力
ディレクトリ
文字列
$
{com.sun.aas.instan
ceRoot}\logs
サーバーログ、Java VMログ、HTTPアクセス
ログ、IIOPアクセスログ、HTTPトレースログ
およびモニタロギングのログを出力するディ
レクトリのルートパスを指定します。絶対パス
で指定してください。
パスの長さは、ファイル名(ローテーション後
のファイル名)を含めてOSの最大値の範囲
内になるようにしてください。HTTPアクセス
- 518 -
○
項目名
省略値
範囲
説明
再起動要否
(※)
ログを採取する場合は、その分も考慮してパ
スの長さを決定してください。
指定した値の先頭が$
{com.sun.aas.instanceRoot}以外の場合、
IJServerクラスタ、サーバーインスタンス削除
時に、ログファイルが出力されるディレクトリ
は削除されません。手動で削除してください。
$
{com.sun.aas.instan
ceRoot}/logs
ローテー
ションのタイ
プ
logsize
ログサイズ
1
ログ収集時
間
世代数
・ logsize
サーバーログ、Java VMログおよびモニタロ
ギングのログをバックアップする場合にログ
サイズ(logsize)とログ収集時間(time)のどち
らでバックアップを行うかを指定します。 (注
1)
○
1~
512(Mbyte)
サーバーログ、Java VMログおよびモニタロ
ギングのログの最大サイズを指定します。ロ
グファイルが指定したサイズに達するとロー
テーションされます。 (注1)
○
0
0~23
サーバーログ、Java VMログおよびモニタロ
ギングのログについて、ローテーションを実
行する時間を指定します。毎日指定した時
刻にローテーションされます。 (注1)
○
1
1~9
ローテーションしたサーバーログ、Java VM
ログおよびモニタロギングのログを保管する
世代数を指定します。
保管するログファイルの数が指定した世代
数を超えた場合は、一番古い世代のログファ
イルが削除されます。 (注1)
○
・ time
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
注1)
HTTPアクセスログの設定は「6.8.3 HTTPサービスの定義項目」で行います。
IIOPアクセスログの設定は「6.8.4 IIOPサービスの定義項目」で行います。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
機能説明
参照先
4.21 Java EEアプリケーションのログ
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.log-serviceの定義項目
6.8.12 セキュリティの定義項目
- 519 -
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
デフォル
トレルム
file
文字列
サーバが認証用に使用する有効
なレルム。
×
JACC
default
文字列
設定されているJACCプロバイダの
クラス名。
×
レルム名
英数字、また
は特殊文字
(‘\’、‘-’、
‘_’、‘.’、
‘/’、‘;’、
‘#’)。
先頭には、
英数字また
は‘_’だけ指
定可。
レルムの名前。
レルムク
ラス名
文字列
レルムクラスの名前。
ldapレルムの場合:
com.sun.enterprise.security.auth.r
ealm.ldap.LDAPRealm
fileレルムの場合:
com.sun.enterprise.security.auth.r
ealm.file.FileRealm
OSレルムの場合:
com.fujitsu.interstage.javaee.secu
rity.auth.realm.os.OSRealm
×
指定可能なプロパティについては、
「プロパティ」を参照してください。
×
JAASコ
ンテキス
ト
プロパティ: jaas-contextで指定しま
す。
レルムが使用するログインモジュー
ルのタイプを指定します。レルムに
合わせて以下の値を設定してくだ
さい。
fileレルム : fileRealm
ldapレルム : ldapRealm
OSレルム : osRealm
×
グループ
の割り当
て
プロパティ:assign-groupsで指定し
ます。
認証済みのユーザすべてに対し
て割り当てるグループを指定します。
複数のグループを指定する場合
はカンマ(,)で区切って指定します。
×
キーファ
イル
プロパティ:fileで指定します。
keyfileの完全パスおよび名前を指
定します。
○
レルムの
追加プロ
パティ
追加プロ
パティ
- 520 -
項目名
省略値
範囲
説明
再起動要否
(※)
ディレクト
リ
プロパティ:directoryで指定します。
接続するディレクトリサービスの
URLを指定します。
×
基本DN
プロパティ:base-dnで指定します。
ユーザを検索する最上位ディレク
トリのDNを指定します。
×
ユーザを
検索する
ための条
件
uid=
%s
プロパティ:search-filterで指定しま
す。
ユーザを検索するための条件を指
定します。"ユーザIDが設定されて
いる属性名"=%sの形式で記述し
ます。
×
グループ
を検索
するため
の条件
unique
memb
er=%d
プロパティ:group-search-filterで指
定します。
グループを検索するための条件を
指定します。"ユーザのdnが設定
されている属性名"=%dの形式で
記述します。
×
グループ
を検索
する最上
位ディレ
クトリの
DN
公開
ディレ
クトリと
同じ
プロパティ:group-base-dnで指定し
ます。
グループを検索する最上位ディレ
クトリのDNを指定します。
×
ロールと
マッピン
グするグ
ループ
名が設
定されて
いる属性
名
「CN」
プロパティ:group-targetで指定しま
す。
ロールとマッピングするグループ
名が設定されている属性名を指定
します。
×
認証情
報の
プール
true
プロパ
ティ:com.sun.jndi.ldap.connect.po
olで指定します。
認証情報のプールを設定します。
×
true:認証情報をプールします。
false:認証情報をプールしません。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
プロパティ
参照/設定可能なプロパティには以下があります(一部を記載しています)。
「レルムの追加プロパティ」で指定可能なプロパティ(レルムにかかわりなく指定可能なプロパティ)
項目名
プロパティ名
JAASコンテキスト
jaas-context
グループの割り当て
assign-groups
- 521 -
「レルムの追加プロパティ」で指定可能なプロパティ(fileレルムを使用する場合)
項目名
プロパティ名
キーファイル
file
「レルムの追加プロパティ」で指定可能なプロパティ(ldapレルムを使用する場合)
項目名
プロパティ名
ディレクトリ
directory
基本DN
base-dn
ユーザを検索するための条件
search-filter
グループを検索するための条件
group-search-filter
グループを検索する最上位ディレクトリのDN
group-base-dn
ロールとマッピングするグループ名が設定されている属性
名
group-target
認証情報のプール
com.sun.jndi.ldap.connect.pool
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
機能説明
参照先
5.2 Java EEアプリケーションのセキュリティ機能
5.3 セキュリティ機能を利用した運用方法
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.security-serviceの定義項目
6.8.13 トランザクションサービスの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
再起動
時
true
トラン
ザク
ション
タイム
アウト
0
・ true
・ false
0~
214748364
7(秒)
トランザクションは、サーバクラッシュま
たはリソースマネージャークラッシュの
いずれかにより未完了(インダウト状
態)になる可能性があります。
本パラメタを有効にすると、サーバの
起動時にインダウト状態を回復しトラン
ザクションを完了させます(注1)。
○
トランザクションが完了するまでの時間
を指定します。IJServerクラスタはトラ
ンザクションが設定された時間内に完
了しない場合、トランザクションの状態
を“MarkedRollback”に変更します(注
2)。
Interstage
Java EE
DASサービ
スのインスタ
ンスは再起
動不要。
- 522 -
項目名
省略値
範囲
説明
再起動要否
0を指定した場合、サーバはトランザク
ションの完了を待機し続けます。
また、トランザクションサービスに設定
する以外に、Enterprise JavaBeanでト
ランザクション制御をコンテナが行う場
合にはInterstage EJB application
deployment descriptor (sun-ejbjar.xml)のcmt-timeout-in-secondsタグ
を指定することで、Enterprise
JavaBeanごとにタイムアウト値を指定
することもできます。
サーバーイ
ンスタンスは
再起動必要。
(※)
再試行
タイム
アウト
600
0~
214748364
7(秒)
トランザクションが複数のサーバにわ
たっている場合、トランザクションを開
始したサーバがトランザクションの結果
を取得しようとして他のサーバに問い
合わせる場合があります。本パラメタ
はアクセスできないサーバに対して再
接続を試みる時間を設定します。
0を指定した場合、再接続は行いませ
ん。
Interstage
Java EE
DASサービ
スのインスタ
ンスは再起
動不要。
サーバーイ
ンスタンスは
再起動必要。
トラン
ザク
ション
ログの
位置
$
{com.s
un.aas.i
nstance
Root}
/logs
文字列
トランザクションログは、関連リソースの
データの整合性を維持して障害を回
復するために、各トランザクションにつ
いての情報を記録します。トランザク
ションログは、本パラメタで指定した
ディレクトリの 「[IJServerクラスタのイン
スタンス名]/tx 」サブディレクトリに保存
されます。(「[IJServerクラスタのインス
タンス名]/tx」 サブディレクトリは自動
的に生成されます。)
相対パスで指定した場合は、$
{com.sun.aas.instanceRoot}/logsを基
点とした相対パスになります。
省略値の$
{com.sun.aas.instanceRoot}変数につ
いては、「6.8.1 定義時に利用できるプ
ロパティ」を参照してください
○
特殊な
結果判
別
rollback
再試行タイムアウトに指定した時間が
経過しても関連リソースにアクセスでき
ない場合、本パラメタに指定した方法
でトランザクションを完了させます。
未確定なトランザクションのコミットは、
アプリケーションのデータの整合性を
損なう可能性がありますので、本パラ
メタを「コミット」に設定する適切な理由
がないかぎり、「ロールバック」のままに
してください。
○
キーポ
イント
間隔
65536
キーポイントとはトランザクションログ
ファイルを圧縮する処理のことです。
本パラメタでキーポイント処理を実行
するトランザクション数の間隔を指定
することができます。
Interstage
Java EE
DASサービ
スのインスタ
ンスは再起
動不要。
・ rollbac
k
・ commit
1~
214748364
7(トランザク
ション数)
- 523 -
項目名
省略値
範囲
説明
再起動要否
(※)
サーバーイ
ンスタンスは
再起動必要。
追加プ
ロパ
ティ
■プロパ
ティ名:
半角英数
字、マルチ
バイト文字、
または特殊
文字 (‘-’、
‘_’、‘.’、
‘/’、‘;’、
‘#’)。
先頭には、
半角英数
字もしくは
マルチバイ
ト文字を指
定可。
■プロパ
ティ値:
文字列
名前と値の組み合わせでプロパティ
項目を追加することが可能です。
○
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
注1)
トランザクション回復時に他のサーバのリソースにアクセスできないなどの理由により起動開始が遅延することが考え
られます。その場合Interstageは再試行タイムアウトに設定された時間で再接続を試み、それでも失敗した場合は特
殊な結果判別に指定された方法でトランザクションを完了します。
注2)
トランザクションの状態については、「2.14.6 トランザクションの監視と凍結機能」を参照してください。
プロパティ
参照/設定可能なプロパティには以下があります(一部を記載しています)。
「追加プロパティ」で指定可能なプロパティ
項目名
プロパティ名
トランザクションログの無効化
disable-distributed-transactionlogging
XAResourceに設定するトランザクションタイムアウト
xaresource-txn-timeout
トランザクションログの出力先JDBCリソース名
db-logging-resource
Use Last Agent Optimization
use-last-agent-optimization
トランザクション内における非XAリソースの複数利用
multi-nonXA-only-supported
追加プロパティの定義項目
- 524 -
項目名
省略値
範囲
・ true
説明
トランザク
ションログの
無効化
false
XAResourc
eに設定する
トランザク
ションタイム
アウト
使用す
るJDBC
ドライバ
によって
異なりま
すので、
JDBCド
ライバの
仕様を
確認して
ください。
0~
2147483647(
秒)
(ただし、使用
するJDBCド
ライバによっ
て異なります
ので、JDBC
ドライバの仕
様を確認して
ください。)
本プロパティに利用した値を、グローバルトラ
ンザクションで使用するXAResourceに対して
setTransactionTimeoutメソッドを使用してタイ
ムアウト値(秒)を設定します。
トランザク
ションログの
出力先
JDBCリソー
ス名
なし
文字列
本プロパティにJDBCリソースのJNDI名(例:
jdbc/TxLog)を指定します。
指定したJDBCリソースが対象とするデータ
ベースにトランザクションログを格納します(注
2)。
Use Last
Agent
Optimizatio
n
true
・ true
トランザク
ション内に
おける非XA
リソースの複
数利用
false
・ false
・ false
・ true
・ false
本プロパティをtrueに設定するとトランザクショ
ンログの出力を無効にします(注1)。
ログを出力しない分パフォーマンスの向上を
見込めますが、障害の回復はできなくなります。
そのため、本項目を無効(true)に設定するこ
とは推奨しません。
本プロパティをtrueに設定すると、トランザク
ション中に複数のリソースを使用する場合に、
1つだけ非XAリソースを使用できます。
本プロパティをtrueに設定すると、トランザク
ション内で複数の非XAリソースをアクセスで
きます。
注1)
トランザクションログを無効化した場合は、再起動時の定義もあわせて無効化してください。
注2)
本バージョンでは、トランザクションログをデータベースに格納する方法はサポートしていません。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.14 トランザクション制御
チューニング方法
「チューニングガイド」-「トランザクションサービスのチューニング」
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.transaction-serviceの定義項目
- 525 -
6.8.14 監視サービスの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
モニタロギ
ング
false
採取間隔
10
スレッドプー
ル
OFF
・ true
モニタロギング機能の有効/無効を指定します。
×
ログ採取の時間間隔を指定します。
ロギング中に採取間隔を変更すると、採取間
隔を変更した時刻から変更後の採取間隔を
経過した時点で、次のログ出力が行われます。
○
スレッドプールを監視するには、このオプショ
ンの監視レベルを「LOW」または「HIGH」に
設定します。
×
システムORBを監視するには、このオプショ
ンの監視レベルを「LOW」または「HIGH」に
設定します。
×
配備EJBコンポーネント、EJBプール、および
EJBキャッシュを監視するには、このオプショ
ンの監視レベルを「LOW」または「HIGH」に
設定します。EJBビジネスメソッドも監視する
には、このメソッドを「HIGH」に設定します。
×
配備サーブレットを監視するには、このオプ
ションの監視レベルを「LOW」または「HIGH」
に設定します。
×
トランザクションサブシステムを監視するには、
このオプションの監視レベルを「LOW」または
「HIGH」に設定します。
×
HTTPリスナーと仮想サーバを監視するには、
このオプションの監視レベルを「LOW」または
「HIGH」に設定します。
×
JDBC接続プールを監視するには、このオプ
ションの監視レベルを「LOW」または「HIGH」
に設定します。
×
コネクタサービスを監視するには、このオプ
ションの監視レベルを「LOW」または「HIGH」
に設定します。
本項目の定義値は、JMSサービスの監視レ
ベルと共有されます。いずれかの値を変更す
ると、他の項目の定義値へも反映されます。
本項目はInterstage Java EE管理コンソール
では「JMS/コネクタサービス」と表示されます。
×
・ false
1~60(分)
・ LOW
・ HIGH
・ OFF
ORB(IIOP
コネクショ
ン)
OFF
・ LOW
・ HIGH
・ OFF
EJBコンテ
ナ
OFF
・ LOW
・ HIGH
・ OFF
Webコンテ
ナ
OFF
・ LOW
・ HIGH
・ OFF
トランザク
ションサー
ビス
OFF
・ LOW
・ HIGH
・ OFF
HTTPサー
ビス
OFF
・ LOW
・ HIGH
・ OFF
JDBC接続
プール
OFF
・ LOW
・ HIGH
・ OFF
コネクタ接
続プール
OFF
・ LOW
・ HIGH
・ OFF
- 526 -
項目名
省略値
範囲
説明
再起動要否
(※)
コネクタ
サービス
OFF
・ LOW
・ HIGH
・ OFF
JMSサービ
ス
OFF
・ LOW
・ HIGH
・ OFF
JVM
OFF
・ LOW
・ HIGH
・ OFF
追加プロパ
ティ
コネクタサービスを監視するには、このオプ
ションの監視レベルを「LOW」または「HIGH」
に設定します。
本項目の定義値は、JMSサービスの監視レ
ベルと共有されます。いずれかの値を変更す
ると、他の項目の定義値へも反映されます。
本項目はInterstage Java EE管理コンソール
では「JMS/コネクタサービス」と表示されます。
×
JMSサービスを監視するには、このオプショ
ンの監視レベルを「LOW」または「HIGH」に
設定します。
本項目の定義値は、コネクタサービスの監視
レベルと共有されます。いずれかの値を変更
すると、他の項目の定義値へも反映されます。
本項目はInterstage Java EE管理コンソール
では「JMS/コネクタサービス」と表示されます。
×
Java仮想マシンを監視するには、このオプショ
ンの監視レベルを「LOW」または「HIGH」に
設定します。
なお、モニタロギングのJava VMの性能情報
は、本項目の設定値にかかわらず採取され
ます。
×
本バージョンでは使用できません。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
注意
監視サービスの定義項目を有効に設定している場合、定義済みのサーバーインスタンス、アプリケーションの数に応じて
Interstage Java EE DASサービスのメモリが使用されます。
Interstage Java EE DASサービスでメモリ不足が発生した場合は、「チューニングガイド」-「Interstage Java EE DASサー
ビスのヒープ領域サイズとアドレス空間」を参照して対処を行ってください。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
機能説明
参照先
「チューニングガイド」-「モニタロギング」
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.monitoring-serviceの定義項目
- 527 -
6.8.15 Java VMの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
デバッグ
false
・ true
・ false
trueを指定すると、Java VMの定義
項目の「デバッグオプション」が有
効になります。
○
デバッグ
オプショ
ン
"Xdebug
Xrunjd
wp:tran
sport=d
t_socke
t,server
=y,susp
end=n,a
ddress=
9009"
文字列
‘-’で始まる
文字列をオ
プションとし
て指定でき
ます。
Java VMの定義項目の「デバッグ」
にtrueが指定されたときだけ有効
になる、Java VMオプションを指定
します。
複数のオプションを指定する場合、
オプションに指定する値全体を二
重引用符(")で括り、各オプション
を半角空白( )で区切って指定しま
す。(注1)
○
Javacオ
プション
"-g"
文字列
‘-’で始まる
文字列をオ
プションとし
て指定でき
ます。
複数のオプションを指定する場合、
オプションに指定する値全体を二
重引用符(")で括り、各オプション
を半角空白( )で区切って指定しま
す。(注1)
○
クラスパ
スのサ
フィックス
文字列
サーバークラスパスの末尾にJAR
ファイルを挿入するには、このサ
フィックスフィールドにファイルの完
全パス名を入力します。
複数のパスを指定する場合は、$
{path.separator}、または、セミコロ
ン(;)(Windows(R)の場合)、コロン
(:)(Solaris、Linuxの場合)で区切っ
て指定します。(注2)
○
ネイティ
ブライブ
ラリパス
のサ
フィックス
文字列
ネイティブライブラリパスの末尾に
追加するエントリを指定します。ネ
イティブライブラリパスは、ネイティ
ブ共有ライブラリの相対パス、標準
のJREネイティブライブラリパス、
Interstage Java EE Node Agent
サービスを起動したシェルの環境
設定(UNIXでは
LD_LIBRARY_PATH)、ネイティ
ブライブラリパスのサフィックスを連
結したものです。
複数のパスを指定する場合は、$
{path.separator}、または、セミコロ
ン(;)(Windows(R)の場合)、コロン
(:)(Solaris、Linuxの場合)で区切っ
て指定します。(注3)
○
ネイティブライブラリパスを追加し
たい場合は、Interstage Java EE
- 528 -
項目名
省略値
範囲
説明
再起動要否
(※)
Node Agentサービスを起動する
シェルの環境変数PATH(UNIXで
はLD_LIBRARY_PATH)、または
本項目を修正してください。
なお、本項目で指定した値は、
サーバーインスタンス起動時にシ
ステムプロパティjava.library.pathと
して有効になりますが、利用する
ネイティブモジュールにより、
java.library.pathにパスを定義した
のみでは動作しない場合がありま
す。
この場合は、Interstage Java EE
Node Agentサービス起動時の環
境変数
PATH(LD_LIBRARY_PATH)に
て指定を行ってください。
Interstage Java EE Node Agent
サービスの環境変数設定につい
ては、「4.4.3 環境変数の設定」を
参照してください。
JVMオ
プション
1~4096文
字の文字
列。‘-’で始
まる文字列
をオプショ
ンとして指
定できます。
追加プロ
パティ
プロファ
イラ名
複数のオプションを指定する場合、
各オプションをカンマ(,)で区切っ
て指定します。(注4)
デフォルト設定(default-config)の
JVMオプションは追加、および削
除、変更しないでください。
IJServerクラスタ、またはInterstage
Java EE DASサービスのJVMオプ
ションを定義する場合も削除しな
いでください。追加、または定義済
みの値を変更してください。(注5)
本バージョンでは使用できません。
・ 半角英
プロファイラの名前です。
数 字、
または
特殊文
字 ('-' 、
'_' 、 '.'、
'/' 、 ';'、
'#')
・ 先頭に
は、半
角英数
字また
は‘_’
のみ指
定可。
・ 1~512
文字の
文字列
- 529 -
○
項目名
省略値
範囲
説明
再起動要否
(※)
クラスパ
ス
1~4096文
字の文字列
プロファイラのクラスパスを指定し
ます。
○
ネイティ
ブライブ
ラリ パス
1~4096文
字の文字列
プロファイラのネイティブ ライブラリ
パスを指定します。
○
プロファイラ設定を有効または無
効にします。
○
プロファイラ設定のJVM オプショ
ン。
複数のオプションを指定する場合、
各オプションをカンマ(,)で区切っ
て指定します。
○
プロファ
イラ設定
の状態
プロファ
イラ設定
のJVM
オプショ
ン
true
・ true
・ false
1~4096文
字の文字
列。‘-’で始
まる文字列
をオプショ
ンとして指
定できます。
プロファ
イラ設定
の追加
プロパ
ティ
本バージョンでは使用できません。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
注1)
例
デバッグオプションに複数のオプションを指定する場合のコマンドの指定例
asadmin
set
testserver.java-config.debug-options="-Xdebug
Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9009"
注2)
例
クラスパスのサフィックスに複数のオプションを指定する場合の指定例
/opt/lib/jar1.jar${path.separator}/opt/lib/jar2.jar
注3)
例
ネイティブライブラリパスのサフィックスに複数のオプションを指定する場合の指定例
/opt/lib1${path.separator}/opt/lib2
注4)
例
JVMオプションに複数のオプションを指定する場合のコマンドの指定例
- 530 -
-
asadmin set testserver.java-config.jvm-options=-Xmx256m,-XX:MaxPermSize=128m
注5)
デフォルト設定(default-config)のJVMオプションを確認するコマンド
asadmin get default-config.java-config.jvm-options
デフォルト設定(default-config)で定義されているJVMオプションは以下です。
JVMオプション
1
-XX:MaxPermSize=192m
2
-Djavax.management.builder.initial=com.sun.enterprise.ee.admin.AppServerMBeanServerBuilder
3
-Dcom.sun.appserv.pluggable.features=com.sun.enterprise.ee.server.pluggable.
EEPluggableFeatureImpl
4
-Djava.endorsed.dirs=${com.sun.aas.installRoot}/lib/endorsed
5
-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy
6
-Djava.security.auth.login.config=${com.sun.aas.instanceRoot}/config/login.conf
7
-Dsun.rmi.dgc.server.gcInterval=3600000
8
-Dsun.rmi.dgc.client.gcInterval=3600000
9
-Xmx256m
1
0
-Djava.ext.dirs=${com.sun.aas.javaRoot}/lib/ext${path.separator}${com.sun.aas.javaRoot}/jre/lib/ext
${path.separator}${com.sun.aas.instanceRoot}/lib/ext${path.separator}${com.sun.aas.derbyRoot}/lib
${path.separator}${com.sun.aas.installRoot}/lib/jdbcdrivers
1
1
-Djdbc.drivers=org.apache.derby.jdbc.ClientDriver
1
2
-Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serverbeans.
AppserverConfigEnvironmentFactory
1
3
-Dcom.sun.enterprise.taglibs=appserv-jstl.jar,jsf-impl.jar
1
4
-Dcom.sun.enterprise.taglisteners=jsf-impl.jar
1
5
-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks
1
6
-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks
Interstage Java EE DASサービスのインストール直後の設定(server-config)に定義されているJVMオプションは以下で
す。
JVMオプション
1
-XX:MaxPermSize=192m
2
-Djavax.management.builder.initial=com.sun.enterprise.ee.admin.AppServerMBeanServerBuilder
3
-Dcom.sun.appserv.pluggable.features=com.sun.enterprise.ee.server.pluggable.
EEPluggableFeatureImpl
4
-Djava.endorsed.dirs=${com.sun.aas.installRoot}/lib/endorsed
5
-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy
6
-Djava.security.auth.login.config=${com.sun.aas.instanceRoot}/config/login.conf
- 531 -
JVMオプション
7
-Dsun.rmi.dgc.server.gcInterval=3600000
8
-Dsun.rmi.dgc.client.gcInterval=3600000
9
-Xmx512m
1
0
-Djava.ext.dirs=${com.sun.aas.javaRoot}/lib/ext${path.separator}${com.sun.aas.javaRoot}/jre/lib/ext
${path.separator}${com.sun.aas.instanceRoot}/lib/ext${path.separator}${com.sun.aas.derbyRoot}/lib
${path.separator}${com.sun.aas.installRoot}/lib/jdbcdrivers
1
1
-Djdbc.drivers=org.apache.derby.jdbc.ClientDriver
1
2
-Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serverbeans.
AppserverConfigEnvironmentFactory
1
3
-Dcom.sun.enterprise.taglibs=appserv-jstl.jar,jsf-impl.jar
1
4
-Dcom.sun.enterprise.taglisteners=jsf-impl.jar
1
5
-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks
1
6
-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks
1
7
-Dcom.sun.logging.ee.enterprise.system.das.trace=true
1
8
-Dcom.sun.logging.ee.enterprise.system.das.trace.filename=jmxoperation.log
1
9
-Dcom.sun.logging.ee.enterprise.system.das.trace.count=5
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.java-configの定義項目
6.8.16 スレッドプールの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
スレッドプー
ルID
英数字、また
は特殊文字
(‘-’、‘_’、
- 532 -
項目名
省略値
範囲
説明
再起動要否
(※)
‘.’、‘/’、‘;’)。
先頭には、
英数字また
は‘_’だけ指
定可。
最小プール
サイズ
0
0~
214748364
7(最大プー
ルサイズ以
下)
○
最大プール
サイズ
200
1~
214748364
7(最小プー
ルサイズ以
上)
○
アイドルタイ
ムアウト
120
1~
2147483647
○
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
「チューニングガイド」-「EJBコンテナのチューニング」
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.thread-poolsの定義項目
6.8.17 グループ管理サービスの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
プロトコル
最大試行
3
1~
2147483647
異常を認識するまでに試行するハートビート
の信号の送信回数を指定します。
○
プロトコルタ
イムアウト
2000
1000~
120000(ミリ
秒)
ハートビートの信号を送信する時間間隔を指
定します。
○
検証済みタ
イムアウト
1500
1500~
120000(ミリ
秒)
異常を認識したサーバーインスタンスに対し、
ping要求を送信するまでの待ち時間を指定
します。
○
- 533 -
項目名
省略値
範囲
説明
再起動要否
(※)
ping要求を送信した結果、反応がなければ
そのインスタンスは停止したと判断されます。
最大間隔
本バージョンでは使用できません。
○
最小間隔
本バージョンでは使用できません。
○
グループ管理サービスがIJServerクラスタ内
のサーバーインスタンスの検出を待機する時
間を指定します。
○
pingタイム
アウト
2000
1000~
120000(ミリ
秒)
追加プロパ
ティ
本バージョンでは使用できません。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.21 グループ管理サービス
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
configs.config.group-management-serviceの定義項目
6.8.18 システムプロパティの定義項目
定義項目
項目名
省略値
システムプロ
パティ
範囲
説明
IJServerクラスタまたはサーバーインスタンス
に設定するシステムプロパティを指定します。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
create-system-properties
delete-system-property
list-system-properties
- 534 -
内容
参照先
asadminコマンドで
の定義項目名
configs.config.system-propertyの定義項目
6.8.19 プロセス制御の定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
環境変数
(注1)
アプリケーションが動作時に使用する環境変
数を、「環境変数=値」の形式で指定します。
複数の環境変数を指定する場合、各環境変
数をカンマ(,)で区切って指定します。(注2)
ただし、「PATH」および
「LD_LIBRARY_PATH」環境変数は指定で
きません。
なお、Interstage Java EE Node Agentサービ
ス起動時のシステムの環境変数と、本定義項
目で指定した環境変数の両方が有効になり
ます。環境変数名が重複した場合、本定義
項目が優先されます。
○
「PATH」環境変数を変更する場合は、本定
義項目ではなく、システムの環境変数を変更
し、マシンを再起動してください。
Javaヒープ/
Permanent
世代領域
不足時の制
御(注1)
true
JavaヒープまたはPermanent世代領域が不足
した場合のJava VMプロセスの制御を以下か
ら選択します。
○
・ true
プロセスを再起動する
・ false
ア プ リ ケ ー シ ョ ン に
java.lang.OutOfMemoryErrorを返却する
アプリケー
ション最大
処理時間
(注1)
480
アプリケー
ション最大
処理時間
超過時の制
御
false
0~
86400(秒)
アプリケーションの最大処理時間を指定します。
(注3)
○
アプリケーション最大処理時間を超過したと
きの動作を以下から選択します。
○
・ true
プロセスを強制停止します。運用中であ
る場合、自動再起動されます。
・ false
警告メッセージを出力します。
IJServerクラ
スタ起動待
ち時間(注
1)
600
0~
65535(秒)
Java VMプロセスの起動が完了するまでの監
視時間を指定します。0を指定した場合、プ
ロセス起動待ち時間の監視は行われません。
○
IJServerクラ
スタ停止待
180
0~
65535(秒)
Java VMプロセスの強制停止が完了するまで
の監視時間を指定します。0を指定した場合、
○
- 535 -
項目名
省略値
範囲
説明
再起動要否
(※)
ち時間(注
1)
カレントディ
レクトリのパ
ス(注1)
強制停止が完了するまでの時間監視は行わ
れません。(注4)
カレントディレクトリを配置するディレクトリを指
定します。指定するディレクトリは、作成可能
な絶対パスを指定してください。
[Java EE
共通
ディレク
トリ]/
nodeage
nts/ijna
○
カレントディレクトリは、以下の形式で作成さ
れます。
[指定したディレクトリ]/${サーバーインスタン
ス名}/current/latest
指定されたディレクトリは、事前チェックされ
ません。不正なディレクトリが指定されると
OM1033、またはNAGT0008を出力して起動
に失敗します。サーバーインスタンスのサー
バーログにメッセージが出力されていない場
合、Interstage Java EE Node Agentサービス
のサーバーログを確認してください。
退避するカ
レントディレ
クトリの世代
数(注1)
1
0~5
カレントディレクトリをバックアップする世代数
を指定します。0を指定した場合、カレントディ
レクトリは退避されません。
○
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
注1)
本項目は、Interstage Java EE DASサービスでは利用できません。
注2)
例
環境変数に複数の環境変数を指定する場合のコマンドの指定例
asadmin set testserver.ijserver-control.environment-variable="TestEnv1=test1,TestEnv2=test2"
注3)
Webアプリケーションの静的リソースへのリクエストも監視対象とする場合は、以下のJava VMオプションを設定してく
ださい。
- -Dcom.fujitsu.interstage.javaee.webtier.target.DefaultServlet=true
Java VMオプションの設定についてはasadminコマンドの「create-jvm-optionsサブコマンド」を参照してください。
注4)
監視時間超過時の動作は以下のとおりです。
通常停止時
1. Java VMログに1回目のフルスレッドダンプが出力されます。
2. 1.の10秒後に、Java VMログに2回目のフルスレッドダンプが出力されます。
3. 2.の10秒後、イベントログ/システムログにISJEE_OM1001のメッセージが出力されます。
4. 強制停止を行います。
5. 4.で強制停止もハングアップした場合、180秒後にプロセスを強制回収(kill)します。
- 536 -
強制停止時
1. Java VMログに1回目のフルスレッドダンプが出力されます。
2. 1.の10秒後に、Java VMログに2回目のフルスレッドダンプが出力されます。
3. 2.の10秒後、イベントログ/システムログにISJEE_OM1001のメッセージが出力されます。
4. プロセスを強制回収(kill)します。
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
2.4 IJServerクラスタ
チューニング方法
「チューニングガイド」-「IJServerクラスタのチューニング」
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
create-clusterサブコマンド
delete-clusterサブコマンド
list-clustersサブコマンド
asadminコマンドで
の定義項目名
configs.config.ijserver-controlの定義項目
6.9 システムプロパティの定義項目
定義項目
項目名
省略値
範囲
説明
再起動要否
(※)
システムプ
ロパティ
すべてのIJServerクラスタ、サーバーインスタ
ンスで有効となるシステムプロパティを指定し
ます。
※:IJServerクラスタの再起動が必要かどうかを示しています。
○:再起動必要、×:再起動不要
関連情報
詳細な説明や関連記事については、以下を参照してください。
内容
参照先
機能説明
チューニング方法
コマンド
asadminコマンドの以下のサブコマンド
getサブコマンド
setサブコマンド
listサブコマンド
asadminコマンドで
の定義項目名
system-propertyの定義項目
- 537 -
○
第7章 サンプル
7.1 Java EEのサンプル
Java EEのサンプルアプリケーション(Account Management Tool)は以下に格納されています。動作確認の方法について
は、「入門ガイド」を参照してください。
C:\Interstage\F3FMisjee\sample
/opt/FJSVisjee/sample
- 538 -
付録A Java DB
Java DBは、データベースと連携するアプリケーションを開発するために用意された簡易的なリレーショナルデータベー
スです。
Java DBは、Apache Derby V10.4をベースに開発されたデータベースです。従来、データベースと連携するアプリケー
ションを動かすにはデータベースを別途用意する必要があったため、アプリケーションの開発やデモンストレーションで
も環境を用意するのに手間がかかりました。
Java EE実行環境では、Javaで実装されたデータベースのJava DBが提供されます。Java DBは、JDBC APIによる基本的
なSQL実行がサポートされているため、データベースを別途用意しなくてもJava EE実行環境だけ用意すれば、データ
ベースと連携するアプリケーションの動作確認が可能です。
Java DBの利用方法は、以下のマニュアルを参照してください。
http://db.apache.org/derby/manuals/index.html#docs_10.4
上記マニュアルに記載している項目で、使用方法が異なる部分や動作保証されている機能範囲について以下に説明し
ます。
動作保証範囲外の機能についてのお問い合わせは、お受けしておりません。また、以下の特徴をもつ簡易的なデータ
ベースのため、実業務運用には使用しないでください。
・ 基本的なSQL言語だけ動作保証しています。
・ データベースのWindowsサービスでの起動は、サポートしていません。コマンドで起動したデータベースは、ログオ
フすると停止します。
・ クラスタ製品との連携は、サポートしていません。
注意
Interstageと同一のCPUのアーキテクチャをサポートしているJDBCドライバを使用してください。
A.1 環境設定
Java DBの各種コマンドを実行するには、以下の環境変数の設定が必要です。
環境変数
環境変数は、次のように設定します。sysinfoコマンドを実行して、JavaやJavaDBの情報が表示されることを確認することで、
環境が正しく設定されたか検証できます。
環境変数
DERBY_HOM
E
設定値
説明
Java DBのインストールディレクトリ
を指定します。
C:\Interstage\F3FMisjee\javadb
/opt/FJSVisjee/javadb
JAVA_HOME
JDK/JREのインストールディレクトリを指定してください。 JAVA_HOMEに指定したJDK/
JREを使用してコマンドを実行しま
す。
PATH
C:\Interstage\F3FMisjee\javadb\bin
/opt/FJSVisjee/javadb/bin
- 539 -
コマンド名だけでコマンドを実行す
るための設定です。
A.2 Java DBの運用操作
Java DBの運用操作について説明します。
組み込み環境
組み込み環境の場合、Java VM上でJava DBのクラスをロードしたタイミングでデータベースが起動します。また、Java VM
が停止するタイミングで、データベースも停止します。
クライアント/サーバ環境
Java DBの運用操作は、asadminコマンドのstart-databaseサブコマンドとstop-databaseサブコマンドで行います。詳細は、
「リファレンスマニュアル(コマンド編)」-「サブコマンド-カテゴリ: データベース運用」を参照してください。
Java DBを起動する時は、以下を指定できます。
・ Java DBのホスト名またはIPアドレス
ネットワークインタフェースが複数存在した場合、指定したIPアドレスからだけアクセスを許可します。デフォルトは
0.0.0.0が指定され、すべてのネットワークインタフェースからのアクセスを許可します。
・ Java DBのポート番号
クライアントからの接続を受け付けるポートを指定します。デフォルトは1527です。クライアントから接続する場合に、
データベースに接続する時のURLに指定したポート番号を指定して接続します。
・ Java DBのシステムディレクトリ
Java DBのシステムディレクトリを指定します。詳細は、「A.3 Java DBのシステムディレクトリ」を参照してください。
startNetworkServerコマンドとstopNetworkServerコマンドによる運用操作は、動作保証外です。
A.3 Java DBのシステムディレクトリ
Java DBは、指定されたシステムディレクトリにデータベース格納ディレクトリの作成や、システムディレクトリの定義ファイ
ルの読み込みなどを行います。JavaDBのシステムディレクトリは、デフォルトで以下が使用されます。
このJava DBのシステムディレクトリを変更するには、asadminコマンドのstart-databaseサブコマンドでデータベースを起動
するときに、--dbhomeオプションを指定します。
- 組み込み環境
- Java VMのカレントディレクトリ ※
- クライアント/サーバ環境
- データベース起動時のカレントディレクトリにderby.logが存在する場合
カレントディレクトリ
- データベース起動時のカレントディレクトリにderby.logが存在しない場合
Java EE共通ディレクトリ\databases
- 組み込み環境
- Java VMのカレントディレクトリ ※
- クライアント/サーバ環境
- データベース起動時のカレントディレクトリにderby.logが存在する場合
カレントディレクトリ
- データベース起動時のカレントディレクトリにderby.logが存在しない場合
Java EE共通ディレクトリ/databases
- 540 -
※ 各Java VMのカレントディレクトリについては、Java DBを使用する機能の仕様を確認してください。
A.4 SQL言語
動作保証されているSQL言語を以下に示します。
ステートメント(Statement)
・ ALTER TABLE statement
・ CREATE statements
・ DROP Statements
・ RENAME statements
・ SET statements
・ DELETE statement
・ FOR UPDATE clause
・ FROM clause
・ GROUP BY clause
・ HAVING clause
・ INNER JOIN
・ INSERT statement
・ JOIN operation
・ LEFT OUTER JOIN
・ ORDER BY clause
・ Query
・ RIGHT OUTER JOIN
・ ScalarSubquery
・ SelectExpression
・ SELECT statement
・ TableExpression
・ TableSubquery
・ UPDATE statement
・ VALUES expression
・ WHERE clause
組み込み関数(Built-in functions)
・ ABS or ABSVAL
・ AVG
・ Concatenation
・ COUNT
・ NULLIF and CASE expressions
・ CURRENT_DATE
- 541 -
・ CURRENT_TIME
・ CURRENT_TIMESTAMP
・ LENGTH
・ LOCATE
・ LCASE or LOWER
・ LTRIM
・ MAX
・ MIN
・ MOD
・ RTRIM
・ SQRT
・ SUBSTR
・ SUM
・ UCASE or UPPER
組み込みシステム関数(Built-in system functions)
なし
組み込みシステム・プロシジャ(Built-in system procedures)
なし
データ型(Data types)
・ BIGINT
・ BLOB
・ CHAR
・ CHAR FOR BIT DATA
・ CLOB
・ DATE
・ DECIMAL
・ DOUBLE
・ DOUBLE PRECISION
・ FLOAT
・ INTEGER
・ LONG VARCHAR
・ LONG VARCHAR FOR BIT DATA
・ NUMERIC
・ REAL
・ SMALLINT
・ TIME
・ TIMESTAMP
- 542 -
・ VARCHAR
・ VARCHAR FOR BIT DATA
式(Operator)
・ +、-、*、/、単項 + 式、単項 - 式
・ AND、OR、NOT
・ 比較( <、=、>、<=、>=、<> )
・ IS NULL, IS NOT NULL
・ LIKE
・ BETWEEN
・ IN
・ EXISTS
・ 限定比較(ALL、ANY、SOME)
A.5 データベースに接続する時のURL属性
Java DBのJDBCドライバでデータベースに接続するには、以下のURLを使用します。斜体部分が可変となります。
・ 組み込み環境の場合
jdbc:derby:databaseName[;URLAttributes=<value>[;...]]
・ クライアント/サーバ環境の場合
jdbc:derby://server[:port]/databaseName[;URLAttributes=<value> [;...]]
可変部分のURL属性には以下を指定します。
指定値
URL属性
server
データベースが要求を受け付けるホスト名(またはIPアドレス)
port
データベースが要求を受け付けるポート番号
databaseName
接続するデータベースの名前
URLAttributes=value
URL属性の属性名と値
このURLAttributeのURL属性で動作保証されるプロパティは以下です。
・ create=true
注意
・ 読み取り専用接続について
データベースへの書き込み権限のないユーザーでJava DBを起動した場合、そのデータベースとの接続は、常に読
み取り専用の接続になります。
・ encryptionAlgorithm属性について
encryptionAlgorithm属性のデフォルト値は"AES/CBC/NoPadding"です。
- 543 -
A.6 データソースプロパティ
Java DBが提供する各種データソースにはsetXXXメソッドで更新可能で、getXXXメソッドで参照可能なプロパティ(これ
をデータソースプロパティと呼びます)が用意されています。
動作保証されるデータソースプロパティは以下です。
・ ConnectionAttributes
・ DatabaseName
・ DataSourceName
・ Description
・ User
・ Password
・ PortNumber
・ ServerName
・ CreateDatabase
注意
UserプロパティとPasswordプロパティについて
Userプロパティで指定したユーザーIDおよびPasswordプロパティで指定したパスワードは、データベースの認証には使
用されません。ただし、IJServerクラスタまたはInterstage Java EE DASサービスからJava DB(クライアント/サーバ環境)へ
接続する場合には、必ずユーザーIDとパスワードを指定してください。指定したユーザーIDは、スキーマ名として使用さ
れます。パスワードには、任意の文字列を指定してください。
A.7 セキュリティ機能
Java DBの提供するセキュリティ機能
利用可能なセキュリティ機能はありません。
Java DB(クライアント/サーバ環境)を起動可能なユーザー
「5.1.4 権限と認証ユーザー」を参照してください。
ツールの実行権限
Java DBで提供するツールの実行権限、サーバープロセスの実行権限、認証ユーザーの詳細を以下に記載します。
操作
OSのユーザーの権限
OSのユーザーの権限
コマンドの実行権限
サーバープロセスの実効権限
ログイン認証のユーザー
ij
一般ユーザー
―
認証なし
sysinfo
一般ユーザー
―
認証なし
dblook
一般ユーザー
―
認証なし
データベースのファイル資源の所有者とアクセス権限
データベースのファイル資源は、以下の所有者およびアクセス権限で作成されます。
- 544 -
データベース格
納ディレクトリの
名前
資源の格納先
所有者
グループ
アクセス権限
データベース名
Java DBのシステム
ディレクトリ
データベース作成時の
Java DBを起動した
ユーザー
所有者の所属する
グループ
Java DBの起
動時にコン
ソール上に設
定された
umaskの値に
依存
データベースのファイル資源に対する書き込み権限のないユーザーがJava DBを起動した場合、そのデータベースとの
接続は読み取り専用接続となります。必要に応じて、Java DBを停止し、データベース格納ディレクトリ配下のアクセス権
限を手動で変更して、Java DBを再度起動してください。
ログファイルの所有者とアクセス権限
ログファイルは、以下の所有者およびアクセス権限で作成されます。
資源の格納先
所有者
グループ
アクセス権限
derby.log
Java DBのシステム
ディレクトリ
Java DBのシステム
ディレクトリ上に
derby.logが存在しな
い時、Java DBを起
動したユーザー
所有者の所属するグ
ループ
umaskの環境設定に
依存
dblook.log
カレントディレクトリ
カレントディレクトリ上
にdblook.logが存在
しない時、dblook
ツールを実行した
ユーザー
所有者の所属するグ
ループ
umaskの環境設定に
依存
Java DBのログ名
必要に応じて、Java DBを停止し、Java DBのログのアクセス権限を手動で変更して、Java DBを再度起動してください。
注意
Interstage運用グループを変更した場合の所有者とアクセス権限
issetsecuritymodeコマンドによりInterstage運用グループを変更した場合、Java DBのデフォルトのシステムディレクトリ配下
の全てのファイル資源は、変更後のInterstage運用グループに所属します。Interstage運用グループのユーザー間で一つ
のデータベースを共有して使用する場合は、所有グループの書き込み権限を有効に設定してください。デフォルト以外
の格納先にシステムディレクトリを指定した場合は、「使用上の注意」-「サービス運用ユーザーを変更した場合の資源
へのアクセス権限に関する注意事項」を参照して権限を変更してください。
注意
同梱のデータベースejbtimerの所有者権限とアクセス権限
製品に同梱されたEJBタイマーサービス用のデータベースejbtimerのファイル資源は、以下の権限でセットアップされます。
データベースejbtimerであらかじめ用意されているAPP.EJB__TIMER__TBLテーブルの詳細は、「2.8.3 EJBタイマーサー
ビス」を参照してください。
- 545 -
ディレクトリ名
ejbtimer
資源の格納先
Java EE共通ディレクト
リ/databases
所有者
グループ
システム管理者
Interstage運用
グループ
アクセス権限
775
A.8 Derbyプロパティ(Derby properties)
Java DBでは、システム、特定のデータベース、または特定のデータベース関連プロジェクト(表または索引)の動作を、プ
ロパティを使用して設定構成できます。
動作保証される(編集可能な)プロパティは以下です。
・ derby.system.home
A.9 ツール
以下のツールを利用できます。
・ ij
・ sysinfo
・ dblook
A.10 トラブルシューティング
JavaDBを使用して発生する以下のトラブルについて対処方法を説明します。
Java DBが意図せず異常終了した場合
Java DBが意図せず異常終了した場合、Java DBシステムディレクトリにdb.lckファイルが残存して、データベースのアクセ
スに失敗する場合があります。
データベースを起動するために、手動でdb.lckファイルを削除してください。データベースを使用中の場合に本ファイル
を削除すると、他のJava VMからデータベースを参照されてデータ破壊が発生する可能性があります。ファイルを削除す
る時にはデータベースを使用していないことを確認してから実施してください。
データベースに接続する時のURLのポート番号に0を指定した場合
データベースに接続する時のURLのポート番号に0を指定した場合、実際に接続するポート番号は1527が使用されます。
Java DBの接続時にファイルが開きすぎである旨のエラーが出力された場合
Java DBの接続時にファイルが開きすぎである旨のエラーが出力された場合、ファイルディスクリプタ不足が発生している
可能性があります。不要な接続を解放するか、ファイルディスクリプタの設定を見直してください。
Java DBの起動時にderby.logへアクセスできない旨の警告が出力された場合
Java DBを起動するユーザーが、derby.logの出力先ディレクトリおよびderby.logへの書き込み権限を有していない場合、
起動時に以下の警告が出力され起動処理が継続されます。
Unable to access derby.log in derby.logの絶対パス.
CLI416: Continuing to start database
このメッセージが出力された場合、そのまま継続してJava DBを利用することができますが、起動・停止時のログ情報は
derby.logへ書き込まれません。起動・停止時のログ情報をderby.logへ書き込む必要がある場合は、derby.logの出力先
ディレクトリおよびderby.logに対し、Java DBを起動するユーザーの読み込み権限・書き込み権限を手動で付与し、Java
DBを再起動してください。
- 546 -
dblookツールの実行時にdblook.logに対してPermission deniedが出力された場合
dblookツールの実行者が、カレントディレクトリおよびカレントディレクトリに存在するdblook.logへ書き込み権限を有して
いない場合、ツールの実行時に以下のエラーが出力され処理が中断されます。
Error initializing log file(s): java.io.FileNotFoundException: dblook.log (Permission denied)
カレントディレクトリおよびカレントディレクトリに存在するdblook.logに対し、dblookツールの実行者の読み込み権限・書
き込み権限を手動で付与し、再度処理を実行してください。
その他の既知の問題
LONG VARCHAR data typeフィールドの最大文字列長について
Derby Reference Manualに記載されたLONG VARCHARデータタイプの格納範囲の最大値は32700文字となってい
ますが、正しい仕様は32672文字です。
「ALTER TABLE statement」のSyntaxについて
Derby Reference Manualに記載された「ALTER TABLE statement」のSyntaxに誤りがあります。正しい仕様は以下の
とおりです。
----------------------------------------------------------------------------------------ALTER TABLE table-Name
{
ADD COLUMN column-definition |
ADD CONSTRAINT clause |
DROP [ COLUMN ] column-name [ CASCADE | RESTRICT ] | DROP { PRIMARY KEY | FOREIGN KEY constraintname | UNIQUE constraint-name | CHECK constraint-name | CONSTRAINT constraint-name } |
ALTER [ COLUMN ] column-alteration | LOCKSIZE { ROW | TABLE }
}
-----------------------------------------------------------------------------------------
- 547 -
付録B ファイル構成
ファイル構成について説明します。
B.1 Interstage Java EE DASサービスのファイル構成
Interstage Java EE DASサービスのファイル構成を以下に示します。
←上位ディレクトリ
下位ディレクトリ→
説明
addons
applications
j2ee-apps
アプリケーション名
サブモジュール名_拡張
子
j2ee-modules
アプリケーション名
配備後のモジュールを展開するディレクトリです。
EARモジュールが展開されます。
アプリケーションごとの資源が格納されます。
サブモジュール毎の資源が格納されます。
WAR/EJB-JAR/RAR/JARモジュールが展開されます。
アプリケーションごとの資源が格納されます。
ドメインに存在するすべてのIJServerクラスタ、サーバーインスタンスの
定義情報が格納されます。
config
domain.xml
ドメインの定義情報が保存された定義ファイルです。
keystore.jks
デフォルトのキーストアファイルです。
cacerts.jks
デフォルトのトラストストアファイルです。
一時的なファイルを格納するディレクトリです。
generated
ejb(注1)
EJB関連のファイルが格納されます。
jsp(注2)
JSP関連のファイルが格納されます。
policy
ポリシーファイルが格納されます。
xml
WAR/EJB-JAR/RAR/JARモジュールの定義情報が格納されます。
ドメインインスタンスに付随するmqのルートディレクトリです。
imq
instances
インスタンス名
ドメインインスタンスに付随するmqのインスタンスが格納されます。
imqbrokerインスタンスのルートディレクトリです。
etc
imqbrokerの定義ファイルが格納されます。
log
imqbrokerのログファイルが格納されます。
複数のIJServerクラスタ間で共通に使用するJARファイルが格納されます。
lib
classes
logs
複数のIJServerクラスタ間で共通に使用するクラスが格納されます。
Interstage Java EE DASサービスのログファイルが格納されます。
server.log
サーバーログファイルです。
jvm.log
技術員による調査に必要な情報が出力されます。
jmxoperation.log.*(注3)
保守用の内部ログファイルです。
http
アクセスログとトレースログを格納するディレクトリです。
server_access_log
アクセスログファイルです。
trace.log
トレースログファイルです。
- 548 -
←上位ディレクトリ
下位ディレクトリ→
iiop
説明
IIOPアクセスログを格納するディレクトリです。
iiop_access.log
IIOPアクセスログファイルです。
session-store
アプリケーションの対話状態を格納するディレクトリです。
work
Webコンテナ関連のファイルが格納されます。
注1)
配備するアプリケーションの構成に依存します。
なお、大容量、および多数の配備モジュールを配備する場合、開発環境でアプリケーションの配備を行い、生成物
の容量を事前に確認することを推奨します。
CMP Entity Beanを配備した場合、配備時にCMP Entity Beanの補助クラスが自動生成され、格納されます。
注2)
配備するアプリケーションに含まれるJSPのコンパイル結果が格納されます。
Interstage Deployment Descriptor(sun-web.xml)のscratchdirで格納先を変更できます。
JSPのコンパイル結果は、asadmin deployサブコマンドをprecompilejspを指定して実行した場合、およびJSPに対する
初回リクエスト時に生成されます。
注3)
*は0からの連番となります。
B.2 Interstage Java EE Node Agentサービスのファイル構成
Interstage Java EE Node Agentサービスのファイル構成を以下に示します。
←上位ディレクトリ
下位ディレクトリ→
ijna
説明
Interstage Java EE Node Agentサービスが管理する資産を格納す
るディレクトリです。
agent
logs
server.log
サーバーインスタンス名
ログファイルを格納するディレクトリです。
サーバーログファイルです。
IJServerクラスタが管理する資産を格納するディレクトリです。
詳細については、「B.3 IJServerクラスタのファイル構成」を参照し
てください。
B.3 IJServerクラスタのファイル構成
IJServerクラスタのファイル構成を以下に示します。
←上位ディレクトリ
下位ディレクトリ→
サーバーインスタンス名
説明
IJServerクラスタが管理する資産を格納するディレクトリです。サーバー
インスタンス単位に生成されます。
addons
bin
サーバーインスタンスに関連したコマンドを格納するディレクトリです。
- 549 -
←上位ディレクトリ
下位ディレクトリ→
stopserv
current
latest
説明
サーバーインスタンス停止コマンドです。
カレントディレクトリです。
最新のカレントディレクトリです。
derby.log(注1)
JavaDBのログファイルです。
.__com_sun_appser
v_pid
プロセスID保存ファイルです。
generated
ポリシーファイル格納ディレクトリ、および一時的なファイルを格納す
るディレクトリです。
jsp(注3)
JSP関連のファイルが格納されます。
policy(注2)
ポリシーファイルが格納されます。
imq
ドメインインスタンスに付随するmqのルートディレクトリです。
logs
ログファイルを格納するディレクトリです。
server.log
サーバーログファイルです。
jvm.log
Java VMログファイルです。
monitor-jvm.log
Java VM情報ログファイルです。
monitorconnectionqueue.log
接続キュー情報ログファイルです。
monitorhttplistener.log
HTTPリスナー情報ログファイルです。
monitor-transaction.log
トランザクション情報ログファイルです。
monitor-jdbcpool.log
JDBC接続プール情報ログファイルです。
monitor-threadpool.log
スレッドプール情報ログファイルです。
monitor-connection.log
コネクション情報ログファイルです。
monitorconnectorpool.log
JMS/コネクタ接続プール情報ログファイルです。
monitormessagedriven.log
MDB情報ログファイルです。
monitor-entitybean.log
Entity Bean情報ログファイルです。
monitorstatefulsession.log
Stateful Session Bean情報ログファイルです。
monitorstatelesssession.log
Stateless Session Bean情報ログファイルです。
http
アクセスログとトレースログを格納するディレクトリです。
server_access_log
アクセスログファイルです。
trace.log
トレースログファイルです。
iiop
iiop_access.log
session-store
ejb
IIOPアクセスログを格納するディレクトリです。
IIOPアクセスログファイルです。
アプリケーションの対話状態を格納するディレクトリです。EJBコンテ
ナのキャッシング機能で使用します。詳細は「チューニングガイド」-
「Enterprise Beanインスタンスのキャッシング」を参照してください。
- 550 -
←上位ディレクトリ
下位ディレクトリ→
説明
j2ee-apps
EARモジュールで配備したEJBがpassivateされた場合、対話状態を
格納するディレクトリです。
j2ee-modules
EJB-JARモジュールで配備したEJBがpassivateされた場合、対話状
態を格納するディレクトリです。
work
Webコンテナ関連のファイルが格納されます。
注1)
JavaDBのログファイルについては、「付録A Java DB」を参照してください。
注2)
IJServerクラスタの停止時に配備を行った場合、配備時に生成されたポリシーファイルの格納は行われません。次回、
IJServerクラスタを起動した時に、配備時に生成されたポリシーファイルの格納が行われます。
注3)
配備するアプリケーションに含まれるJSPのコンパイル結果が格納されます。
Interstage Deployment Descriptor(sun-web.xml)のscratchdirで格納先を変更できます。
JSPのコンパイル結果は、asadmin deployサブコマンドをprecompilejspを指定して実行した場合、およびJSPに対する
初回リクエスト時に生成されます。
- 551 -
付録C Interstage HTTP Serverとの機能比較
ここでは、Webサーバを経由しない運用形態の場合にJava EEで使用できる機能について、Interstage HTTP Serverの機
能と対比して説明します。
Java EEに該当する機能がない場合は、Webサーバを経由する運用を行い、Interstage HTTP Serverの機能を使用してく
ださい。
運用形態については以下を参照してください。
「4.7.1 Webアプリケーションへアクセスする場合の運用」
C.1 Interstage HTTP ServerとJava EEの機能の違い
ここでは、Webサーバを経由しない運用形態の場合にJava EEで使用できる機能について、Interstage HTTP Serverの機
能と対比して説明します。
Java EEに該当する機能がない場合は、Webサーバを経由する運用を行い、Interstage HTTP Serverの機能を使用してく
ださい。
運用形態については以下を参照してください。
「4.7.1 Webアプリケーションへアクセスする場合の運用」
対応するJava EEの機能
Interstage HTTP Serverの機能
認証とアクセス
制御
ユーザ認証
オンライン照合
Java EEアプリケーションのセキュリティ機能を使用して認証とアクセス制御を
行うことができます。
詳細は、「5.2 Java EEアプリケーションのセキュリティ機能」を参照してください。
クライアント認証
該当機能はありません。
IPアクセスコント
ロール
・ 接続を許可するIPアドレスの指定
HTTPサービスの要求を受け付けるリモートアドレスで設定可能です。
詳細は、「6.8.3 HTTPサービスの定義項目」を参照してください。
・ 接続を拒否するIPアドレスの指定
該当機能はありません。
ファイアウォールなどの機能を使用して実装してください。
SSL
該当機能はありません。
WebブラウザなどのクライアントからSSL通信を行う場合は、SSLアクセラレー
タもしくは、Webサーバを経由して運用してください。
SSLアクセラレータを使用する場合の詳細は、「4.7.1.3 SSLアクセラレータを
使用する場合の運用形態」を参照してください。
IPv6アドレスの指定
該当機能はありません。
公開用ルートディレクトリの設定
Webアプリケーションのコンテキストルートに"/"を指定することで設定可能です。
詳細は、「6.5.2 Webアプリケーションの定義項目」を参照してください。
バーチャルホスト
仮想サーバーが該当します。
ただし、仮想サーバーの作成/削除はできません。
URLの書き換
え
仮想ディレクトリ
該当機能はありません。
公開したいディレクトリがある場合は、Webアプリケーションとして配備する必
要があります。
リダイレクト機能
該当機能はありません。
Java EEでリダイレクトの機能が必要な場合は、サーブレットアプリケーション
で実装してください。
リライト機能
サーバステータスの監視機能
該当機能はありません。
Java EE管理コンソールでIJServerクラスタの状態を確認することができます。
クラスタ > [IJServerクラスタ名] >[サーバーインスタンス]の監視タブで参照可
能です。
- 552 -
対応するJava EEの機能
Interstage HTTP Serverの機能
※サーバステータスの監視機能とJava EEの監視では、表示される情報が異
なります。
複数Webサーバ機能
業務ごとにプロセスを分ける場合はIJServerクラスタを業務ごとに作成するこ
とで実現可能です。
コンテンツの圧縮機能
該当機能はありません。
Java EEでコンテンツの圧縮の機能が必要な場合は、サーブレットのフィルタ
などを使用して実装してください。
プロキシ
フォワードプロキ
シ
該当機能はありません。
リバースプロキシ
該当機能はありません。
クライアントの同
時接続数
HTTPサービスの以下の項目で設定可能です。
接続・通信
通信プロセス数
の設定
・ スレッド数
・ 初期スレッド数
・ スレッド数の増分
詳細は、「6.8.3 HTTPサービスの定義項目」を参照してください。
通信プロセスに
対する権限の設
定
ディレクトリリストの設定
IJServerクラスタのプロセス実効権限を変更することが可能です。
詳細は、「5.1.2 IJServerクラスタのプロセスの実効権限」を参照してください。
sun-web.xmlのlistingsプロパティで指定可能です。
詳細は、「3.2.3.2 Interstage Web application deployment descriptor (sunweb.xml)」を参照してください。
デフォルトMIME
タイプの設定
該当機能はありません。
必要なMIMEタイプはweb.xmlのmime-mappingタグで指定してください。
mime-mappingタグの詳細は、「web (親タグ:module)」を参照してください。
MIMEタイプ定
義
web.xmlのmime-mappingタグで指定可能です。
詳細は、「web (親タグ:module)」を参照してください。
デフォルトHTMLファイルの設定
web.xmlのwelcome-file-listタグで指定可能です。
詳細は、「web (親タグ:module)」を参照してください。
セッション管理機能
HTTPサービスのキープアライブ関連の項目で設定可能です。
MIMEタイプ
・ キープアライブのタイムアウト
・ 1回のコネクションで処理可能なリクエスト数
詳細は、「6.8.3 HTTPサービスの定義項目」を参照してください。
ユーザ追跡機能
HTTPアクセスログにセッションIDを出力することで代替可能です。
詳細は、「4.21.3 HTTPアクセスログ」を参照してください。
言語ベースのコンテンツネゴシエー
ション
該当機能はありません。
Java EEでコンテンツネゴシエーションの機能が必要な場合はJava EEアプリ
ケーションで実装してください。
CGIプログラム実行の許可
該当機能はありません。
Java EEでは、CGIプログラムの代わりにJava EEアプリケーションを使用して
ください。
ログ
該当機能はありません。
Java EEでCookieの情報を記録する必要がある場合はHTTPアクセスログに
Cookieの情報を出力してください。
詳細は、「4.21.3 HTTPアクセスログ」を参照してください。
クッキーログの設
定
- 553 -
対応するJava EEの機能
Interstage HTTP Serverの機能
メッセージのカス
タマイズ
HTTPアクセスログの出力内容はカスタマイズ可能です。
詳細は、「4.21.3 HTTPアクセスログ」を参照してください。
アクセスログ
HTTPサービスのアクセスログで対応可能です。
詳細は、「4.21.3 HTTPアクセスログ」を参照してください。
Interstage HTTP ServerとJava EEの出力内容に関する違いは、次の表を参
照してください。
エラーログ
Java EEのエラーメッセージはサーバーログ、Java VMログに出力されます。
詳細は、「4.21 Java EEアプリケーションのログ」を参照してください。
トレースログ
該当機能はありません。
オペレーションロ
グ
Java EEに関する操作の情報は、Interstage Java EE DASサービスのサーバー
ログに出力されます。
詳細は、「4.21.1 サーバーログ」を参照してください。
保守ログ
Java EEではトラブル調査を行うためのログは非公開ですが、資料採取コマ
ンドで採取されます。
C.2 アクセスログの出力項目の違い
アクセスログの出力項目について、Interstage HTTP Serverで出力する項目と類似するJava EEの定義項目については、
以下のとおりです。
【リクエスト情報】
Interstage HTTP Server
の出力項目
%h
Java EEの出力項目
項目名
説明
・ Webサーバを経由
%client.name%
デフォルト
○
する場合
クライアントまたは、
プロキシサーバなど
のIPアドレス/ホスト
名を出力します。
・ Webサーバを経由
しない場合
クライアントまたは、
プロキシサーバなど
のIPアドレスを出力
します。
%l
%client.id%
%u
%auth-user-name%
%client.id%
・ Webサーバを経由
する場合
Webサーバが認証
したユーザ名を表示
します。
・ Webサーバを経由
しない場合
Webコンテナで認証
したユーザ名を表示
します。
- 554 -
○
○
Interstage HTTP Server
の出力項目
Java EEの出力項目
項目名
説明
デフォルト
注)リクエストにユーザ名
が付与されていない場
合は、”-”を表示します。
%t
%datetime%
ログを出力した時点の日
時を出力します。
○
%r
%request%
リクエストラインの内容を
出力します。
○
%s
%status%
ステータスコードを出力
します。
○
%b
%response.length%
レスポンスのデータ長を
出力します。単位はbyte
です。
○
${Host}i
%headers.host%
Hostヘッダーの内容を
出力します。
○
%{Cookie}i
%cookies.JSESSIONID%
セッションIDを出力しま
す。
○
%T
%S
%D
%time-taken%
リクエストの処理開始か
ら、Webアプリケーション
の処理終了までの時間
(ミリ秒)を出力します。
以下についても含みま
す。
○
・ 初回アクセス時の
JSPコンパイル、クラ
スのロード、Servlet
などの初期化処理
以下については、含み
ません。
・ HTTP接続キューに
格納されている時間
・ Webコンテナがレス
ポンスのバッファ内
のデータの送信を
完了する時間
%P
-
%thread.id%
スレッドIDを出力します。 ○
%thread.name%
スレッド名を出力します。 ○
・ Webサーバを経由
%webserver.name%
する場合
WebサーバのIPアド
レスを表示します。
・ Webサーバを経由
しない場合
クライアントまたは、
プロキシサーバなど
のIPアドレスを出力
します。
%{Cookie}i
%cookies.any%
Cookieヘッダーの内容
を出力します。
- 555 -
○
Interstage HTTP Server
の出力項目
Java EEの出力項目
項目名
説明
anyには出力する
RFC2616で定義されて
いるCookieの名前を大
文字、小文字を区別して
指定します。
${Foobar}i
%headers.any%
リクエストHTTPヘッダー
の値を出力します。any
には、RFC 2616 で定義
された任意の有効な リク
エストHTTP ヘッダーの
値を小文字で指定しま
す。
${Referer}i
%headers.referer%
Refererヘッダーの内容
を出力します。
${User-agent}I
%headers.user-agent%
User-agentヘッダーの内
容を出力します。
-
%response.headers.any%
レスポンスHTTPヘッ
ダーの値を出力します。
Anyには、RFC2616で
定義された任意の有効
なレスポンスHTTPヘッ
ダーの値を小文字で指
定します。
%{Set-Cookie}o
%response.headers.set-cookie%
レスポンス時のSetCookieヘッダーの内容
を出力します。
-
%http-method%
HTTPメソッドを出力しま
す。
%U
%http-uri%
URIを出力します。
-
%http-version%
プロトコルバージョンを
出力します。
-
%query-str%
クエリー文字列を出力し
ます。
- 556 -
デフォルト
付録D 非推奨機能
ここでは最新規約で代替機能が提供されており、上位互換のために提供されている機能について説明します。
D.1 Entity Bean
Entity Beanは業務データ(観客情報、注文情報など)を実現するオブジェクトですが、EJB 3.0ではEntity Beanの代わりに
Java Persistence API機能が提供され、Entity Beanの利用が非推奨になりました。
CMPのEntity Beanを使用した場合は、配備前にデータベースへのマッピング情報とfinderメソッドの検索条件(EJB 1.1の
CMP Entity Beanの場合だけ)を定義します。
IJServerクラスタではCMP Entity Beanの動作が以下のデータベースでサポートされます。
・ Symfoware
・ Oracle
・ SQL Server
・ PowerGres Plus
アプリケーション開発時やサンプル動作のためにJava DBデータベースも使用できます。
BMPのEntity Beanの場合はEJBアプリケーションでデータベースへの永続化を実施するためデータソース定義とマッピ
ング定義を用意する必要はありません。
D.1.1 CMP Entity Beanのデータベースマッピング定義の設定方法
データベースマッピング定義の設定方法
以下の2つの設定方法があります。
・ 配備前にユーザがテーブルを作成し、そのテーブルにマッピングする場合
・ 配備時にテーブル自動生成をする場合
CMP Entity Beanは、配備前にユーザがテーブルを作成し、そのテーブルにマッピングする場合と、配備時にテーブル
自動生成をする場合により設定方法が異なります。テーブル自動生成は開発時のみ使用してください。実業務運用環
境では配備前にテーブルを生成し、そのテーブルにマッピングしてください。
配備前にユーザがテーブルを作成し、そのテーブルにマッピングする場合
Entity Beanをすでに存在するテーブルにマッピングするために必要な手順を以下に説明します。
1. JDBCリソースのJNDI名を指定
Interstage EJB application deployment descriptor (sun-ejb-jar.xml)の<enterprise-beans><cmp-resource>タグに
JDBCリソースのJNDI名を指定します。
JDBCリソースのJNDI名の指定を省略すると、jdbc/__defaultのJDBCリソースが使用されます。「JDBCリソース
のJNDI名の指定を省略する場合の注意」を参照してください。
2. テーブルのスキーマ情報を取得
EJBコンテナは配備時にデータベースにアクセスして、テーブルのスキーマ情報を自動的に取得できます。ス
キ ー マ フ ァ イ ル を 自 動 取 得 す る 場 合 は 、 Interstage CMP Mappings deployment descriptor (sun-cmpmappings.xml)ファイルの<schema>タグの値を空にしてください。自動的に取得させない場合、capture-schema
コマンドを使用して取得したファイルを<schema>タグに指定してください。
3. マッピング情報をdeployment descriptorファイルに定義
Interstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)ファイルに、Entity Beanの永続化
フィールドと対応付けるDBカラム名や(自動的に取得させない場合には)スキーマ情報ファイル名を指定します。
4. アプリケーションの配備
1~3の設定を行ったCMP Entity Beanのアプリケーションを配備してください。
- 557 -
注意
- Entity Beanのプライマリキーのフィールドはプライマリキーが指定されたカラムとマッピングしてください。Entity
Beanのフィールドとマッピング先のテーブルのカラムでプライマリキー指定が異なる、またはプライマリキーがマッ
ピング先のテーブルに定義されていない場合、Entity Beanの配備に失敗します。
- テーブルのスキーマ情報を自動的に配備時に取得するために、JDBCドライバの環境設定をInterstage Java EE
DASサービスにも行う必要があります。JDBCドライバの環境設定については、「4.15.1 JDBCドライバの環境設
定」を参照してください。
- テーブルのスキーマ情報を自動的に取得する場合、検証オプションを指定しないで配備してください。スキーマ
情報を自動的に取得する場合、配備時に検証オプションを指定するとエラーメッセージが出力されて配備に失
敗します。
- テーブルのスキーマ情報を自動的に取得する場合でも<schema>タグを必ず記述してください。<schema>タグを
省略するとエラーが発生し配備に失敗します。
- sun-cmp-mapping.xmlのテーブル名とカラム名の大文字・小文字は使用するデータベースのテーブル名とカラム
名の大文字・小文字と一致させる必要があります。
- PowerGres Plusでは、ダブルコーテーションを付けていない識別子を自動的に小文字に変換します。この場合、
sun-cmp-mapping.xmlのテーブル名とカラム名を小文字にする必要があります。
配備時にテーブル自動生成をする場合
アプリケーション開発時やサンプル動作のためにテーブルを自動的に生成する機能を使用できます。Interstage Java
EE管理コンソールからは指定できません。テーブル自動生成機能を使用するために必要な手順を以下に説明します。
1. JDBCリソースのJNDI名を指定
「配備前にユーザがテーブルを作成し、そのテーブルにマッピングする場合」と同様です。
「JDBCリソースのJNDI名の指定を省略する場合の注意」を参照してください。
2. アプリケーションの配備
asadminコマンドのdeployサブコマンドのテーブル生成オプション(--createtablesまたは--dropandcreatetables)に
trueを指定すると、定義したJDBCリソースのデータベース種別をEJBコンテナが配備時に確認し、そのデータ
ベース用のテーブル生成SQL文が発行されます。
テーブル生成オプション(--createtablesまたは--dropandcreatetables)のデフォルトはfalseです。
また、配備解除時にundeployサブコマンドのテーブル削除オプション(--droptables)にtrueを指定すると配備解
除時にテーブルを削除します。undeployサブコマンドのテーブル削除オプション(--droptables)のデフォルトは
falseです。
注意
- Interstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)ファイルをejb-jarファイルに含めて
deployサブコマンドにテーブル生成オプション(--createtablesまたは--dropandcreatetables)を指定すると警告が発
生し、テーブル生成は行わず、配備は行います。生成オプション(--createtablesまたは--dropandcreatetables)を指
定する場合はInterstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)ファイルをejb-jarファイル
に含まないでください。
- テーブルの自動生成先は、デフォルトのデータベーススペース(Oracleでは表領域/SQL Serverではプライマリファ
イルグループ)上となります。Symfowareの場合はデフォルトのデータベーススペースが存在しないため、データ
ベース名と同名のデータベーススペース(手動で作成が必要)上に作成されます。
- テーブル名とカラム名はdeployment descriptor(ejb-jar.xml)ファイルに定義された以下の名前となります。生成さ
れるテーブル名やカラム名が他のテーブルと重複する場合、または使用するデータベースの仕様により使用で
きない場合、<ejb-name>タグの値を変更するか、別のテーブルにマッピングしてください。別のテーブルにマッピ
ングする手順については「配備前にユーザがテーブルを作成し、そのテーブルにマッピングする場合」を参照し
てください。
- 558 -
テーブル名
Enterprise Bean名(<ejb-name>タグの値)
カラム名
永続化フィールド名(<cmp-field><field-name>の値)
ただし、永続化フィールド名がデータベースの予約語と重複した場合、自動的に異なる名前が割り当てられる可
能性があります。
- 自動生成するテーブルと同名のテーブルがすでに存在すると、警告が発生し、テーブル生成は行わず、配備は
行います。
- テーブル自動生成機能を使用する前に、JDBCドライバの環境設定をInterstage Java EE DASサービスにも行う必
要があります。JDBCドライバの環境設定については、「4.15.1 JDBCドライバの環境設定」を参照してください。
- Interstage EJB application deployment descriptor (sun-ejb-jar.xml)ファイルにJDBCリソース定義を省略し、配備時
に検証オプションを指定すると、エラーメッセージが出力されて配備に失敗します。この場合、検証オプションを
指定しないで配備してください。
- テーブル自動生成機能を使用して配備時にテーブルを生成するとき、Interstage Java EE DASサービス上のJDBC
接続プールの接続を利用してテーブルを生成します。しかし、Symfowareの仕様によりセッション中にアクセスし
た資源はセッションが終了するまで削除できません。このため、テーブルを生成した接続が接続プールに存在す
る状態で配備解除によってテーブルを自動的に削除するとき、Symfowareからエラーメッセージが出力されテー
ブルの削除に失敗する場合があります。この場合には、手動でテーブルを削除してください。セッション中の資源
の削除についてはSymfowareのマニュアルを参照してください。
- テーブル自動生成機能で作成されるテーブルのスキーマは接続先のデータベースで自動的に設定されます。
設定されるスキーマについては各データベースのマニュアルを参照してください。
ただし、SymfowareではJDBCドライバの環境設定でスキーマ名を指定することで、テーブル自動生成機能で作
成されるテーブルのスキーマを設定することが可能です。
詳細は「4.15.6 Symfoware JDBCドライバ(Type2)」を参照してください。
- Symfowareではリレーションを持つテーブルを自動生成する場合、Entity Beanに対応するテーブル、Joinテーブ
ル、外部キーカラムは作成されますが外部キー制約(FOREIGN KEY制約)は作成されません。
- PowerGres PlusでJDBC接続プールのデータソースクラス名にorg.postgresql.jdbc3.Jdbc3ConnectionPoolを設定
してテーブル自動生成機能を利用する場合、JDBC接続プールのプロパティにdefaultAutoCommit=trueを設定
してください。
JDBCリソースのJNDI名の指定を省略する場合の注意
Interstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)ファイルをejb-jarファイルに含めず、Interstage
EJB application deployment descriptor (sun-ejb-jar.xml)ファイルのJDBCリソースのJNDI名の指定を省略するとjdbc/
__defaultのJDBCリソースが使用され、配備時にデータベース用のテーブル生成SQL文が発行されます。
jdbc/__defaultの初期設定ではJava DBに接続されています。JDBCリソースのJNDI名の指定を省略した場合のみ、テー
ブル生成オプション(--dropandcreatetables)がデフォルトでtrueとなります。また、配備解除時はテーブル削除オプション
(--droptables)がデフォルトでtrueとなります。このときのみ、Interstage Java EE管理コンソールからの配備でもテーブルの
自動生成・自動削除が行われます。テーブル自動生成・テーブル自動削除を行わない場合はテーブル生成オプション・
テーブル削除オプションにfalseを指定してください。
参照
JDBC接続プール、JDBCリソースの定義方法については、「4.15 データベースの環境設定」を参照してください。
Interstage deployment descriptorファイルの定義詳細については、「3.2.3 Interstage deployment descriptor」を参照してく
ださい。
capture-schemaコマンドについては、「リファレンスマニュアル(コマンド編)」-「capture-schema」を参照してください。
D.1.2 Javaのデータ型とDBMSのSQLデータ型のマッピングについて
コンテナは以下の処理を実行する場合、CMPのEntity Beanで定義する永続化フィールドのJavaのデータ型に対応する
JDBCのAPI(setメソッド、getメソッド)を実行します。
- 559 -
・ クエリメソッドの実行結果から永続化フィールドの値を取得する場合
(ResultSetのgetメソッドを実行する)
・ 永続化フィールドとクエリメソッドのパラメタをSQLクエリの条件に指定する場合
(PrepareStatementのsetメソッドを実行する)
・ CMP Entity Beanの作成と更新時に永続化フィールドの値をSQL文に指定する場合
(PrepareStatementのsetメソッドを実行する)
Javaのデータ型とDBMSのSQLデータ型の組み合わせについてはJDBCドライバの仕様に依存しますので、使用する
JDBCドライバのマニュアルを参照してください。
Javaのデータ型とコンテナが使用するJDBCドライバのAPIとの対応について以下に説明します。
標準データ型
以下のデータ型の場合は該当するメソッド(setBooleanメソッド、getBooleanメソッドなど)が使用されます。
- boolean、java.lang.Boolean
- byte、java.lang.Byte
- short、java.lang.Short
- int、java.lang.Integer
- long、java.lang.Long
- float、java.lang.Float
- double、java.lang.Double
- java.lang.String
- java.math.BigDecimal
- java.sql.Date
- java.sql.Time
- java.sql.Timestamp
- byte[]
ただし、java.lang.String型の永続化フィールドをDBMSのCLOB型にマッピングした場合、setCharacterStreamと
getCharacterStreamメソッドが使用されます(使用するデータベースがSymfowareの場合は除きます)。
また、byte[]の場合はsetBinaryStreamとgetBinaryStreamメソッドが使用されます。
プライマリキーカラムに固定長文字列型を使用しないでください。指定した場合、そのキーが参照できないといった問
題が発生する可能性があります。
その他のデータ型
以下のデータ型は標準データ型に変換され、そのデータ型に該当するメソッドが使用されます。
データ型
変換する標準データ型
char、java.lang.Character
java.lang.String
java.math.BigInteger
java.math.BigDecimal
java.util.Date
java.sql.TimeStamp
その他
byte[]
D.1.3 EJB 1.1のCMP Entity Beanのfinderメソッドの検索条件定義の指定
EJB 1.1規約には、CMP Entity Beanのfinderメソッドの検索条件の記述形式が規定されていません。このため、Interstage
EJB application deployment descriptor (sun-ejb-jar.xml)ファイルの<cmp><one-one-finders><finder>タグにクエリの検索
条件として以下の要素を指定します。
- 560 -
フィルタ式 (query-filter)
クエリによって返される各オブジェクトに適用される検索条件を指定します。SQLのWHERE句に対応します。テーブ
ルに存在するすべてのレコードを検索する場合には省略できます。
クエリパラメタ宣言 (query-params)
クエリの1つまたは複数の入力パラメタの名前とタイプを指定します。Java言語のパラメタの構文で記述します。入力
パラメタが存在しない場合には省略できます。
クエリ順序宣言 (query-ordering)
クエリによって返却される結果をソートします。SQLのORDER BY句に対応します。クエリによって返却される結果を
ソートしない場合には省略できます。
各要素のInterstage EJB application deployment descriptor (sun-ejb-jar.xml)ファイルの記述形式については、「3.2.3.3
Interstage EJB application deployment descriptor (sun-ejb-jar.xml)」を参照してください。
フィルタ式
フィルタ式には、クエリパラメタ宣言で宣言した引数の名前、CMFのフィールド名、演算子、オペレーションの組み合
わせで検索条件となるブール式を指定します。検索条件が真(true)となるレコードを検索します。SQLのWHERE句に
相当しますが、Java構文に準拠した定義ができます。何も指定しない場合には、テーブルに存在するすべてのレコー
ドを検索します。
- 演算子
クエリは、以下の演算子をサポートします。
種別
関係演算子
ブール演算子
算術演算子
演算子
意味
==
等しい
!=
等しくない(注)
>
大なり
<
小なり
>=
大なり、または等しい
<=
小なり、または等しい
&
論理積、AND
&&
論理積、AND
|
論理和、OR
||
論理和、OR
~
2の補数表現
!
否定、NOT
+
足し算
-
引き算
*
掛け算
/
割り算
(注)Symfowareでは!=演算子は未サポートです。
この場合、==演算子(等しい)の結果と!演算子(否定、NOT)を使用して同等の結果を得ることができます。
また、以下が有効です。
- DateフィールドとDateパラメタの等価性と順序の比較が有効です。
- 561 -
- StringフィールドとStringパラメタの等価性と順序の比較が有効です。
- 演算子の適用優先度を明示的に決定するカッコ
- 比較演算と算術演算での数値オペランドの昇格
昇格の規則は、Javaの規則と同様です(Java言語仕様の数値昇格を参照)。BigDecimal、BigInteger、および
数値ラッパークラスによって拡張されます。
- オペレーション
CMFまたはクエリパラメタが文字列の場合、以下のオペレーションをサポートします。それぞれのオペレーション
をフィルタ式に指定した場合の例と、それぞれの指定例に対して実際にデータベースにアクセスする際のWHERE
句の例を記載します。
オペレーション
フィルタ式の指定例
指定例に対するSQL変換後の
WHERE句
startsWith(String)
str.startsWith(“xyz”)
STR LIKE ('xyz%')
endsWith(String)
str.endsWith(“xyz”)
STR LIKE ('%xyz')
注意
・ 半角空白は区切り文字として認識され、それ以外の用途として認識されません。
・ null値のフィールドは、サブ式がfalseを返した場合と同様に扱われ、NullPointerExceptionがスローされます。
クエリパラメタ宣言
パラメタ宣言は、1つのパラメタ宣言または複数の宣言をカンマで区切った文字列です。メソッドシグネチャは、Javaの
構文に準拠します。例えば、findInRange(double low, double high)というクエリメソッドを定義した場合、クエリのパラメ
タには以下のように定義します。定義されたパラメタ名はクエリのフィルタ式で使用できます。
<query-params>double low, double high</query-params>
クエリ順序宣言
クエリ順序宣言はソートする値を持つCMF名とソートする順序(昇順または降順)を指定する以下のパラメタで定義し
ます。
パラメタ
意味
ascending
クエリの結果を昇順でソートします
descending
クエリの結果を降順でソートします
CMP2.0、2.1ではEJB QLのORDER BY句で本機能と同等の運用が可能です。詳細はEJB規約を参照ください。
クエリ順序宣言はCMFとソートのパラメタを半角空白で区切って定義します。例えば、クエリの結果をsalaryというフィール
ドの値で降順にソートする場合は以下のように定義します。
<query-ordering>salary descending</query-ordering>
定義例
例1
次のクエリは、Tarouという名前のすべての従業員を返却し、その値を年俸"salary"フィールドの降順で返却します。
Interstage EJB application deployment descriptor (sun-ejb-jar.xml)の<finder>タグは、次のように記述します。
- 562 -
<finder>
<method-name>findEmployeeByName</method-name>
<query-filter>name == "Tarou"</query-filter>
<query-ordering>salary descending</query-ordering>
</finder>
例2
このクエリは、指定した価格帯に含まれるすべての製品を返します。価格の上限と下限を指定する2つのクエリパラメタ
double lowおよびdouble highが定義されます。フィルタは、クエリパラメタと次のpriceフィールドを比較します。
low < price && price < high
Interstage EJB application deployment descriptor (sun-ejb-jar.xml)の<finder>タグは、次のように記述します。
<finder>
<method-name>findInRange</method-name>
<query-params>double low, double high</query-params>
<query-filter>low &lt; price &amp;&amp; price &lt; high</query-filter>
</finder>
D.1.4 SQLログ機能
CMP Entity Beanを使用する場合、EJBコンテナはEntity Beanの検索、更新などを行うときにデータベースにSQL文を発
行します。アプリケーションの調査でEJBコンテナが発行しているSQL文を確認するためにSQLログ機能を使用できます。
SQLログを使用すると、EJBコンテナはSQL文を発行するときに、またはSQL文の発行時に例外が発生するときに、SQL
文と動的パラメタをサーバーログに出力します。
SQLログ機能は、以下のlog-serviceプロパティにより設定します。
プロパティ名
javax.enterprise.resourc
e.jdo.sqlstore.sql
値(太字:省略値)
説明
FINE
SQL文をサーバーログに出力します。
CONFIG
SQL文の発行時に例外が発生する場合だけSQL
文をサーバーログに出力します。
INFO
SQL文をサーバーログに出力しません。
この設定値の変更によるIJServerクラスタの再起動の必要はありません。
上記プロパティをasadminコマンドのsetサブコマンドにより${clusterName_instanceName_configName}.log-service.modulelog-levels.propertyに指定してください。
例
SQLログを有効にする設定例
> asadmin set IJServer001.log-service.module-log-levels.property.javax\.enterprise\.resource\.jdo
\.sqlstore\.sql=FINE
> asadmin set IJServer001.log-service.module-log-levels.property.javax\\.enterprise\\.resource\
\.jdo\\.sqlstore\\.sql=FINE
SQLログの出力例
- 563 -
[11/02/2008 20:47:04.131 +0900] ISJEE: INFO: ISJEE_JDO76325: SQL statement<select
t0."NAME" from "A" t0 where t0."NAME" = ?> with input values:java.lang.String:Tarou:
ThreadID=19,ThreadName=p
[11/02/2008 20:47:05.296 +0900] ISJEE: INFO: ISJEE_JDO76325: SQL statement<insert into
"B"("NAME") values ( ?)> with input values:java.lang.String:Jirou; flush batch.:
ThreadID=19,ThreadName=p
[11/02/2008 20:47:05.336 +0900] ISJEE: ERROR: ISJEE_EJB5071: Some remote or transactional
roll back exception occurred: ThreadID=61,ThreadName=p
com.sun.jdo.api.persistence.support.JDODataStoreException: JDO76400: Got a JDBC
SQLException while executing the SQL statement:
JDO76325: SQL statement<insert into "AB"("A_NAME", "B_NAME") values ( ?, ?)> with input
values:java.lang.String:Tarou, java.lang.String:Jirou.
Please examine the SQLException for more information.
NestedException: java.sql.SQLException: ORA-02291: integrity constraint (EJB.FK_B) violated parent key not found
注意
SQLログ機能を有効にするとEJBタイマーサービスの永続化機能により発行されるSQL文もサーバーログに出力されます。
アプリケーション配備・配備解除時のテーブル自動生成・削除に発行されるSQL文は、SQLログ機能では出力されません。
このSQL文を確認したい場合は、各種データベースのJDBCドライバのログから確認してください。JDBCドライバのログ確
認方法については、各種データベースのマニュアルを確認してください。
D.1.5 Entity Beanのチューニング
Interstage Java EEではEntity Beanインスタンスの管理でコミットオプションB(トランザクション間にレディーインスタンスを
キャッシュする)を使用しています。
Beanインスタンスのキャッシュには2種類の状態が存在します。
・ トランザクション内のキャッシュ
トランザクション内で使用したインスタンスはすべてキャッシュし保持されます。トランザクション完了後はトランザクショ
ン間のキャッシュとして保持されます。
ただし、ロールバックが発生した場合、そのキャッシュはpassivateされます。
・ トランザクション間のキャッシュ
トランザクション完了後もそのEntity Beanインスタンスのキャッシュは保持され、別のトランザクションで再利用されます。
このとき、データはデータベースと同期化されます。
トランザクション間のキャッシュについてはキャッシュのチューニング項目で管理をします。
Entity BeanインスタンスのライフサイクルはEJBの規約に説明されています。
Entityオブジェクトのアイデンティティーと関連付けられているEntity BeanインスタンスはStateful Session Beanと同様に
キャッシングされます。ただし、Entity Beanインスタンスはデータベースにpassivateされます、passivateの選択内容の削除
ポリシーとしては常にFIFOポリシーが使用されます。削除タイムアウトは動作しません。またpassivateされる閾値が異なり
ます(「Entity BeanとStateful Sesesion Beanのキャッシングの相違点」参照)。その他のチューニング項目については、「6.8.8
EJBコンテナの定義項目」の「Enterprise Beanインスタンスのキャッシング」を参照してください。
Entityオブジェクトのアイデンティティーと関連付けられていないBeanインスタンスはStateless Session BeanとMessagedriven Beanと同様にプーリングされます。チューニング項目については、「6.8.8 EJBコンテナの定義項目」の「Enterprise
Beanインスタンスのプーリング」を参照してください。
Entity BeanとStateful Sesesion Beanのキャッシングの相違点
以下の表でEntity BeanとStateful Sesesion Beanのキャッシングの相違点を説明します。
- 564 -
Entity Bean
Stateful Session Bean
最大キャッシュサイズの閾値
「Entity Beanの閾値」を参照し
てください。
「6.8.8 EJBコンテナの定義項
目」の「Enterprise Beanインスタ
ンスのキャッシング」を参照して
ください。
最大キャッシュサイズに0を入
力した場合の最大キャッシュサ
イズ
8192
※最大キャッシュサイズに8193
以上の値を指定することもでき
ます。その場合には指定され
た値が最大キャッシュサイズと
なります。
無限大
キャッシュアイドルタイムアウト
によるpassivate
対象のインスタンスは1個を残
してすべてpassviateされます。
対象のインスタンスがすべて
passivateされます。
Entity Beanの閾値
最大キャッシュサイズの項目にある閾値の算出はStateful Session BeanとEntity Beanで異なります。Entity Beanの閾値は
以下の式で算出されています。(入力する数値によっては多少誤差が出ます)
・ キャッシュのサイズ変更量が最大キャッシュサイズを超えている場合
閾値 = 1
・ キャッシュのサイズ変更量が最大キャッシュサイズを超えていない場合
閾値 = 最大キャッシュサイズ - キャッシュのサイズ変更量 + 1
・ キャッシュのサイズ変更量が0の場合
閾値 = 最大キャッシュサイズ × 0.75 + 1
D.1.6 CMP1.1のDBカラムにマッピングするCMF選択機能
CMP1.1 Entity Beanでは、カラムにマッピングする永続化フィールド(CMF)を選択することができます。テーブルのカラム
やEntity BeanのCMFの構成を変更せずに、マッピングの定義を変更するだけで運用できます。
以下の図のように、DBカラムのうち"ID"と"NAME"だけ利用したい場合も"ID"と"AGE"だけ利用したい場合もアプリケー
ションやテーブルを変更することなく、マッピング定義を変更するだけで運用することができます。
- 565 -
定義方法
マッピングするCMFとテーブルのカラム名のみマッピングの定義をすることで、CMP1.1のDBカラムにマッピングするCMF
を選択できます。CMFとDBカラム名の定義はInterstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)
の以下のタグを編集してください。
・ <cmp-field-mapping><field-name>
・ <cmp-field-mapping><column-name>
定義方法については、「3.2.3.3 Interstage EJB application deployment descriptor (sun-ejb-jar.xml)」を参照してください。
定義例
id,name,ageの3つのCMFのうち、idとnameをテーブルのカラムIDとNAMEにマッピングし、ageをテーブルカラムにマッピ
ングしない場合、以下のように定義します。
<cmp-field-mapping>
<field-name>id</field-name>
<column-name>ID</column-name>
</cmp-field-mapping>
<cmp-field-mapping>
<field-name>name</field-name>
<column-name>NAME</column-name>
</cmp-field-mapping>
注意
・ 本機能を使用する場合、検証オプションを指定せずに配備してください。検証オプションを指定して配備処理を行う
と、エラーメッセージが出力し配備に失敗します。
・ プライマリキーとして定義されているCMFとDBカラムをマッピングしない場合、配備に失敗します。プライマリキーとな
るCMFとDBカラムは必ずマッピングしてください。
- 566 -
D.1.7 CMP Entity Beanでサポートするデータベース
連携するデータベースによってサポートされるCMP Entity Beanの機能が異なります。
詳細は、以下の表を参照してください。(Java DBはアプリケーション開発時のみ使用してください)
機能名
Symfoware
Oracle
Microsoft(R)
SQL Server(TM)
PowerGres
Plus
Java DB
deployment
descriptorによる
マッピングの定
義
○
○
○
○
○
テーブル自動生
成機能
△(注3)
○
○
○
○
スキーマ情報
ファイルの自動
生成機能
○
○
○
○
○
Javaのデータ型
とDBMSのSQL
データ型のマッ
ピング
○
○
○
○
○
SQLログ機能
○
○
○
○
○
EJB 1.1のCMP
Entity Beanの
finderメソッドの
検索条件定義の
指定
○
○
○
○
○
CMP2.x EJB
QL(注1)
○
○
○
○
○
CMPデータの
stream転送 (注
2)
△(注4)
○
○
○
○
CMPの複数レ
コードの一括更
新(注2)
○
○
○
○
○
CMPの一括挿
入(注2)
○
○
○
○
○
検索時のロック
機能
△(注5)
○
○
○
○
○:サポート
△:一部サポート
×:未サポート
(注1)EJB QLについてはEJB規約を参照してください。また、データベースの仕様により利用できないEJB QLの機能が
あります。各データベースのマニュアルも合わせて参照してください。
(注2)本機能は自動で切り替わります。
(注3)Symfowareではリレーションを持つテーブルを自動生成する場合、Entity Beanに対応するテーブル、Joinテーブル、
外部キーカラムは作成されますが外部キー制約(FOREIGN KEY制約)は作成されません。
(注4)SymfowareではBLOB型のカラムにマッピングしたCMFのデータのみstream転送を行います。
(注5)Symfowareではリレーションを持つテーブルに対して検索時のロック機能は使用できません。
CMP Entity Beanがサポートするデータベースのバージョンについては、「システム設計ガイド」-「ソフトウェア条件」-
「アプリケーション実行時に必要なソフトウェア」-「データベース関連(Java EE)」を参照してください。
- 567 -
ただし、CMP Entity BeanでサポートするSymfowareのバージョンは以下となります。
項
番
プラットフォーム
サポートするJDBCドライバ バージョン・レベ
ル
1
Windows(R)
Symfoware Serverクライア
ント機能
10.0.0以降
2
Solaris
Symfoware Serverクライア
ント機能
10.0.0以降
3
RHEL5(x86)/(Intel64)
Symfoware Serverクライア
ント機能
10.0.0以降
D.1.7.1 CMPデータのstream転送
CMP Entity Beanで定義する永続化フィールド(CMF)のJavaのデータ型とデータベースのSQLデータ型を以下の組み合
わせでマッピングした場合、EJBコンテナは自動で以下のAPIを使用してStream転送によってデータやり取りします。
CMFのJavaのデータ型
java.lang.String
byte[]
SQLデータ型
EJBコンテナが使用するJDBCドライ
バのAPI
CLOB
LONGVARCHAR
setCharacterStream
BLOB
setBinaryStream
getBinaryStream
getCharacterStream
Javaのデータ型とデータベースのSQLデータ型の組み合わせについてはJDBCドライバの仕様に依存しますので、使用
するJDBCドライバのマニュアルを参照してください。
D.1.7.2 CMPの複数レコードの一括更新、一括挿入
同一トランザクション内で複数レコードに対する更新、または、複数レコードを挿入する処理を行った場合、EJBコンテナ
はトランザクション完了時にそれらの処理をひとつのSQL文にまとめて一括で更新・挿入処理を行います。
参照
CMPの複数レコードの一括更新、一括挿入はStream転送を行うデータに対しては行いません。Stream転送については
「CMPデータのstream転送」を参照してください。
注意
CMPの複数レコードの一括更新、一括挿入は使用しているJDBCドライバがバッチ更新をサポートしている必要があります。
使用するJDBCドライバがバッチ更新をサポートしていない場合、更新または挿入処理ごとにSQL文を発行します。
JDBCドライバのバッチ更新のサポート状況については各データベースのマニュアルを参照してください。
D.1.8 検索時のロック機能(SELECT FOR UPDATE)
検索時のロック機能はEJBコンテナが発行するSELECT文に更新ロック(注)をかける句を付加することができます。
同一トランザクションで検索後に更新処理を行う場合、そのトランザクションで、操作する行のデータをロックすることで
テーブルの一貫性が保証されます。しかし、CMP Entity BeanではEJBコンテナがSQLを自動で作成するため、ユーザが
直接SQL文を編集してロックをかけることができません。そこで、本機能を使用することで、コンテナが発行するSELECT
文に更新ロック(注)をかけることができます。
- 568 -
検索時のロック機能を有効にすると、CMP Entity Beanで発行するSELECT文に以下の表の句が付加されます。更新ロッ
クはデータベースベンダごとに指定方法が異なります。詳細は各データベースベンダのマニュアルを参照してください。
各データベースに付加される句
データベース種別
付加される句
Symfoware
for update
Oracle
for update of
SQLServer
with (updlock)
PowerGres Plus
for update
Java DB
for update with rs
(注)ここでは、検索処理時に参照した行にロックをかけることにより、トランザクション処理が完了するまでデータの一貫性
を保証するロックのことを「更新ロック」と記載します。更新ロックされた行を別のトランザクションが参照しようとした場合に
は、更新ロックしたトランザクションが完了するまで排他待ち状態となります。
検索時のロック機能の定義は以下のタグで行います。詳細は「3.2.3.4 Interstage CMP Mappings deployment descriptor
(sun-cmp-mappings.xml)」を参照してください。
Interstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)の<consistency>/<lock-when-loaded>タグ
注意
データベースがSymfowareで、かつ、リレーションを持つテーブルが使用されるときは使用できません。
- 569 -
付録E サポート規約一覧
Interstage Java EEが提供するコンテナのサポート規約の一覧を記載します。
規約名称
サポートバージョン
Enterprise JavaBeans (EJB)
3.0
Servlet
2.5
JavaServer Pages (JSP)
2.1
Java Message Service (JMS)
1.1
Java Transaction API (JTA)
1.1
JavaMail
1.4
JavaBeans Activation Framework
1.1
Java EE Connector Architecture
1.5
Web Services for Java EE
1.2
Java API for XML-based RPC (JAX-RPC)
1.1
Java API for XML Web Services (JAX-WS)
2.1 *1
Java Architecture for XML Binding (JAXB)
2.1 *2
SOAP with Attachments API for Java (SAAJ)
1.3
Java API for XML Registries (JAXR)
1.0
Java Platform, Enterprise Edition Management API
1.1
Java Platform, Enterprise Edition Deployment API
1.2
Java Authorization Service Provider Contract for
Containers (JACC)
1.1
Debugging Support for Other Languages (JSR-45)
1.0
Standard Tag Library for JavaServer Pages (JSTL)
1.2
Web Services Metadata for the Java Platform
2.0
JavaServer Faces
1.2
Common Annotations for the Java Platform
1.0
Streaming API for XML (StAX)
1.0
Java Persistence API
1.0
*1 Java EE 5 Specificationで規定されたJAX-WS 2.0の範囲で使用していただくことを推奨します。
*2 Java EE 5 Specificationで規定されたJAXB 2.0の範囲で使用していただくことを推奨します。
- 570 -
索 引
[数字]
2フェーズコミットプロトコル.......................................................95
IIOPロードバランスの定義項目.............................................444
IJServer(J2EE)とIJServerクラスタの共存...............................275
IJServerクラスタ........................................................................19
IJserverクラスタで使用するクラスの設定について................125
IJServerクラスタとの差異..........................................................18
IJServerクラスタの運用...........................................................241
IJServerクラスタの起動/停止/運用状態表示........................244
IJServerクラスタの作成/削除.................................................241
IJServerクラスタの自動起動/自動停止.................................246
IJServerクラスタのファイル構成...............................................20
IJServerクラスタの複数プロセス構成.......................................22
IJServerクラスタのプロセスの実効権限.................................391
IJServerクラスタの運用環境.....................................................20
IJServerクラスタのファイル構成.............................................549
Interstage ACC deployment descriptor (sun-acc.xml)...........215
Interstage application client deployment descriptor (sunapplication-client.xml)............................................................213
Interstage application deployment descriptor (sunapplication.xml)......................................................................205
Interstage CMP Mappings deployment descriptor (sun-cmpmappings.xml)........................................................................212
Interstage deployment descriptor............................................204
Interstage deployment descriptorのタグの説明.....................215
Interstage EJB application deployment descriptor (sun-ejbjar.xml)...................................................................................208
Interstage HTTP Serverとの機能比較...................................552
Interstage HTTP Serverの環境設定......................................265
Interstage Java EE DAS / Interstage Java EE Node Agentサービ
ス起動時のログイン認証........................................................403
Interstage Java EE DASサービス.............................................16
Interstage Java EE DASサービスのインスタンス名と定義情報17
Interstage Java EE DASサービスの運用...............................237
Interstage Java EE DASサービスのファイル構成.............17,548
Interstage Java EE DASサービスのログファイル.....................17
Interstage Java EE Node Agentサービス.................................18
Interstage Java EE Node Agentサービスの運用....................239
Interstage Java EE Node Agentサービスの定義項目............437
Interstage Java EE Node Agentサービスのファイル構成. 19,549
Interstage Java EE Node Agentサービスのログファイル..........19
Interstage Java EE運用環境......................................................9
Interstage Java EE管理コンソールの運用方法について......235
Interstage Java EE管理コンソールを利用した運用...............234
Interstage Web application deployment descriptor (sun-web.xml)
................................................................................................205
IPCOMと連携する場合の注意事項......................................169
IPCOMを利用したIIOP通信の負荷分散..............................364
[A]
admin-realmおよび管理ユーザーの情報更新時の注意..... 402
asadminコマンドのログイン認証.............................................404
[C]
CMP1.1のDBカラムにマッピングするCMF選択機能...........565
CMP Entity Beanでサポートするデータベース.....................567
CMP Entity Beanのデータベースマッピング定義の設定方法557
CMPデータのstream転送......................................................568
CMPの複数レコードの一括更新、一括挿入........................568
CORBAサービスアプリケーション呼出し..............................130
[D]
deployment descriptor............................................................175
deployment descriptor(web.xml)に関する注意事項.............176
Derbyプロパティ(Derby properties).......................................546
[E]
EJB/JTAメソッドログ.................................................................51
EJB 1.1のCMP Entity Beanのfinderメソッドの検索条件定義の
指定........................................................................................560
EJBコンテナで使用できる時間監視機能................................44
EJBコンテナの定義項目........................................................511
EJBコンテナのトランザクション完了時間監視機能................46
EJBコンテナへの認証情報の伝播........................................413
EJBタイマーサービス...............................................................46
EJBディスパッチ機能によるロードバランス. 37,374,375,381,383
EJBの提供機能........................................................................34
EJBモジュールの定義項目...................................................449
Enterprise JavaBeans (EJB)........................................................3
Entity Bean.............................................................................557
Entity Beanのチューニング....................................................564
Entityで定義するJavaのデータ型とDBMSのSQLデータ型との
対応..........................................................................................61
[F]
fileレルムの設定......................................................396,397,419
[H]
HTTPアクセスログ.............................................................33,346
HTTPサービス..........................................................................33
HTTPサービスの定義項目....................................................491
HTTPトレースログ..............................................................34,359
HTTPリスナー...........................................................................33
[I]
IIOPアクセスログ....................................................................349
IIOPサービスの定義項目......................................................502
IIOP接続の待機時間監視機能.............................................133
IIOP通信クライアントの無通信監視機能..............................142
IIOP通信時のサーバメソッド復帰時間監視機能.................138
IIOP通信ソケットの送受信待機時間監視機能 ....................140
IIOP通信で使用できる時間監視機能...................................132
IIOP通信におけるリクエストの振り分け制御.........................372
[J]
J2EE/Java EE連携機能..........................................................129
J2EE/Java EE連携の運用......................................................341
J2EE/Java EE連携の環境設定..............................................339
J2EE/Java EE連携アプリケーションの作成方法...................168
J2EE実行環境からJava EE実行環境のアプリケーションを呼び
出す........................................................................................129
- 571 -
J2EE実行環境からJava EE実行環境のアプリケーションを呼び
出す場合.........................................................................339,341
JavaBeanのコンフィギュレーション.........................................117
Java DB...................................................................................539
Java DBの運用操作...............................................................540
Java DBのシステムディレクトリ...............................................540
Java EE application deployment descriptor (application.xml)179
Java EE Connector Architecture (コネクタ)................................7
Java EEアプリケーションからCORBAサービスアプリケーション
の呼出し方法.........................................................................172
Java EEアプリケーションクライアントの運用..........................286
Java EEアプリケーションクライアントの運用操作..................288
Java EEアプリケーションクライアントの環境設定..................286
Java EEアプリケーションの運用.............................................234
Java EEアプリケーションの開発.............................................144
Java EEアプリケーションの準備.............................................144
Java EEアプリケーションのセキュリティ機能.........................405
Java EEアプリケーションの定義項目.....................................446
Java EEアプリケーションの提供機能.........................................9
Java EEアプリケーションのログ..............................................341
Java EE 運用環境で利用するユーザーとパスワード..............15
Java EE運用環境の初期化.....................................................12
Java EE運用環境のセキュリティ機能....................................390
Java EEが利用するJDK、JRE..................................................10
Java EE機能のセキュリティ....................................................390
Java EE規約で規定されたdeployment descriptor.................179
Java EE共通ディレクトリ...........................................................10
Java EE実行環境からJ2EE実行環境のアプリケーションを呼び
出す........................................................................................130
Java EE実行環境からJ2EE実行環境のアプリケーションを呼び
出す場合.........................................................................340,341
Java EEの概要...........................................................................1
Java EEのサンプル................................................................538
Java EEの配備概要...............................................................249
JavaMailセッションの定義項目..............................................464
JavaMailを利用する場合の手順...........................................296
Java Message Service (JMS)......................................................7
Java Persistence API (JPA)........................................................4
Java Standard Edtion 6によるJSPの運用.................................33
Java VMの定義項目..............................................................528
Java VMプロセスの生死監視..................................................24
Java VMログ...........................................................................345
Javaのデータ型とDBMSのSQLデータ型のマッピングについて
................................................................................................559
Javaヒープ/Permanent世代領域不足時の制御.......................26
Javaメソッドトレースを利用したデバッグ................................233
JDBC接続プールの定義項目...............................................454
JDBCドライバの環境設定......................................................302
JDBCリソースの定義項目......................................................459
JDBCを利用する場合の手順................................................296
JMSクライアントアプリケーションの運用................................327
JMSサービスの定義項目.......................................................517
JMS接続ファクトリの定義項目...............................................460
JMS送信先リソースの定義項目............................................463
JMSの運用方法.....................................................................320
JMSのセキュリティ機能..........................................................427
JMSの提供機能.....................................................................101
JMSのメッセージを送受信する準備.....................................326
JMSリソースとコネクタリソースの関係....................................337
JMSを利用する場合の手順..................................................296
JNDI..........................................................................................73
JNDIサービスの定義項目.....................................................445
JNDIの環境設定....................................................................293
JNDIの使用方法....................................................................162
JPAの実行環境........................................................................58
JPAの提供機能........................................................................57
JSP 2.1......................................................................................29
JSP事前コンパイル...................................................................31
[L]
ldapレルムの設定...................................................................399
ldapレルムの設定...................................................................418
[M]
Message-driven Beanデフォルトプールの定義項目.............516
Message-driven Beanとの連携...............................................117
Message-driven Beanの実行環境............................................35
Microsoft(R) Internet Information Services 6.0の環境設定. 266
Microsoft(R) Internet Information Services 7.0/7.5の環境設定
................................................................................................269
[O]
ORB(Object Request Broker)/RMI-IIOP.................................71
[P]
policyファイルの編集.............................................................421
[S]
Servlet/JSP..................................................................................3
Servlet 2.5.................................................................................28
Servletの提供機能...................................................................28
Session Beanの実行環境.........................................................34
SQL言語.................................................................................541
SQLログ機能.....................................................................70,563
SSL.........................................................................................407
SSLアクセラレータを使用する場合の運用形態...................263
Stateful Session Beanインスタンスの無通信時間監視機能....45
Symfowareの監査証跡...................................................388,432
Symfowareの監査証跡の実行..............................................433
[W]
Web application deployment descriptor (web.xml)...............181
Webアプリケーション..................................................................3
Webアプリケーションの実行..................................................238
Webアプリケーションの定義項目..........................................448
Webアプリケーションへアクセスする場合の運用..........259,385
Webアプリケーションへのアクセスの運用形態を変更する場合
................................................................................................263
Webクラスローダの委譲モデルの変更.................................124
Webコンテナの運用準備.......................................................259
Webコンテナの定義項目.......................................................510
Webサーバコネクタにおけるリクエストの振り分け制御........276
Webサーバコネクタの故障監視............................................280
Webサーバコネクタのログ.....................................................275
WebサーバとIJServerクラスタの連携.....................................273
WebサーバとIJServerクラスタを同じマシンで運用する場合 273
- 572 -
環境ネーミングコンテキスト......................................................78
環境変数の設定......................................................237,240,293
監視サービスの定義項目......................................................526
管理オブジェクトリソースの定義............................................117
管理オブジェクトリソースの定義項目....................................471
管理サービスの定義項目......................................................507
管理ユーザーの指定.............................................................403
管理ユーザーの登録.............................................................394
行のロック機能.........................................................................69
クライアント(呼び出し元)の設定.....................................382,385
クライアントアプリケーションの作成方法...............................161
クライアントからサーバに接続する場合の設定....................294
クライアントとWebサーバ間の通信データの保証に関する要求
................................................................................................413
クラスタの定義項目................................................................442
クラスローダ............................................................................119
クラスローダ使用時の注意事項............................................126
クラスローダの構成................................................................120
クラスローダの分離................................................................122
グループ管理サービス..........................................................119
グループ管理サービスによるロードバランス...........379,381,384
グループ管理サービスによるロードバランスを利用する場合368
グループ管理サービスの定義項目.......................................533
権限と認証ユーザー..............................................................391
検索時のロック機能(SELECT FOR UPDATE)....................568
高信頼機能............................................................................110
コマンドによる振り分け操作と状態表示................................277
コネクションプールの生成単位...............................................99
コネクタサービスの定義項目.................................................510
コネクタ接続プールとコネクタリソースの定義.......................115
コネクタ接続プールの定義項目............................................467
コネクタで使用できる時間監視機能.....................................118
コネクタの運用方法...............................................................334
コネクタの提供機能...............................................................115
コネクタモジュールの定義項目.............................................451
コネクタモジュールの配備解除とリソース定義の削除..........337
コネクタモジュールの配備とリソース定義の作成..................334
コネクタリソースの定義項目...................................................470
コネクタを利用する場合の手順.............................................296
コマンド詳細.............................................................................57
コマンドによる振り分け操作と状態表示..................................40
コマンドを利用した運用.........................................................237
WebサーバとIJServerクラスタを別のマシンで運用する場合274
Webサーバの環境設定.........................................................265
Webサーバを経由する場合の運用準備...............................265
Webサービス..............................................................................4
Webサービスアプリケーションの開発....................................144
Webサービスアプリケーションの配備....................................290
Webサービス運用環境のカスタマイズ..................................291
Webサービスクライアントアプリケーションの開発.................148
Webサービスクライアントの運用環境....................................292
Webサービスクライアントの実行............................................292
Webサービスクライアントのセキュリティ設定.........................424
Webサービスクライアントを利用する場合の手順.................292
Webサービスのセキュリティ設定...........................................423
Webサービスの通信で利用できるデータ型.........................151
Webサービスを利用する場合の手順....................................290
Webサービス・Webサービスクライアントで使用するWSDLの記
述について.............................................................................160
[X]
XMLパーサの設定................................................................126
[あ]
アウトバウンド・リソースアダプタのトランザクション制御........116
アクセス制御プロパティファイル............................................427
アプリケーション開発者/配備担当者/システム管理者を同一の
担当者が担う場合..................................................................420
アプリケーションからJMSを利用する際の認証方法.............432
アプリケーションクライアントコンテナ.......................................72
アプリケーションクライアントモジュールの定義項目.............450
アプリケーション最大処理時間の監視とレスポンス監視........26
アプリケーションに関する定義項目......................................446
アプリケーションのアクセス権の設定....................................422
アプリケーションの運用..........................................................238
アプリケーションのオートリロード...........................................257
アプリケーションの活性変更..................................................255
アプリケーションの検証..........................................................250
アプリケーションの再配備......................................................256
アプリケーションの作成方法..................................................144
アプリケーションのデバッグ...................................................232
アプリケーションのデバッグ情報を利用したデバッグ...........232
アプリケーションの展開..........................................................254
アプリケーションの展開解除..................................................254
アプリケーションの配備...................................................237,248
アプリケーションの配備解除手順..........................................252
アプリケーションの配備手順..................................................249
運用環境のロール対応.........................................................390
運用操作.........................................................................237,239
運用操作の同時実行............................................................246
永続性プロバイダの設定方法.................................................58
エラーページ............................................................................30
オブジェクトリファレンスのキャッシュの設定..........................295
[さ]
サポート規約一覧..................................................................570
サポートデータベースと設定方法...........................................60
サンプル.................................................................................538
サーバーインスタンスの起動/停止/運用状態表示...............245
サーバーインスタンスの追加/削除........................................243
サーバーインスタンスの定義項目.........................................441
サーバーの設定.....................................................................380
サーバーログ..........................................................................344
サービス運用ユーザー..........................................................391
サービス運用ユーザーのカスタマイズ....................................15
サービス管理ユーザー..........................................................391
サービスの自動起動/自動停止......................................238,241
時間監視機能..........................................................................44
[か]
外部リソースの定義項目........................................................474
外部リソースの定義方法........................................................298
カスタムリソースの定義項目..................................................473
カスタムリソースの定義方法..................................................297
環境設定................................................................................539
- 573 -
システム環境設定「Webサーバとワークユニットを同一のマシン
で運用する」の設定変更について........................................276
システム設計..........................................................................372
システムプロパティの定義項目......................................534,537
事前配信................................................................................112
持続サービス..........................................................................109
持続サービスに関するプロパティ..........................................482
縮退運用..................................................................................25
縮退状態のIJServerクラスタの復旧.......................................246
出力情報の内容....................................................................433
初期コンテキスト生成時の設定.............................................293
スレッドダンプを利用したデバッグ........................................233
スレッドプールの定義項目....................................................532
スレッドプールを利用したWorkの実行.................................118
セキュリティ機能.....................................................................544
セキュリティ機能を利用した運用方法...................................416
セキュリティに関するプロパティ.............................................482
セキュリティの定義項目.........................................................519
セキュリティーマネージャー...................................................416
セキュリティーマネージャーの運用.......................................421
セキュリティーマネージャーの有効化と無効化....................421
設計方法................................................................................321
接続サービス..........................................................................107
接続サービスに関するプロパティ..........................................475
設定の管理............................................................................241
設定の定義項目....................................................................490
設定変更.........................................................................237,240
全体構成....................................................................................9
その他リソースを利用する場合の手順..................................296
[な]
認可........................................................................................406
認証........................................................................................405
ネットワークの共有資源へアクセスする場合の環境設定.....170
ネーミングサービス...................................................................75
ネーミングサービスと環境ネーミングコンテキストの仕様差異87
[は]
配備済みアプリケーションのDeployment Descriptor参照....253
配備済みアプリケーションの一覧..........................................252
配備済みアプリケーションの環境設定..................................253
非推奨機能............................................................................557
ファイル構成...........................................................................548
物理格納先自動生成に関するプロパティ............................479
物理格納先の管理................................................................104
物理格納先の生成または更新に関するプロパティ..............484
プライマリキー値の自動生成機能...........................................63
振り分け対象の追加/削除.......................................................39
プロセス制御の定義項目......................................................535
ブローカの起動/停止.............................................................322
ポートマッパー........................................................................108
[ま]
メッセージブローカ.................................................................103
メッセージブローカのアクセスログ.........................................329
メッセージブローカのオプションプロパティ...........................475
メッセージブローカの機能.....................................................104
メッセージブローカのログ......................................................328
[や]
ユーザ/グループ/ロール........................................................412
ユーザ/グループをロールにマッピング.................................417
ユーザとグループ...................................................................427
予兆監視..................................................................................28
[た]
ツール.....................................................................................546
定義項目一覧........................................................................436
定義時に利用できるプロパティ.............................................487
定義詳細..................................................................................56
ディレクトリ展開済みアプリケーションの配備........................251
デフォルトのmimeタイプ........................................................200
デバッガを利用したデバッグ.................................................233
デフォルトレルムの設定.........................................................418
展開中アプリケーションの一覧..............................................254
データソースプロパティ..........................................................544
データベーステーブル自動生成機能....................................64
データベースに接続する時のURL属性...............................543
データベースの環境設定......................................................301
データベース連携/JDBC.......................................................100
データベース連携アプリケーションの作成方法...................163
データベース連携時に使用できる時間監視機能...........98,101
動作環境に関する定義項目.................................................487
ドメインの定義項目................................................................436
トラブルシューティング...........................................................546
トランザクションサービス.............................................................5
トランザクションサービスの定義項目.....................................522
トランザクション制御.................................................................90
トランザクションの監視と凍結機能..........................................97
トランザクションの制御方法.....................................................94
トランザクションのリソース管理................................................96
トランザクションログ..................................................................96
[ら]
ライフサイクルモジュール......................................................127
ライフサイクルモジュールの運用方法...................................129
ライフサイクルモジュールの作成方法...................................165
ライフサイクルモジュールの設計方法...................................128
ライフサイクルモジュールの定義項目...................................452
リソースアクセス時の認証情報..............................................424
リソースアダプタ定義情報の定義項目..................................472
リソース定義の準備................................................................296
リソースに関する定義項目....................................................454
リソースの作成........................................................................238
リソースの状態を変更する場合の手順.................................299
リソースを利用するターゲットを選択する場合の手順..........301
リポジトリの同期化処理............................................................11
ルーティングサービス............................................................108
ルーティングサービスに関するプロパティ............................477
レルム.....................................................................................413
レルムの作成..........................................................................417
レルムの種類の変更方法......................................................395
ロガーの定義項目...........................................................440,518
ログイン認証...........................................................................391
ログイン認証のためのレルム.................................................394
ログ機能に関するプロパティ.................................................482
- 574 -
ログファイルのローテーション................................................361
ローカルトランザクションとグローバルトランザクション............90
ロードバランス/フェイルオーバーアルゴリズム......................375
ロードバランス機能を使用しない場合.....................375,381,382
ロードバランスを使用しない/EJBディスパッチャ機能によるロー
ドバランスを利用する場合.....................................................364
ロールとロールベースのアクセス制限の設定.......................417
- 575 -
Fly UP