B1X1-0015-02Z0(00)
2009
年
11
月
Windows/Solaris/Linux
Interstage Business Application Server
V9.2.0
まえがき
本書の目的
本書は、“Interstage Business Application Server オープンJavaフレームワーク ユーザーズガイド”です。 本書は、Interstage Business Application Serverが提供するオープンJavaフレームワークについて説明します。 本書は、以下の方を対象にしています。
・
システム構築担当者、アプリ開発者、運用設計者前提知識
本書を読む場合、以下の知識が必要です。・
使用するOSに関する基本的な知識・
Javaに関する基本的な知識・
J2EEに関する基本的な知識・
インターネットに関する基本的な知識・
リレーショナルデータベースに関する基本的な知識・
Interstage Application Serverに関する基本的な知識・
Interstage Studioに関する以下の知識-
Webアプリケーション開発・
Strutsに関する基本的な知識・
Spring Frameworkに関する基本的な知識・
iBATISに関する基本的な知識・
TERASOLUNAに関する基本的な知識本書の構成
本書は、以下のように構成されています。 第1章 概要Interstage Business Application Serverが提供するオープンJavaフレームワークの概要について説明します。
第2章 Struts Strutsを使用したWebアプリケーションの開発について説明します。 第3章 Spring Framework Spring Frameworkを使用した業務アプリケーションの開発について説明します。 第4章 iBATIS iBATISを使用したデータアクセス層のアプリケーションの開発について説明します。 第5章 TERASOLUNA TERASOLUNAを使用したアプリケーションの開発について説明します。 第6章 オープンJavaフレームワークにおけるログ機能の利用 オープンJavaフレームワークにおけるログ機能の利用について説明します。 第7章 標準ログ サーバアプリケーションの開発における操作について説明します。 第8章 バックアップ・リストアおよびクラスタ バックアップ・リストアおよびクラスタの利用について説明します。 付録A TERASOLUNAのサンプルアプリケーション TERASOLUNAアプリケーションのサンプルの作成方法および、動作方法を説明します。
付録B 謝辞、免責文、ライセンス文
オープンJavaフレームワークに関わる謝辞、免責文そしてライセンス文について記載しています。
製品名称
本書では、以下の製品名称を略称で表記しています。
製品名称 略称
Microsoft(R) Windows(R) 2000 Professional、 Microsoft(R) Windows(R) 2000 Server、
Microsoft(R) Windows(R) 2000 Advanced Server、 Microsoft(R) Windows Server(R) 2003, Standard Edition、 Microsoft(R) Windows Server(R) 2003 R2, Standard Edition、 Microsoft(R) Windows Server(R) 2003, Enterprise Edition、 Microsoft(R) Windows Server(R) 2003 R2, Enterprise Edition、 Microsoft(R) Windows Server(R) 2003, Standard x64 Edition、 Microsoft(R) Windows Server(R) 2003 R2, Standard x64 Edition、 Microsoft(R) Windows Server(R) 2003, Enterprise x64 Edition、 Microsoft(R) Windows Server(R) 2003 R2, Enterprise x64 Edition、 Microsoft(R) Windows Server(R) 2008 Standard、
Microsoft(R) Windows Server(R) 2008 Standard without Hyper-V、 Microsoft(R) Windows Server(R) 2008 Enterprise、
Microsoft(R) Windows Server(R) 2008 Enterprise without Hyper-V、 Microsoft(R) Windows Server(R) 2008 Datacenter、
Microsoft(R) Windows Server(R) 2008 Datacenter without Hyper-V、 Microsoft(R) Windows Server(R) 2008 R2 Foundation、
Microsoft(R) Windows Server(R) 2008 R2 Standard、 Microsoft(R) Windows Server(R) 2008 R2 Enterprise、 Microsoft(R) Windows Server(R) 2008 R2 Datacenter、
Microsoft(R) Windows Server(R) 2008 R2 for Itanium-Based Systems、 Microsoft(R) Windows(R) XP Professional x64 Edition、
Microsoft(R) Windows(R) XP Home Edition、 Microsoft(R) Windows(R) XP Professional、 Windows Vista(R) Ultimate、
Windows Vista(R) Business、 Windows Vista(R) Home Premium、 Windows Vista(R) Home Basic、 Windows Vista(R) Enterprise、 Windows(R) 7 Ultimate、 Windows(R) 7 Enterprise、 Windows(R) 7 Professional、および Windows(R) 7 Home Premium
Windows
Microsoft(R) Windows(R) 2000 Advanced Server、 Microsoft(R) Windows(R) 2000 Server、および Microsoft(R) Windows(R) 2000 Professional
Windows 2000
Microsoft(R) Windows(R) XP Professional x64 Edition、 Microsoft(R) Windows(R) XP Professional、および Microsoft(R) Windows(R) XP Home Edition
Windows XP
Windows Vista(R) Ultimate、 Windows Vista(R) Business、 Windows Vista(R) Home Premium、 Windows Vista(R) Home Basic、および Windows Vista(R) Enterprise
Windows Vista
Microsoft(R) Windows Server(R) 2003, Standard Edition、 Microsoft(R) Windows Server(R) 2003 R2, Standard Edition、
Microsoft(R) Windows Server(R) 2003, Enterprise Edition、Microsoft(R) Windows
製品名称 略称
Server(R) 2003 R2, Enterprise Edition、
Microsoft(R) Windows Server(R) 2003, Standard x64 Edition、 Microsoft(R) Windows Server(R) 2003 R2, Standard x64 Edition、 Microsoft(R) Windows Server(R) 2003, Enterprise x64 Edition、および Microsoft(R) Windows Server(R) 2003 R2, Enterprise x64 Edition、 Microsoft(R) Windows Server(R) 2008 Standard、
Microsoft(R) Windows Server(R) 2008 Standard without Hyper-V、 Microsoft(R) Windows Server(R) 2008 Enterprise、
Microsoft(R) Windows Server(R) 2008 Enterprise without Hyper-V、 Microsoft(R) Windows Server(R) 2008 Datacenter、
Microsoft(R) Windows Server(R) 2008 Datacenter without Hyper-V、 Microsoft(R) Windows Server(R) 2008 R2 Foundation、
Microsoft(R) Windows Server(R) 2008 R2 Standard、 Microsoft(R) Windows Server(R) 2008 R2 Enterprise、 Microsoft(R) Windows Server(R) 2008 R2 Datacenter、および Microsoft(R) Windows Server(R) 2008 R2 for Itanium-Based Systems
Windows Server 2008またはWindows Server
Windows(R) 7 Ultimate、 Windows(R) 7 Enterprise、 Windows(R) 7 Professional、および Windows(R) 7 Home Premium
Windows 7
Solaris(TM) オペレーティングシステム Solaris
Solaris(TM) 9 オペレーティングシステム Solaris 9
Solaris(TM) 10 オペレーティングシステム Solaris 10
Red Hat Enterprise Linux AS v.4、および Red Hat Enterprise Linux 5
Linux
Java 2 SDK, Standard Edition、および Java Development Kit
JDK
Java 2 Runtime Environment, Standard Edition、および Java Runtime Environment
JRE
Oracle Database 10g Standard Edition、および Oracle Database 10g Enterprise Edition
Oracle、
またはOracle10g
Oracle Database 11g Standard Edition、および Oracle Database 11g Enterprise Edition
Oracle、
またはOracle11g
Symfoware Server Enterprise Edition 9.1/10.0
Symfoware Server Enterprise Edition 9.0/9.1/10.0 、および Symfoware Server Enterprise Extended Edition 9.0/9.1/10.0
Symfoware Server Enterprise Edition 9.0/9.1/10.0、および Symfoware Server Enterprise Extended Edition 9.0/9.1/10.0
Symfoware Server(注)
Interstage Studio Enterprise Edition 9.2 Interstage Studio
注) Symfoware Serverと、Interstage Business Application Serverに同梱しているSymfoware/RDBとを総称する場合、Symfowareと表記
します。
著作権
目 次
第1章概要...1
1.1 Interstage Business Application Serverが提供するオープンJavaフレームワーク...1
1.2 動作環境...1 1.2.1 アプリケーション開発時に必要なソフトウェア...1 1.2.2 アプリケーション実行時に必要なソフトウェア...2 1.2.3 資源要件...3 1.3 運用モデル...3 1.3.1 基本的な構成...3 1.3.2 Spring Frameworkを利用したWeb-AP分散構成...6 第2章 Struts...7 2.1 Strutsの概要...7 2.1.1 Strutsカスタムタグライブラリ...7 2.1.2 ActionServlet...8 2.1.3 Validator...8 2.1.4 DataSource...8 2.1.5 国際化対応...8 2.1.6 一貫したログの出力...8 2.2 Strutsの環境作成...8 2.2.1 IJServerの作成...8 2.2.2 クラスパスの設定...9 2.2.3 アプリケーションの配備...9 2.3 Strutsアプリケーションの開発...10 2.3.1 Strutsアプリケーションに必要な資材の準備...10 2.3.2 Modelの作成...11 2.3.3 Viewの作成...13 2.3.4 Controllerの動作を定義する設定ファイルの作成...15 2.3.5 配備記述子(web.xml)の作成...16 2.3.6 Webアプリケーションの作成...17 2.3.7 Spring Frameworkとの連携...17 2.3.8 iBATISとの連携...17 2.4 Struts IDEによるStrutsアプリケーションの作成...17 2.4.1 基本的な操作...17 2.4.2 Spring Frameworkと連携するアプリケーションの作成...33 2.5 Strutsの運用・保守...33 2.5.1 起動・停止...33 2.5.2 ログ...33 2.6 注意事項...34 2.7 チューニング...35 2.8 トラブルシューティング...36 2.8.1 ワークユニット起動時の異常...36 第3章 Spring Framework...37 3.1 Spring Frameworkの概要...37 3.1.1 DIコンテナ...37 3.1.2 トランザクション抽象化レイヤ...38 3.1.3 JDBC抽象化レイヤ...38 3.1.4 O/Rマッピング連携...38 3.1.5 AOP...38 3.1.6 MVCフレームワーク...39 3.1.7 JTAによるトランザクション制御機能...39 3.1.8 IJServer間連携...39 3.1.9 Symfowareのエラーコードに対応したJDBCサポート機能...40 3.1.10 一貫したログの出力...40 3.2 Spring Frameworkの環境作成...40
3.2.1 IJServerの作成...40 3.2.2 クラスパスの設定...40 3.2.3 アプリケーションの配備...41 3.3 Spring Frameworkアプリケーションの開発...41 3.3.1 AP層の作成...42 3.3.2 Web層の作成...45 3.3.3 定義ファイルの作成...47 3.3.4 リモート機能によるIJServer間連携...50 3.3.5 Symfowareのエラーコードに対応した例外クラス...57 3.3.6 Strutsとの連携...58 3.3.7 iBATISとの連携...65
3.4 Spring IDEによるSpring Frameworkアプリケーションの作成...65
3.4.1 基本的な操作...65 3.4.2 Strutsと連携するアプリケーションの作成...82 3.5 Spring Frameworkの運用・保守...88 3.5.1 起動・停止...88 3.5.2 ログ...88 3.5.3 複数IJServerによる分離型での運用...89 3.6 注意事項...91 3.6.1 Spring FrameworkアプリケーションでJTAを利用する場合の注意事項...91 3.6.2 Spring Frameworkアプリケーション作成時の注意事項...92 3.7 チューニング...92 3.8 トラブルシューティング...92 3.8.1 アプリケーション配備時の異常...92 3.8.2 ワークユニット起動時の異常...92 3.8.3 アプリケーション実行時の異常...92 第4章 iBATIS...94 4.1 iBATISの概要...94 4.1.1 O/Rマッピング...95 4.1.2 コネクション管理...95 4.1.3 トランザクション管理...96 4.1.4 一貫したログの出力...96 4.2 iBATISの環境作成...96 4.2.1 データベース接続の設定...96 4.2.2 IJServerの作成...96 4.2.3 クラスパスの設定...97 4.2.4 アプリケーションの配備...97 4.3 iBATISアプリケーションの開発...97 4.3.1 iBATISの基本設計...98 4.3.2 iBATISアプリケーションに必要な設定ファイルの作成...98 4.3.3 iBATISアプリケーションの実行クラスの作成(Spring Frameworkと連携しない場合)...101 4.3.4 Strutsとの連携...102 4.3.5 Spring Frameworkとの連携...102 4.4 iBATISの運用・保守...104 4.4.1 起動・停止...104 4.4.2 ログ...104 4.5 注意事項...105 4.5.1 データベース固有の注意点...105 4.6 チューニング...106 4.7 トラブルシューティング...106 4.7.1 アプリケーション実行時の異常...106 第5章 TERASOLUNA...107 5.1 TERASOLUNAの概要...107 5.1.1 提供機能...107 5.1.2 システムモデル...108 5.2 TERASOLUNAの環境作成...109
5.2.1 IJServerの作成...110 5.2.2 クラスパスの設定...110 5.2.3 ワークマネージャの設定(TERASOLUNA-Batchのみ)...112 5.2.4 TERASOLUNAフレームワークが出力するログの設定...113 5.3 TERASOLUNAの開発...113 5.3.1 ブランクプロジェクトのインポート...113 5.3.2 ファイルパスの修正...114 5.3.3 データベースの設定...114 5.3.4 TERASOLUNAアプリケーションが出力するログの設定...116 5.3.5 アプリケーションの開発...116 5.3.6 ワークマネージャのスレッドプールサイズの調整 (TERASOLUNA-Batch)...117 5.3.7 配備アプリケーションの変更手順...118 5.3.8 デバッグ方法...118 5.4 TERASOLUNAの運用・保守...118 5.4.1 起動・停止...118 5.4.2 ログ...118 5.4.3 異常発生時の対処...118 5.5 注意事項...118 5.5.1 共通の注意事項...118
5.5.2 TERASOLUNA Batch Framework for Java使用時の注意事項...118
5.6 チューニング...119
5.6.1 TERASOLUNA Batch Framework for Javaのチューニング...119
5.7 トラブルシューティング...121
5.7.1 TERASOLUNA Batch Framework for Javaのトラブルシューティング...121
第6章オープンJavaフレームワークにおけるログ機能の利用... 122 6.1 commons-logging API仕様に準拠したログ機能...122 6.1.1 commons-logging API仕様に準拠したログ機能の概要...122 6.1.2 commons-logging API仕様に準拠したログ機能の環境作成...122 6.1.3 アプリケーションログの出力レベルについて...125 6.2 ログ機能の利用方法...126 6.2.1 commons-logging APIを用いてログ出力する...126 6.2.2 LogComposerクラスを用いてログを出力する...126 6.2.3 ExtMessageComposerクラスを用いてログを出力する...127 6.2.4 ExtDataComposerクラスを用いてログを出力する...128 6.2.5 ExtTimeComposerクラスを用いてログを出力する...129 6.2.6 ULogComposerクラスを用いてログを出力する...131 6.3 注意事項...136 6.4 トラブルシューティング...136 第7章標準ログ...139 7.1 標準ログの概要...139 7.2 標準ログの定義...139 7.3 標準ログの出力レベル...141 7.4 サブシステム名...142 7.5 標準ログの基本フォーマット...143 7.6 標準ログのメッセージ本文...144 7.6.1 システムログ...144 7.6.2 性能ログ...147 7.7 注意事項...150 7.8 トラブルシューティング...150 第8章バックアップ・リストアおよびクラスタ... 151 8.1 バックアップ・リストア資源の一覧...151 8.2 バックアップの手順...151 8.2.1 アプリケーションサーバの停止...151 8.2.2 アプリケーションサーバ環境資源のバックアップ...151 8.2.3 アプリケーションサーバの起動...152
8.3 リストアの手順...152 8.3.1 アプリケーションサーバの停止...152 8.3.2 アプリケーションサーバ環境資源のリストア...152 8.3.3 アプリケーションサーバの起動...152 8.4 クラスタ構成...152 付録A TERASOLUNAのサンプルアプリケーション...153 A.1 サンプルの導入方法...153
A.2 TERASOLUNA Server Framework for Java (Web版)のサンプル...153
A.2.1 サンプルの構成...153
A.2.2 動作方法...155
A.3 TERASOLUNA Server Framework for Java (Rich版)のサンプル...156
A.3.1 サンプルの構成...156
A.3.2 動作方法...158
A.4 TERASOLUNA Batch Framework for Javaのサンプル...159
A.4.1 サンプルの作成方法...159 A.4.2 サンプルの動作方法...164 付録B 謝辞、免責文、ライセンス文...167 B.1 Apache Licenseのライセンス文...167 B.2 AspectJのライセンス文...172 B.3 Spring IDEのライセンス文...174 B.4 ASMのライセンス文...177
第
1
章
概要
1.1 Interstage Business Application Server
が提供するオープン
Java
フレームワーク
Interstage Business Application Serverは、オープンソースのフレームワークとして人気のあるStruts、Spring Framework、iBATIS、そし
てそれらを統合した汎用フレームワークであるTERASOLUNAを提供します。 各フレームワークについて以下に説明します。
・
Struts Webアプリケーションに、Model、View、ControllerのMVC構造を適用して、Webアプリケーションの開発を容易にするフレームワー クです。・
Spring FrameworkDI(Dependency Injection)機能やAOP(Aspect Oriented Programming)により、POJO(Plain Old Java Object)クラスを組み合わせ
てアプリケーションを作成することを可能にして、業務アプリケーションの開発を容易にするフレームワークです。
・
iBATIS JavaオブジェクトとRDBのデータ構造の違いを吸収してマッピング(O/Rマッピング)することにより、データアクセス層のアプリケー ションの開発を容易にするフレームワークです。・
TERASOLUNA Struts、Spring Framework、iBATISを統合した汎用フレームワークです。Webアプリケーション向け、リッチクライアント向け、バッチ アプリケーション向けのフレームワークがあります。Struts、Spring Framework、iBATISのオリジナルのマニュアルおよびjavadocは、Interstage Business Application Serverのマニュアル CD-ROM内に格納されています。
TERASOLUNAのマニュアルについては、下記のサイトを参照してください。 ( http://sourceforge.jp/projects/terasoluna/ )
一貫したログの出力
Interstage Business Application Serverでは、上記のフレームワークを組み合わせた際に、1つのリクエストに対して1つの“コンテキスト ID”を紐付けてログを出力することができます。各フレームワークが出力するログに一貫して同じIDがついているため、どのリクエストの 処理がどのような処理ルートを実行したかをログから判別することができます。詳細は、“第7章 標準ログ”を参照してください。
1.2
動作環境
1.2.1
アプリケーション開発時に必要なソフトウェア
アプリケーション開発時に必要なソフトウェアについて説明します。■アプリケーション開発環境
項番 機能名 製品名 バージョン・レベル 1 オープンJavaフレームワークを利用し たアプリケーションの開発(注1)Interstage Studio Enterprise Edition (注2) 9.2.0
注1) Spring FrameworkのIJServer連携機能を使用する場合は、CORBAサービスクライアントおよびCORBAサービスディベロップメント ツールをインストールする必要があります。 また、JNDIを使用するアプリケーションを作成する場合は、CORBAサービスまたはCORBAサービスクライアントをインストールする 必要があります。 注2) Java EEワークベンチは使用できません。
■データベース関連
アプリケーション開発に必要なデータベース関連のソフトウェアついては、“1.2.2 アプリケーション実行時に必要なソフトウェア”の“■ データベース関連”を参照してください。1.2.2
アプリケーション実行時に必要なソフトウェア
アプリケーション実行時に必要なソフトウェアについて説明します。■
Java
実行環境
項番 機能名 製品名 バージョン・レベル 1 オープンJavaフレームワークを利用し たアプリケーション 本製品が提供するアプリケーションサーバのIJServer (J2EE) (注1) -注1) 対応するJDKのバージョンは5.0です。V8互換モードのIJServerは使用できません。■データベース関連
サポート対象のデータベースは各JDBCドライバのマニュアルを参照してください。Symfoware
を使用したアプリケーションを運用する場合
項番 プラットフォーム サポートするJDBCドライバ バージョン・レベル1 Windows(R) Symfoware Server クライアント機能 9.0.0以降
2 Solaris Symfoware Server クライアント機能 9.0.0以降
3 RHEL-AS4(x86)/AS4(EM64T) Symfoware Server クライアント機能 9.0.0以降 4 RHEL5(x86)/(Intel64) Symfoware Server クライアント機能 9.0.0以降 5 RHEL-AS4(IPF) Symfoware Server クライアント機能 9.0.0以降
6 RHEL5(IPF) Symfoware Server クライアント機能 9.0.0以降
注)
iBATISの一部の機能において、Symfoware Serverのバージョン・レベル10.0.0以上で提供されるJDBCドライバの機能が必要で
す。詳細は“第4章 iBATIS”の“4.5.1 データベース固有の注意点”を参照してください。
Oracle
を使用したアプリケーションを運用する場合
項番 プラットフォーム サポートするJDBCドライバ バージョン・レベル
1 Windows(R) Oracle JDBC Driver 10.2.0または11.1
2 Solaris Oracle JDBC Driver 10.2.0または11.1
3 RHEL-AS4(x86)/AS4(EM64T) Oracle JDBC Driver 10.2.0または11.1 4 RHEL5(x86)/(Intel64) Oracle JDBC Driver 10.2.0または11.1
5 RHEL-AS4(IPF) Oracle JDBC Driver 10.2.0
6 RHEL5(IPF) Oracle JDBC Driver 10.2.0
注)
Oracle JDBC Driverのバージョンが11.1.0.6以前の場合、ConnectionEventListenerが未実装です。このため、以下の機能を使用す
る と 誤 動 作 す る 場 合 が あ り ま す 。 以 下 の 機 能 を 使 用 す る 場 合 に は 、 10.2.0 の Oracle JDBC Driver を 使 用 す る か 、
ConnectionEventListenerが実装されている修正パッチを、Oracle製品のSupportDesk契約に基づいて、SupportDeskから入手して
-Interstageがコネクションをプールする(oracle.jdbc.pool.OracleConnectionPoolDataSource) -分散トランザクションを使用する(oracle.jdbc.xa.OracleXADataSource)
SQL Server
を使用したアプリケーションを運用する場合
項番 プラットフォーム サポートするJDBCドライバ バージョン・レベル
1 Windows(R) Microsoft(R) SQL Server(TM) 2005 JDBC Driver 1.2以降 2 Solaris Microsoft(R) SQL Server(TM) 2005 JDBC Driver 1.2以降 3 RHEL-AS4(x86)/AS4(EM64T) Microsoft(R) SQL Server(TM) 2005 JDBC Driver 1.2以降 4 RHEL5(x86)/(Intel64) Microsoft(R) SQL Server(TM) 2005 JDBC Driver 1.2以降 5 RHEL-AS4(IPF) Microsoft(R) SQL Server(TM) 2005 JDBC Driver 1.2以降 6 RHEL5(IPF) Microsoft(R) SQL Server(TM) 2005 JDBC Driver 1.2以降 注)
分散トランザクション機能を使用する場合は、使用できません。
PowerGres Plus
を使用したアプリケーションを運用する場合
項番 プラットフォーム サポートするJDBCドライバ バージョン・レベル
1 Windows(R) PowerGres Plusクライアント V5.0
2 RHEL-AS4(x86)/AS4(EM64T) PowerGres Plusクライアント V5.0
3 RHEL5(Intel64) PowerGres Plusクライアント V5.0
注) 分散トランザクション機能を使用する場合は、使用できません。
1.2.3
資源要件
IPC
資源
オープンJavaフレームワークでは、IPC資源を使用していないため、IPC資源のチューニングの考慮の必要はありません。1.3
運用モデル
1.3.1
基本的な構成
オープンJavaフレームワークを使用する場合の基本的な構成について説明します。 基本的な構成は、以下の8パターンがあります。 項番 パターン 説明 選択のポイント 1 Strutsだけを使用する構 成 Strutsを使用したWebアプリケーション の構成です。 WebコンテナまたはWeb+EJBコンテ ナ上で動作します。 ビジネスロジックの規模が小さい場合に選択します。Interstage Business Application Serverにおける機能
拡張である一貫したログを使用することができます。 2 Spring Frameworkだけ を使用する構成 プレゼンテーション層にSpring-MVC 機能を使用して、ビジネスロジック層で Spring FrameworkのDI機能やAOP 機能を利用する構成です。 WebコンテナまたはWeb+EJBコンテ ナ上で動作します。 データベースのテーブル構造が単純でiBATISのO/R マッピング機能が必要ない場合に選択します。
Interstage Business Application Serverにおける機能
項番 パターン 説明 選択のポイント 3 iBATISだけを使用する 構成 iBATISのO/Rマッピング機能だけを 使用する構成です。 Webコンテナ、Web+EJBコンテナ、お よびEJBコンテナ上で動作します。 プレゼンテーション層をStrutsやSpring Frameworkを 使用せずにユーザ独自で作成した場合や、EJBの SessionBeanからiBATISのO/Rマッピング機能を使用 する場合などに選択します。 データベースコネクションはJNDIで取得し、アプリケー ションサーバが管理する形態を推奨します。 一貫したログは使用できません。 4 StrutsとSpring Frameworkを使用する 構成 プレゼンテーション層にStrutsを使用 して、ビジネスロジック層でSpring FrameworkのDI機能やAOP機能を利 用する構成です。 WebコンテナまたはWeb+EJBコンテ ナ上で動作します。 上記1の構成で作成したアプリケーションから、ビジネ スロジックに拡張性をもたせるようにしたい場合に選 択します。
Interstage Business Application Serverにおける機能
拡張である一貫したログを使用することができます。 5 StrutsとiBATISを使用 する構成 プレゼンテーション層でStrutsを使用 し、データベースのアクセスにiBATIS の機能を使用する構成です。図1.1 StrutsとiBATISを使用する構成。 WebコンテナまたはWeb+EJBコンテ ナ上で動作します。 純粋なビジネスロジックが少なく、画面表示とデータ ベースアクセスが大半を占めるようなアプリケーション の場合に選択します。 データベースコネクションはJNDIで取得し、アプリケー ションサーバが管理する形態を推奨します。
Interstage Business Application Serverにおける機能
拡張である一貫したログを使用することができます。 6 Struts、Spring Framework、および iBATISを使用する構成 プレゼンテーション層でStruts、ビジネ スロジック層でSpring Frameworkと iBATISの機能を使用する構成です。 図1.2 Struts、Spring Framework、およ びiBATISを使用する構成。 WebコンテナまたはWeb+EJBコンテ ナ上で動作します。 拡張性を考慮して、ビジネスロジックと画面表示、およ びデータベースアクセスを分離する場合に選択しま す。 Spring Frameworkでデータベースコネクション管理、 トランザクション管理を一括で管理することができま す。
Interstage Business Application Serverにおける機能
拡張である一貫したログを使用することができます。 7 Spring Frameworkと iBATISを使用する構成 上記6の構成において、Strutsの代わ りにSpring-MVC機能を使用する構成 です。図1.3 Spring Frameworkと iBATISを使用する構成。 WebコンテナまたはWeb+EJBコンテ ナ上で動作します。 拡張性を考慮して、ビジネスロジックと画面表示、およ びデータベースアクセスを分離する場合に選択しま す。 上記6の構成とは同等の機能のため、開発者のスキ ルセットによって選択してください。 Spring Frameworkでデータベースコネクション管理、 トランザクション管理を一括で管理することができま す。
Interstage Business Application Serverにおける機能
拡張である一貫したログを使用することができます。 8 TERASOLUNAを使用 する構成 上記5の構成を、TERASOLUNAフ レームワークを介して使用する構成で す。図1.4 TERASOLUNAを使用する 構成。 WebコンテナまたはWeb+EJBコンテ ナ上で動作します。 拡張性を考慮して、ビジネスロジックと画面表示、およ びデータベースアクセスを分離する場合、また、バッ チアプリケーションの開発を行う場合に選択します。 Struts、Spring Framework、iBATISに加え、 TERASOLUNAが提供するWebアプリケーション、リッ チクライアントアプリケーションおよびバッチアプリケー ションのための部品を利用することができます。
Interstage Business Application Serverにおける機能
拡張である一貫したログを使用することができます。(注 1)
注1)
TERASOKUNAフレームワーク層では一貫したログの出力は行いません。TERASOLUNAから呼び出されるStruts、Spring Framework
図
1.1 Struts
と
iBATIS
を使用する構成
図
1.2 Struts
、
Spring Framework
、および
iBATIS
を使用する構成
図
1.4 TERASOLUNA
を使用する構成
StrutsとiBATISを連携させる方法については、“第4章 iBATIS”の“4.3.4 Strutsとの連携”を参照してください。
StrutsとSpring Frameworkを連携させる方法については、“第3章 Spring Framework”の“3.3.6 Strutsとの連携”を参照してください。
Spring FrameworkとiBATISを連携させる方法については、“第3章 Spring Framework”の“3.3.7 iBATISとの連携”および“第4章 iBATIS”の“4.3.5 Spring Frameworkとの連携”を参照してください。
1.3.2 Spring Framework
を利用した
Web-AP
分散構成
Spring Frameworkを使用する場合は、プレゼンテーション層(Web層)とビジネスロジック層(AP層)を分離したWeb-AP分散構成をとるこ
とができます。
図
1.5 Struts
、
Spring Framework
、および
iBATIS
を使用した
Web-AP
分散構成
Web-AP分散構成により、大規模システムにおいてWeb層とAP層の負荷を考慮した柔軟なサーバ構成を実現することができます。 TERASOLUNAを使用する構成でも、同様にWeb-AP分散構成をとることができます。
第
2
章
Struts
2.1 Struts
の概要
StrutsとはWebアプリケーションのオープンソースフレームワークです。Strutsを利用することにより、Webアプリケーションの開発効率を 高める事が期待できます。 主な機能は以下の通りです。・
Strutsカスタムタグライブラリ・
ActionServlet・
Validator・
DataSource・
国際化対応 本製品で提供するStrutsは、以下の機能を追加提供します。・
一貫したログの出力 Struts 1.2.9が提供する機能と、本製品に含まれるStrutsが提供する機能を記載します。 機能名 Struts 1.2.9 本製品で提供するStruts Strutsカスタムタグライブラリ ○ ○ ActionServlet ○ ○ Validator ○ ○ DataSource △(注) △(注) 国際化対応 ○ ○ 一貫したログの出力 × ○ 注)Struts 1.2.9では非推奨です。2.1.1 Struts
カスタムタグライブラリ
処理の分岐や繰り返し、エラー処理などJSPでよく利用される機能をカスタムタグとして提供しています。 カスタムタグを利用する事により、JSP内に存在していたJavaコードをHTMLと同様のタグに置き換える事ができるため、JSPの可読性が 向上します。 Strutsでは以下のカスタムタグを提供しています。・
html フォームなどの各HTMLタグを代替し、Strutsと連動した処理を提供します。・
logic 条件分岐や繰り返し、値の比較などの制御ロジックをタグ化します。・
bean リクエストデータや業務オブジェクトの他に、HTTPヘッダやクッキーのような不可視のリクエストデータへのアクセス手段も提供しま す。・
nested 上記3タグの記述を簡略化する機能を提供します。 同一オブジェクトにアクセスする際の冗長な記述を改善する事ができます。・
tiles 画面をヘッダ、メニュー、コンテンツなどの部分に分割し、これらを組み合わせる事によって画面を構成する機能。各部分の再利 用性を高める事ができます。2.1.2 ActionServlet
Struts唯一のサーブレットで、Strutsランタイムの動作を指定する設定ファイルの内容に従い、入出力データの振り分けや画面遷移の 制御を引き受けます。 Strutsアプリケーションにおいては、このActionServletのおかげで、MVCのうちControllerの記述を限りなく省力化する事が可能になり、 ModelとViewのアプリケーション固有の機能開発に専念する事が可能になります。2.1.3 Validator
クライアントからの入力データを検証設定ファイルに定義した検証対象、検証内容、エラーメッセージなどの条件に従って検証処理を 行います。 Validatorでは、予め必須チェック、文字列長チェック、正規表現チェック、データ型チェック、数値範囲チェックなどが提供されており、 検証設定ファイルを用意するだけで、これらの機能を利用することができます。 また、開発者が適宜必要に応じて拡張できる柔軟性も持ち合わせています。2.1.4 DataSource
Strutsランタイムの動作を指定する設定ファイルへアプリケーションが利用する個々のデータソースの情報を定義する事によって、 java.sql.DataSourceオブジェクトとして利用する事が可能になります。 初期のStrutsでは標準的なDB接続方法でしたが、現在ではデータベース処理とビジネスロジックを分離する目的のため、Strutsが管理する DataSourceではなく、アプリケーションサーバが管理するDataSourceを利用する事が推奨されています。2.1.5
国際化対応
Strutsでは国や言語に合わせた資材を用意する事で、クライアントのロケール情報を解析し、適切な資材を自動的に選択する機能を 提供します。 共通で利用できる部分と言語固有の部分を分けて開発できるため、アプリケーションの再利用性を高める事ができます。2.1.6
一貫したログの出力
本製品で提供するStrutsでは、一連のアプリケーションはコンテキストIDと呼ばれる識別情報に関連付けられます。 ログファイルにコンテキストIDを付加してログメッセージを出力する事によって、一連のアプリケーションが出力したログを選定する事が できます。 本機能の詳細については、“第7章 標準ログ”を参照してください。2.2 Strutsの環境作成
Strutsを利用するためには、以下の手順で環境を作成します。・
IJServerの作成・
クラスパスの設定・
Strutsアプリケーションの配備2.2.1 IJServer
の作成
Strutsアプリケーションを動作させるために必要なIJServerを作成します。 ◆IJServerの作成 Interstage管理コンソールを使用して、IJServerワークユニットを作成します。・
[システム] > [ワークユニット] > [新規作成]タブStrutsアプリケーションでは、IJServerのタイプ“EJBアプリケーションのみ運用”は利用できません。
2.2.2
クラスパスの設定
IJServerのクラスパスへログ機能が動作するために必要なjarファイルを設定します。 ◆クラスパスの設定 Interstage管理コンソールを使用して、IJServerワークユニットでログ機能が動作するために必要なjarファイルをクラスパスへ設定しま す。・
[システム] > [ワークユニット] > “ワークユニット名” > [環境設定]タブ 以下のjarファイルを設定します。 [Interstageのインストールディレクトリ]\BAS\struts12\lib\struts12.jar [Interstageのインストールディレクトリ]\BAS\lib\commons-beanutils-1.8.0.jar [Interstageのインストールディレクトリ]\BAS\lib\commons-digester-1.8.1.jar [Interstageのインストールディレクトリ]\BAS\lib\commons-logging-1.1.1.jar [Interstageのインストールディレクトリ]\BAS\lib\apfwlogging.jar [Interstageのインストールディレクトリ]\APC\lib\uji.jar [Interstageのインストールディレクトリ]\APC\lib\ujief.jar [Interstageのインストールディレクトリ]\APC\lib\ujilog.jar [Interstageのインストールディレクトリ]\BAS\lib\apfwutils50.jar /opt/FJSVibs/struts12/lib/struts12.jar /opt/FJSVibs/lib/commons-beanutils-1.8.0.jar /opt/FJSVibs/lib/commons-digester-1.8.1.jar /opt/FJSVibs/lib/commons-logging-1.1.1.jar /opt/FJSVibs/lib/apfwlogging.jar /opt/FJSVwebc/lib/uji.jar /opt/FJSVapcef/lib/ujief.jar /opt/FJSVapclg/lib/ujilog.jar /opt/FJSVibs/lib/apfwutils50.jar2.2.3
アプリケーションの配備
作成したIJServerへ、Strutsアプリケーションを配備します。 ◆アプリケーションの配備操作 Interstage管理コンソールを使用して、IJServerワークユニットへStrutsアプリケーションファイルを配備します。・
[システム] > [ワークユニット] > “ワークユニット名” > [配備]タブ2.3 Strutsアプリケーションの開発
本項では、Strutsアプリケーションの開発の手順を説明します。・
Strutsアプリケーションに必要な資材の準備・
Modelの作成・
Viewの作成・
Controllerの動作を定義する設定ファイルの作成・
配備記述子(web.xml)の作成・
Webアプリケーションの作成・
Spring Frameworkとの連携・
iBATISとの連携Interstage Studio上におけるStrutsアプリケーション開発用プロジェクトの作成方法については、“2.4 Struts IDEによるStrutsアプリケー
ションの作成”を参照してください。
2.3.1 Struts
アプリケーションに必要な資材の準備
必要な
jar
ファイル一覧
Strutsアプリケーションで必要となるjarファイルは以下の通りです。 jarファイル名 機能概要 struts12.jar strutsランタイム一式 apfwlogging.jar 標準ログの出力で使用 uji.jar ログ機能の既定機能を利用するために使用 ujief.jar シスログ、またはイベントログを利用するために使用 ujilog.jar ログ機能の拡張機能を利用するために使用 apfwutils50.jar 共通ユーティリティの機能を利用するために使用 commons-beanutils-1.8.0.jar Formへの入力値をJavaBeanに格納する機能で使用 commons-digester-1.8.1.jar struts設定ファイルの解析で使用 commons-logging-1.1.1.jar commons-digesterが使用 commons-fileupload-1.2.1.jar ファイルアップロード機能を使用する場合に必要 commons-validator-1.3.1.jar プラグイン検証機能を使用する場合に必要 antlr-2.7.7.jar プラグイン検証機能を使用する場合に必要 jakarta-oro-2.0.8.jar プラグイン検証機能を使用する場合に必要jar
ファイルの格納先
本製品が提供するStrutsのjarファイルは以下に格納されています。 [Interstageのインストールディレクトリ]\BAS\struts12\lib\/opt/FJSVibs/struts12/lib/
2.3.2 Model
の作成
Modelは、ユーザアプリケーションのビジネスロジックを実装します。 Strutsの作法では、ビジネスロジックを実装するActionクラス、リクエストデータを格納するActionFormクラスの2つから構成されます。 なお、各APIの詳細については、StrutsのJavadocを参照してください。ActionForm
クラスの作成
JSPの入力フォームに入力された情報を格納するクラスです。 org.apache.struts.action.ActionFormクラスを継承する以外は、JavaBeansと同様に開発を行います。 (ExtActionForm.java) package sample; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import javax.servlet.http.HttpServletRequest;public class ExtActionForm extends ActionForm {
// プロパティ
private String name = null;
// アクセサ
public void setName( String prm ) {
name = prm;
}
public String getName( ) {
return name;
}
// (1)
public ActionErrors validate( ActionMapping mapping,
ActionErrors ret = new ActionErrors();
if( (null == name) || (name.equals("")) ) {
ret.add( "name", new ActionMessage("err.input", false) );
} return ret; } } (1) 検証機能 このメソッドは、Actionクラスが実行される前にStrutsランタイムから呼び出されます。
Action
クラスの作成
ユーザのビジネスロジックを実装するクラスです。 org.apache.struts.action.Actionクラスを継承させる必要があります。 (ExtAction.java) package sample; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class ExtAction extends Action {
// (1)
public ActionForward execute( ActionMapping mapping,
ActionForm form,
HttpServletRequest req,
HttpServletResponse res )
throws java.lang.Exception {
ExtActionForm eaf = (ExtActionForm)form;
eaf.setName( name + ", hello." );
// (2)
return (mapping.findForward( "result" ));
} } (1) 業務ロジックの実装 executeメソッドをオーバライドして、ユーザの業務ロジックを実装します。 (2) 処理結果の遷移先を返却 処理結果として出力する遷移先(Struts設定ファイルで定義したforwardタグ)を指定します。
2.3.3 View
の作成
Strutsアプリケーションでは、Viewとして主にJSPが使用されます。 そのため、StrutsではJSPの開発をサポートするカスタムタグライブラリを提供しています。 カスタムタグライブラリを使用する事により、HTMLタグとコードの混在が軽減され、可読性およびメンテナンス性の向上が期待できま す。 なお、Strutsカスタムタグライブラリの詳細については、Strutsのマニュアルを参照してください。カスタムタグライブラリの使用方法
JSPでカスタムタグを利用するには、Javaのimport文のようにカスタムタグの利用宣言を行う必要があります。 その際、taglibタグを使用してカスタムタグの構文を定義したtldファイルを指定します。 この指定にはいくつかの方法があります。・
JSPファイルからの相対パスで指定する・
Webモジュールからの絶対パスで指定する・
配備記述子で定義したtldファイルのパスに対応するキーを指定する・
コンテナがマッピングしているtldファイルのパスに対応するキーを指定するJSPの詳細については、“Interstage Application Server / Interstage Web Server J2EE ユーザーズガイド”を参照してください。
入力画面の作成
ユーザの入力を受け付けるJSPを作成します。
(input.jsp)
<%@ page contentType="text/html; charset=UTF-8" %>
<!-- (1) -->
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<html>
<!-- (2) -->
<html:form action="/sample.do" >
Please input your name.<br>
<!-- (3) --> <html:text property="name" /> <html:submit value="submit" /><br> </html:form> </body> </html> (1) strutsカスタムタグライブラリの宣言 Strutsカスタムタグライブラリを使用する場合に記述します。 (2) 入力フォーム 入力フォームを表します。 action属性でリクエスト送信先を指定します。 (3) テキストフィールド テキストフィールドです。 property属性でActionFormのプロパティと紐付けを行います。
出力画面の作成
業務ロジックでの処理結果を出力するJSPを作成します。 (result.jsp)<%@ page contentType="text/html; charset=UTF-8" %>
<!-- (1) -->
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<html>
<body>
<!-- (2) -->
<bean:write name="formbean" property="name" /><br>
<br> <a href="./input.jsp">return</a><br> </body> </html> (1) strutsカスタムタグライブラリの宣言 Strutsカスタムタグライブラリを使用する場合に記述します。
(2) ActionFormにアクセス カスタムタグを介して、ActionFormに格納されている値を出力します。
2.3.4 Controller
の動作を定義する設定ファイルの作成
ユーザは定義ファイル(Struts設定ファイル)で動作内容の指示を行います。 このStruts設定ファイルの定義内容に従い、ControllerはリクエストURLごとに処理の振り分け、Actionクラスの処理結果に応じた遷移 先の呼び出し、例外発生時の対応などを行います。 (struts-config.xml) <!-- (1) --><!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<!-- (2) -->
<form-bean name="formbean" type="sample.ExtActionForm" />
</form-beans>
<action-mappings>
<!-- (3) -->
<action path="/sample" type="sample.ExtAction" name="formbean" input="/input.jsp" >
<!-- (4) -->
<forward name="result" path="/result.jsp" />
</action> </action-mappings> </struts-config> (1) DOCTYPE指定 Struts設定ファイルの構文を定めたdtdファイルを指定します。 (2) form-beans リクエストパラメータなどを格納するJavaBeanクラスを定義します。 (3) action-mapping リクエストパスごとに呼び出されるActionクラスを定義します。 (4) forward
処理結果を表示するページのパスを定義します。
2.3.5
配備記述子
(web.xml)
の作成
Webアプリケーションの配備記述子に、Strutsアプリケーションに必要な定義を記述します。
web.xmlの詳細については、“Interstage Application Server / Interstage Web Server J2EE ユーザーズガイド”を参照してください。
(web.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <!-- (1) --> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <!-- (2) --> <load-on-startup>2</load-on-startup> </servlet> <!-- (3) --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app> (1) servlet Strutsアプリケーションの起点となるサーブレット名、および、サーブレットクラスを指定します。 (2) load-on-startup この指定を行う事で、IJServer起動時にStrutsランタイムの活性化が行われるようになります。
本要素を省略した場合、アプリケーションが正常に動作しない場合があるため、必ず指定してください。 (3) servlet-mapping Strutsアプリケーションが呼び出されるURLパターンを指定します。 URLパターンは任意の値が使用できます。
2.3.6 Web
アプリケーションの作成
以上までの手順でStrutsアプリケーションに必要な資材の作成が完了しましたので、Webアプリケーションとして配備するためにWAR ファイルを作成します。WARファイルの作成方法、IJServerへの配備方法などについては、“Interstage Application Server / Interstage Web Server J2EE ユー
ザーズガイド”を参照してください。
Struts
アプリケーションの資材配置
Webアプリケーションと同様のディレクトリ構成に、Strutsアプリケーションに必要な資材を配置します。WAR
ファイルにまとめる
上記の通りに資材を配置し終わったら、Webアプリケーションとして配備するためにWARとして固めます。 以上が、Strutsアプリケーションの開発工程となります。2.3.7 Spring Framework
との連携
Spring Frameworkと連携する際は、“第3章 Spring Framework”の“3.3.6 Strutsとの連携”を参照してください。
2.3.8 iBATIS
との連携
iBATISと連携する際は、“第4章 iBATIS”の“4.3.4 Strutsとの連携”を参照してください。
2.4 Struts IDE
による
Struts
アプリケーションの作成
2.4.1
基本的な操作
本章では、Struts IDEの基本的な操作について説明します。
■
Struts
サポートの追加
Struts IDEを使用して、WebアプリケーションプロジェクトにStrutsサポートを追加する手順を以下に示します。
1.
Interstage Studio V9.2でWebアプリケーションプロジェクトを作成します。2.
Struts IDEの[Strutsサポート]ウィザードを使用して、作成されたWebアプリケーションプロジェクトにStrutsサポートを追加します。◆
Web
アプリケーションプロジェクトの作成
◆
[Struts
サポート
]
ウィザードの操作手順
1.
作成されたWebアプリケーションプロジェクトを選択して、[ファイル] > [新規] > [その他]から[Struts IDE] > [Struts] > [Strutsサポー トの追加]を選択すると、[ウィザードを選択]画面に移行します。2.
[次へ(N)>]をクリックすると、[Strutsサポートの追加]画面に移行します。-
Webアプリケーションのルート 右側の[参照]ボタンをクリックして、カレントのWebアプリケーションのコンテキストルートを設定することができます。生成された Strutsに関連する構成ファイルが当該コンテキストルートに保存されます。 Interstage Studioを使用して作成されたWebアプリケーションプロジェクトのデフォルトコンテキストルートが[ContextRoot]で す。-
servlet-mapping [servlet-mapping]入力ボックスにURLのマッピングモード(例*.do)を入力して、servlet-mappingを設定します。-
Strutsのライブラリを追加する [Strutsのライブラリを追加する]チェックボックスにチェックを入れると、Struts IDEはStrutsアプリケーションの必要なライブラリ を自動で追加します。追加されるStrutsライブラリを以下に示します。-
commons-beanutils-1.8.0.jar-
commons-collections-3.2.1.jar-
commons-digester-1.8.1.jar-
commons-fileupload-1.2.1.jar-
commons-logging-1.1.1.jar-
commons-validator-1.3.1.jar-
jakarta-oro-2.0.8.jar-
struts12.jar-
apfwlogging.jar-
カスタムタグのTLDファイルを追加する [カスタムタグのTLDファイルを追加する]チェックボックスにチェックを入れると、Struts IDEはWEB-INFディレクトリ配下にTLD ファイルを自動で追加します。追加される5つのTLDファイルを以下に示します。-
struts-bean.tld-
struts-html.tld-
struts-logic.tld-
struts-nested.tld-
struts-tiles.tld-
struts-config.xmlを生成する [struts-config.xmlを生成する]チェックボックスにチェックを入れると、Struts IDEはstruts-config.xmlファイルを自動で生成しま す。同ファイルはStrutsアプリケーションの中核となる構成ファイルであり、生成後にWebアプリケーションのルート/WEB-INF ディレクトリの配下に保存されます。Struts IDEが自動で生成するstruts-config.xmlファイルの内容を以下に示します。 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http:// struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources> </data-sources> <form-beans> </form-beans> <global-exceptions> </global-exceptions> <global-forwards> </global-forwards> <action-mappings> </action-mappings> <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/> <message-resources parameter="MessageResources"/> <plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/>
<set-property property="moduleAware" value="true"/>
</plug-in>
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/> </plug-in> </struts-config>
-
MessageResources.propertitesを生成する [MessageResources.propertitesを生成する]チェックボックスにチェックを入れると、Struts IDEはアプリケーションのリソースファ イルとしてのMessageResources.propertitesファイルを自動で生成します。MessageResources.propertitesファイルは、Webアプ リケーションプロジェクトのsrcディレクトリ配下に保存されます。-
web.xmlを生成する [web.xmlを生成する]チェックボックスにチェックを入れると、Struts IDEはweb.xmlファイルを生成します。生成されたファイル は、Webアプリケーションのルート/WEB-INFディレクトリ配下の既存web.xmlファイルを上書きします。生成されたweb.xmlファ イルには、Struts Servletのコンフィグ、Servletマッピングエレメントおよびアプリケーションに必要なタグライブラリの定義が追 加されます。Struts IDEが生成するweb.xmlファイルの内容を以下に示します。 <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE web-appPUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>2</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping>
<servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <taglib> <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-logic</taglib-uri> <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-nested</taglib-uri> <taglib-location>/WEB-INF/struts-nested.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-tiles</taglib-uri> <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/core</taglib-uri> <taglib-location>/WEB-INF/c.tld</taglib-location> </taglib> <taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri> <taglib-location>/WEB-INF/fmt.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/sql</taglib-uri> <taglib-location>/WEB-INF/sql.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/x</taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib-location> </taglib> --> </web-app>
3.
[次へ(N)>]をクリックすると、[プラグインの設定]画面に移行します。-
Validatorプラグインを使用する [Validatorプラグインを使用する]チェックボックスにチェックを入れると、以下のファイルを自動で追加します。-
validation.xml-
validator-rules.xml-
Tilesプラグインを使用する [Tilesプラグインを使用する]チェックボックスにチェックを入れると、以下のファイルを自動で追加します。-
tiles-defs.xml4.
[終了(F)]をクリックすると、カレントのWebアプリケーションプロジェクト配下にはStrutsエレメント付きのファイルが生成されます。 Strutsサポートを追加した後のプロジェクトディレクトリ構成を以下に示します。■
Struts Action
ファイルの作成
1.
作成されたWebアプリケーションプロジェクトを選択して、[ファイル] > [新規] > [その他]から[Struts IDE] > [Struts] > [Struts Action] を選択すると、[ウィザードを選択]画面に移行します。2.
[次へ(N)>]をクリックすると、Actionクラスの作成画面に移行します。 Actionクラスが所属するパッケージを選択して、[名前(M)]にActionクラスの名前を入力します。3.
[終了(F)]をクリックすると、Struts Actionクラスが生成されます。 作成されたActionクラスは“org.apache.struts.action.Action”を継承します。■
Struts ActionForm
ファイルの作成
Struts IDEを使用して、ActionFormクラスを自動生成する手順を以下に示します。1.
作成されたWebアプリケーションプロジェクトを選択して、[ファイル] > [新規] > [その他]から[Struts IDE] > [Struts] > [Struts2.
[次へ(N)>]をクリックすると、ActionFormクラスの作成画面に移行します。 ActionFormクラスの作成画面において、ActionFormクラスが所属するパッケージを選択して、[名前(M)]にActionFormクラスの 名前を入力します。3.
[終了(F)]をクリックすると、ActionFormクラスが生成されます。 作成されたActionFormクラスは“org.apache.struts.action.ActionForm”を継承します。■
Struts JSP
ファイルの作成
Struts IDEはStruts JSPファイルを生成する機能を提供します。手順を以下に示します。1.
作成されたWebアプリケーションプロジェクトを選択して、[ファイル] > [新規] > [その他]から[Struts IDE] > [Struts] > [Struts JSP ファイル]を選択すると、[ウィザードを選択]画面に移行します。2.
[次へ(N)>]をクリックすると、Struts JSPファイルの作成画面に移行します。 Struts JSPファイルの作成画面について、以下に説明します。-
コンテナ 右側の[参照]ボタンをクリックして、Struts JSPファイルの保存先を選択します(例えば、Webアプリケーションのルート配下に Struts JSPファイルの保存先としてのJSPディレクトリを新規作成します)を選択します。 カレントWebアプリケーションプロジェクトにおける既存のディレクトリのみ選択できます。-
ファイル名 Struts JSPファイルの名前を入力します。 入力するJSPファイル名の拡張子は必ず“.jsp”とします。-
テンプレート [default]が選択できます。3.
[終了(F)]をクリックすると、JSPファイルが生成されます。 生成されたJSPソースには、Strutsに関するタグライブラリがインポートされます。-
struts-bean-
struts-logic-
struts-html-
struts-nested■
struts-config
の編集
Struts IDEはstruts-config.xmlファイルにグラフィカルな編集の機能を提供します。この機能によりWebフローの設計を容易に行うことが できます。struts-config.xmlグラフィカルエディタの操作手順を以下に示します。1.
カレントのWebアプリケーションプロジェクトのWEB-INFディレクトリ配下のstruts-config.xmlをダブルクリックすると、struts-config.xml グラフィカルエディタが起動されます。2.
[フロー]タブにおいて、アクションやJSP画面、フォワードなどのStrutsエレメントを選択してからドラッグして、Strutsアプリケーションの Webフローをグラフィカルに設計します。 struts-config.xmlグラフィカルエディタについて、以下に説明します。・
[フロー]タブ-
[フロー]タブにおけるドラッグ可能なコントロールはAction、Page、Forward、Exception、Input、Direct ForwardおよびIncludeが あります。-
[フロー]タブで配置したアクションやJSPを右クリックして[開く]を選択すると、JSPやアクションクラスをエディタで開くことができま す。対象のファイルが存在しない場合は新規作成ウィザードが起動し、アクションやJSPファイルを生成することができます。-
[フロー]タブで右ボタンをクリックすると、[画像として保存]を選択して、現在の設計フロー画面を保存することができます。-
[フロー]タブで右ボタンをクリックすると、[印刷(P)]を選択して、現在の設計フローを印刷することができます。・
[プロパティ]ビュー グラフィカルエディタで設計されたStrutsエレメントは、[プロパティ]ビューにて変更できます。・
[アウトライン]ビュー-
グラフィカルエディタで設計されたStrutsエレメントの情報および各エレメント間の関係は、[アウトライン]ビューにて階層的に表 示できます。-
[アウトライン]ビューにおいては、Strutsエレメントが追加、削除できます。[アウトライン]ビューにおける操作結果は、[フロー]タブと [ソース]タブにおいても同時に反映できます。・
[ソース]タブ-
[ソース]タブにおいては、struts-config.xmlファイルのXMLソースが直接に編集できます。編集結果は、[フロー]タブと[アウトラ イン]ビューにおいても同時に反映できます。-
struts-config.xmlの内容にエラーがある場合、[問題]ビューにエラーの位置と内容が表示されます。また、[ソース]タブの該当 行にもマーカが表示されます。[問題]ビューでエラー内容をクリックすると、[ソース]タブの該当行にジャンプすることができま す。2.4.2 Spring Framework
と連携するアプリケーションの作成
“3.4.2 Strutsと連携するアプリケーションの作成”を参照してください。2.5 Struts
の運用・保守
2.5.1
起動・停止
Strutsは、IJServerワークユニット上で動作します。 IJServerワークユニットの起動・停止は、Interstage管理コンソール上で行います。IJServerワークユニットの起動・停止方法については、“Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド”を
参照してください。 Strutsの環境設定については、“2.2 Strutsの環境作成” を参照してください。
2.5.2
ログ
本製品のStrutsで提供するログ機能に標準ログがあります。標準ログは以下の2つから構成されます。・
システムログ Strutsランタイムの稼働状態や、エラー情報を表すログ。・
性能ログ Strutsランタイムが処理に要した時間を表すログ。 標準ログはStrutsランタイムの処理において、特定の処理の開始または、終了を契機に出力されます。 標準ログの詳細については“第7章 標準ログ”を参照してください。図
2.1
システムログの出力契機
図
2.2
性能ログの出力契機
2.6
注意事項
■
RequestProcessor
の拡張を行う場合
アプリケーションで使用するRequestProcessorを拡張したクラスに差し替える場合、同一Struts設定ファイル内では他のRequestProcessor を使用する事ができなくなります。 そのため、Tiles機能と拡張したRequestProcessorを同時に使用したい場合は、TilesRequestProcessorをベースに拡張を行うなどの工夫 が必要となります。■キャンセル処理のセキュリティホール
Struts-1.2.8までは、Formのキャンセルボタンが押下された場合、検証処理が実行されずにユーザの業務ロジックが呼び出されてしま うセキュリティホールが存在しました。 そのため、Struts 1.2.9ではStruts設定ファイルで明示的に許可しない限り、デフォルトではキャンセル処理を受け付けない仕様に変更 されました。(受け付けた場合はInvalidCancelExceptionがスローされる) ただし、キャンセル処理を許可した場合の動作は以前と何ら変化していないため、業務アプリケーション側でキャンセル処理を意識し た実装が必要となります。■
Struts
カスタムタグライブラリを使用した
JSP
の表示について
クライアントが使用するWebブラウザの種類によっては、画面構成が崩れるなどの意図しない動作となる場合があります。■
Struts
設定ファイルでのワイルドカード“*”の利用について
ワイルドカード機能において、後方一致検索は未サポートとなります。 Actionタグのunknown機能で代替できる場合は、そちらを使用して下さい。■
Struts
アプリケーション作成時の注意
Strutsアプリケーションではクラス名、メソッド名、ファイル名などにマルチバイト文字や記号を使用した場合、意図した動作をしない場 合があります。■
Struts
プラグイン検証機能の利用について
プラグイン検証機能を使用する場合は、<message-resources>タグも定義する必要があります。■
DynaActionForm
利用時の注意
DynaActionFormのプロパティとしてプリミティブ型を指定した場合、initial属性で初期値を設定しない場合例外が発生します。 DynaActionFormのプロパティとしてプリミティブ型を指定した場合、initial属性で初期値を設定してください。■
Struts
マニュアルの誤記について
Struts Users Guide[Tiles Tag Library]のdefinitionタグのscope属性の説明に誤りがあります。
誤:Specifies the variable scope into which the newly defined bean will be created. If not specified, the bean will be created in page scope.
正:Specifies the variable scope into which the newly defined bean will be created. If not specified, the bean will be created in request
scope.