• 検索結果がありません。

オープンJavaフレームワーク ユーザーズガイド

N/A
N/A
Protected

Academic year: 2021

シェア "オープンJavaフレームワーク ユーザーズガイド"

Copied!
187
0
0

読み込み中.... (全文を見る)

全文

(1)

B1X1-0015-02Z0(00)

2009

11

Windows/Solaris/Linux

Interstage Business Application Server

V9.2.0

(2)

まえがき

本書の目的

本書は、“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アプリケーションのサンプルの作成方法および、動作方法を説明します。

(3)

付録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

(4)

製品名称 略称

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と表記

します。

著作権

(5)
(6)

目 次

第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

(7)

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

(8)

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

(9)

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

(10)

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 Framework

DI(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ワークベンチは使用できません。

(11)

■データベース関連

アプリケーション開発に必要なデータベース関連のソフトウェアついては、“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から入手して

(12)

-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における機能

(13)

項番 パターン 説明 選択のポイント 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

(14)

1.1 Struts

iBATIS

を使用する構成

1.2 Struts

Spring Framework

、および

iBATIS

を使用する構成

(15)

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分散構成をとることができます。

(16)

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 画面をヘッダ、メニュー、コンテンツなどの部分に分割し、これらを組み合わせる事によって画面を構成する機能。各部分の再利 用性を高める事ができます。

(17)

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ワークユニットを作成します。

[システム] > [ワークユニット] > [新規作成]タブ

(18)

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.jar

2.2.3

アプリケーションの配備

作成したIJServerへ、Strutsアプリケーションを配備します。 ◆アプリケーションの配備操作 Interstage管理コンソールを使用して、IJServerワークユニットへStrutsアプリケーションファイルを配備します。

[システム] > [ワークユニット] > “ワークユニット名” > [配備]タブ

(19)

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\

(20)

/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,

(21)

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;

(22)

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>

(23)

<!-- (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カスタムタグライブラリを使用する場合に記述します。

(24)

(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

(25)

処理結果を表示するページのパスを定義します。

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ランタイムの活性化が行われるようになります。

(26)

本要素を省略した場合、アプリケーションが正常に動作しない場合があるため、必ず指定してください。 (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

アプリケーションプロジェクトの作成

(27)

[Struts

サポート

]

ウィザードの操作手順

1.

作成されたWebアプリケーションプロジェクトを選択して、[ファイル] > [新規] > [その他]から[Struts IDE] > [Struts] > [Strutsサポー トの追加]を選択すると、[ウィザードを選択]画面に移行します。

(28)

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

(29)

-

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>

(30)

<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-app

PUBLIC "-//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>

(31)

<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>

(32)

<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>

(33)

3.

[次へ(N)>]をクリックすると、[プラグインの設定]画面に移行します。

Validatorプラグインを使用する [Validatorプラグインを使用する]チェックボックスにチェックを入れると、以下のファイルを自動で追加します。

-

validation.xml

-

validator-rules.xml

Tilesプラグインを使用する [Tilesプラグインを使用する]チェックボックスにチェックを入れると、以下のファイルを自動で追加します。

-

tiles-defs.xml

(34)

4.

[終了(F)]をクリックすると、カレントのWebアプリケーションプロジェクト配下にはStrutsエレメント付きのファイルが生成されます。 Strutsサポートを追加した後のプロジェクトディレクトリ構成を以下に示します。

Struts Action

ファイルの作成

(35)

1.

作成されたWebアプリケーションプロジェクトを選択して、[ファイル] > [新規] > [その他]から[Struts IDE] > [Struts] > [Struts Action] を選択すると、[ウィザードを選択]画面に移行します。

(36)

2.

[次へ(N)>]をクリックすると、Actionクラスの作成画面に移行します。 Actionクラスが所属するパッケージを選択して、[名前(M)]にActionクラスの名前を入力します。

3.

[終了(F)]をクリックすると、Struts Actionクラスが生成されます。 作成されたActionクラスは“org.apache.struts.action.Action”を継承します。

Struts ActionForm

ファイルの作成

Struts IDEを使用して、ActionFormクラスを自動生成する手順を以下に示します。

(37)

1.

作成されたWebアプリケーションプロジェクトを選択して、[ファイル] > [新規] > [その他]から[Struts IDE] > [Struts] > [Struts

(38)

2.

[次へ(N)>]をクリックすると、ActionFormクラスの作成画面に移行します。 ActionFormクラスの作成画面において、ActionFormクラスが所属するパッケージを選択して、[名前(M)]にActionFormクラスの 名前を入力します。

3.

[終了(F)]をクリックすると、ActionFormクラスが生成されます。 作成されたActionFormクラスは“org.apache.struts.action.ActionForm”を継承します。

Struts JSP

ファイルの作成

Struts IDEはStruts JSPファイルを生成する機能を提供します。手順を以下に示します。

(39)

1.

作成されたWebアプリケーションプロジェクトを選択して、[ファイル] > [新規] > [その他]から[Struts IDE] > [Struts] > [Struts JSP ファイル]を選択すると、[ウィザードを選択]画面に移行します。

(40)

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

(41)

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エレメントは、[プロパティ]ビューにて変更できます。

(42)

[アウトライン]ビュー

グラフィカルエディタで設計された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章 標準ログ”を参照してください。

(43)

2.1

システムログの出力契機

2.2

性能ログの出力契機

2.6

注意事項

RequestProcessor

の拡張を行う場合

アプリケーションで使用するRequestProcessorを拡張したクラスに差し替える場合、同一Struts設定ファイル内では他のRequestProcessor を使用する事ができなくなります。 そのため、Tiles機能と拡張したRequestProcessorを同時に使用したい場合は、TilesRequestProcessorをベースに拡張を行うなどの工夫 が必要となります。

(44)

■キャンセル処理のセキュリティホール

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.

■標準ログについて

Strutsが出力する標準ログはActionServletがコントローラとして動作する場合に限定されます。 上記以外の場合は標準ログが出力されません。

2.7

チューニング

■ファイルアップロード機能利用時のパフォーマンスチューニングに関して

ファイルアップロード機能では、アップロードされたデータがStruts設定ファイルで指定したしきい値(256KB)を超える場合、そのデータ をメモリ上からディスク資源に退避させます。(以後、この退避したデータを一時ファイルと呼称します) 業務運用で想定されるファイルサイズに対して、一時ファイルが作成されるしきい値の設定が適切でない場合、以下の問題が発生す る可能性があります。 しきい値が小さ過ぎる場合 一時ファイルが頻繁に作成されるようになります。 アクセス速度の遅いディスク資源へのアクセスが発生するため、スループットが低下する恐れがあります。

参照

関連したドキュメント

Keywords: continuous time random walk, Brownian motion, collision time, skew Young tableaux, tandem queue.. AMS 2000 Subject Classification: Primary:

[7] , On initial boundary value problem with Dirichlet integral conditions for a hyperbolic equation with the Bessel operator, J.. Bouziani

n , 1) maps the space of all homogeneous elements of degree n of an arbitrary free associative algebra onto its subspace of homogeneous Lie elements of degree n. A second

This phenomenon can be fully described in terms of free probability involving the subordination function related to the free additive convolution of ν by a semicircular

Thus, we use the results both to prove existence and uniqueness of exponentially asymptotically stable periodic orbits and to determine a part of their basin of attraction.. Let

In this paper, this problem will be solved for the case N = 2, for tested convex sets of class C 4 and testing convex sets of class C 2 , as stated in Theorem 2.2 below. From now on,

This paper presents an investigation into the mechanics of this specific problem and develops an analytical approach that accounts for the effects of geometrical and material data on

Beyond proving existence, we can show that the solution given in Theorem 2.2 is of Laplace transform type, modulo an appropriate error, as shown in the next theorem..