oracle9ias containers for j2ee...

141
Oracle9iAS Containers for J2EE ユーザーズ・ガイド 2001 12

Upload: others

Post on 17-Jan-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

Oracle9iAS Containers for J2EE

ユーザーズ・ガイド

2001 年 12 月

Page 2: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

目次目次目次目次

はじめにはじめにはじめにはじめに ............................................................................................................................................................................ v

1 J2EE 概要概要概要概要

OC4J の主な機能の主な機能の主な機能の主な機能 .................................................................................................................................................... 1-2JDK で実行される Pure Java コンテナおよびランタイム実行のセット ............................................... 1-2

J2EE 1.2 準拠 .................................................................................................................................................... 1-2

J2EE API の概要およびの概要およびの概要およびの概要および OC4J のサポートのサポートのサポートのサポート ......................................................................................................... 1-4

Java サーブレット .......................................................................................................................................... 1-4JavaServer Pages ............................................................................................................................................. 1-6Enterprise JavaBeans ..................................................................................................................................... 1-8

Java Database Connectivity サービス ....................................................................................................... 1-12Java Naming and Directory Interface ........................................................................................................ 1-13Java Transaction API .................................................................................................................................. 1-13

Java Messaging Service ............................................................................................................................... 1-14

Java セキュリティ・サービス .................................................................................................................... 1-14

OC4J が提供しているトンネリングおよびパフォーマンス・サービスが提供しているトンネリングおよびパフォーマンス・サービスが提供しているトンネリングおよびパフォーマンス・サービスが提供しているトンネリングおよびパフォーマンス・サービス ...................................................... 1-15

RMI および HTTP トンネリング・サービス ........................................................................................... 1-16

ロード・バランシングおよびクラスタ化 ................................................................................................. 1-17

2 構成およびデプロイ構成およびデプロイ構成およびデプロイ構成およびデプロイ

OC4J のセットアップのセットアップのセットアップのセットアップ ............................................................................................................................................ 2-2要件 ................................................................................................................................................................... 2-2

JSP およびサーブレットのクイック・スタート ........................................................................................ 2-3

OC4J の SQLJ 用のセットアップ ................................................................................................................. 2-3

OC4J の起動および停止の起動および停止の起動および停止の起動および停止 ........................................................................................................................................ 2-4

i

Page 3: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J の起動 .................................................................................................................................................... 2-4

OC4J の管理 .................................................................................................................................................... 2-5

開発ディレクトリの作成開発ディレクトリの作成開発ディレクトリの作成開発ディレクトリの作成 ....................................................................................................................................... 2-7

アプリケーションのデプロイアプリケーションのデプロイアプリケーションのデプロイアプリケーションのデプロイ ............................................................................................................................... 2-8基本デプロイ ................................................................................................................................................... 2-8

Web アプリケーションのバインド .............................................................................................................. 2-9

デプロイの検証 ............................................................................................................................................. 2-10

Web アプリケーションのアンデプロイアプリケーションのアンデプロイアプリケーションのアンデプロイアプリケーションのアンデプロイ ........................................................................................................... 2-10

3 高度な構成、開発およびデプロイ高度な構成、開発およびデプロイ高度な構成、開発およびデプロイ高度な構成、開発およびデプロイ

OC4J およびおよびおよびおよび J2EE のののの XML ファイルの概要ファイルの概要ファイルの概要ファイルの概要 ...................................................................................................... 3-2XML 構成ファイルの概要 ............................................................................................................................. 3-2

XML 構成ファイルの手動での編集構成ファイルの手動での編集構成ファイルの手動での編集構成ファイルの手動での編集 ..................................................................................................................... 3-8Web リスニング・エンド・ポイントの構成 .............................................................................................. 3-8

J2EE 構成ファイルの手動での編集 ............................................................................................................. 3-8

OC4J のアプリケーションの自動デプロイのアプリケーションの自動デプロイのアプリケーションの自動デプロイのアプリケーションの自動デプロイ ........................................................................................................ 3-9ディレクトリ内での構築およびデプロイディレクトリ内での構築およびデプロイディレクトリ内での構築およびデプロイディレクトリ内での構築およびデプロイ ......................................................................................................... 3-10

4 データ・ソースデータ・ソースデータ・ソースデータ・ソース

概要概要概要概要 ........................................................................................................................................................................... 4-2接続の取得接続の取得接続の取得接続の取得 ............................................................................................................................................................... 4-2

データ・ソースの使用データ・ソースの使用データ・ソースの使用データ・ソースの使用 ........................................................................................................................................... 4-3構成ファイル ................................................................................................................................................... 4-3

移植可能な DataSource ルックアップ ........................................................................................................ 4-3

SQLJ の使用の使用の使用の使用 ............................................................................................................................................................ 4-4

5 OC4J のためのサーブレット入門のためのサーブレット入門のためのサーブレット入門のためのサーブレット入門

サーブレットとはサーブレットとはサーブレットとはサーブレットとは ................................................................................................................................................... 5-2Servlet コンテナ .............................................................................................................................................. 5-2

パフォーマンス ............................................................................................................................................... 5-2

2 つのサンプル・サーブレットつのサンプル・サーブレットつのサンプル・サーブレットつのサンプル・サーブレット ............................................................................................................................ 5-4Hello World ..................................................................................................................................................... 5-4

GetEmpInfo サーブレット ............................................................................................................................ 5-6

セッション・トラッキングセッション・トラッキングセッション・トラッキングセッション・トラッキング ................................................................................................................................. 5-12セッション・トラッキングの例 ................................................................................................................. 5-13

ii

Page 4: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

フィルタフィルタフィルタフィルタ ................................................................................................................................................................. 5-16ロギング・フィルタ ..................................................................................................................................... 5-16

サーブレットのデバッグサーブレットのデバッグサーブレットのデバッグサーブレットのデバッグ ..................................................................................................................................... 5-19

サーブレットの詳細サーブレットの詳細サーブレットの詳細サーブレットの詳細 ............................................................................................................................................. 5-20

6 OC4J のためののためののためののための JSP 入門入門入門入門

JavaServer Pages テクノロジの概要テクノロジの概要テクノロジの概要テクノロジの概要 ................................................................................................................... 6-2

JavaServer Pages テクノロジとは ................................................................................................................ 6-2

JSP の変換およびランタイム・フロー ........................................................................................................ 6-3

JSP の主な利点 ................................................................................................................................................ 6-4

アプリケーション・アーキテクチャ内における JSP ................................................................................ 6-5

単純な単純な単純な単純な JSP ページの実行ページの実行ページの実行ページの実行 ...................................................................................................................................... 6-6JSP の作成 —welcomeuser.jsp ..................................................................................................................... 6-6

OC4J ディレクトリ構造への welcomeuser.jsp の配置 ............................................................................. 6-6

welcomeuser.jsp の実行 ................................................................................................................................ 6-6

JavaBean を起動するを起動するを起動するを起動する JSP ページの実行ページの実行ページの実行ページの実行 ............................................................................................................ 6-8JSP の作成 —usebean.jsp .............................................................................................................................. 6-8

JavaBean の作成 —NameBean.java ............................................................................................................. 6-9

OC4J ディレクトリ構造への usebean.jsp および NameBean.class の配置 ......................................... 6-10

usebean.jsp の実行 ....................................................................................................................................... 6-10

カスタム・タグを使用するカスタム・タグを使用するカスタム・タグを使用するカスタム・タグを使用する JSP ページの実行ページの実行ページの実行ページの実行 ................................................................................................ 6-12JSP ページの作成 —sqltagquery.jsp .......................................................................................................... 6-13

OC4J ディレクトリ構造への sqltagquery.jsp の配置 ............................................................................. 6-13

タグ・ライブラリのサポートのためのファイルのセットアップ ......................................................... 6-14

sqltagquery.jsp の実行 ................................................................................................................................. 6-14

JSP ページをサポートするページをサポートするページをサポートするページをサポートする Oracle 追加機能の概要追加機能の概要追加機能の概要追加機能の概要 ....................................................................................... 6-16

7 OC4J のためののためののためののための EJB 入門入門入門入門

EJB の開発の開発の開発の開発 ............................................................................................................................................................... 7-2開発ディレクトリの作成 ............................................................................................................................... 7-2

Enterprise JavaBeans の実装 ........................................................................................................................ 7-3

デプロイメント・ディスクリプタの作成 ................................................................................................... 7-8

EJB アプリケーションのアーカイブ ........................................................................................................... 7-9

EJB アプリケーションのデプロイ準備アプリケーションのデプロイ準備アプリケーションのデプロイ準備アプリケーションのデプロイ準備 ............................................................................................................. 7-10

application.xml の修正 ................................................................................................................................ 7-10

iii

Page 5: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

EAR ファイルの作成 .................................................................................................................................... 7-11

エンタープライズ・アプリケーションのエンタープライズ・アプリケーションのエンタープライズ・アプリケーションのエンタープライズ・アプリケーションの OC4J へのデプロイへのデプロイへのデプロイへのデプロイ ..................................................................... 7-11admin.jar を使用した server.xml の修正 .................................................................................................. 7-11

手動による server.xml の更新 .................................................................................................................... 7-12

デプロイの検証 ............................................................................................................................................. 7-13

8 セキュリティセキュリティセキュリティセキュリティ

セキュリティ機能の概要セキュリティ機能の概要セキュリティ機能の概要セキュリティ機能の概要 ....................................................................................................................................... 8-2認証認証認証認証 ........................................................................................................................................................................... 8-3

ユーザーおよびグループの指定 ................................................................................................................... 8-3

HTTP クライアントの認証 ........................................................................................................................... 8-4

EJB クライアントの認証 ................................................................................................................................ 8-4

認可認可認可認可 ........................................................................................................................................................................... 8-5J2EE アプリケーションの論理ロールの指定 ............................................................................................. 8-5

論理ロールのユーザーおよびグループへのマッピング ........................................................................... 8-6

A 追加情報追加情報追加情報追加情報

XML ファイルの内容の説明ファイルの内容の説明ファイルの内容の説明ファイルの内容の説明 ................................................................................................................................. A-2

server.xml ファイルの要素ファイルの要素ファイルの要素ファイルの要素 ................................................................................................................................... A-8OC4J の構成 .................................................................................................................................................... A-8

他の構成ファイルの参照 ............................................................................................................................... A-8

OC4J コマンドライン・ツールのオプションコマンドライン・ツールのオプションコマンドライン・ツールのオプションコマンドライン・ツールのオプション ................................................................................................. A-12orion.jar コマンドライン・ツール ............................................................................................................ A-12

admin.jar コマンドライン・ツール .......................................................................................................... A-13

構成およびデプロイメントの例構成およびデプロイメントの例構成およびデプロイメントの例構成およびデプロイメントの例 ........................................................................................................................ A-15J2EE アプリケーションの XML 構成例 .................................................................................................... A-15

索引索引索引索引

iv

Page 6: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

はじめにはじめにはじめにはじめに

「はじめに」では、『Oracle9iAS Containers for J2EE ユーザーズ・ガイド』の概要、このマニュアルの対象読者、編成および表記規則について説明します。

対象読者対象読者対象読者対象読者このマニュアルは、Oracle9iAS Containers for J2EE(OC4J)の使用を検討している方すべてを対象としています。ただし、次の基本知識があることを前提としています。

� Java

� XML

� JDBC

このマニュアルの編成このマニュアルの編成このマニュアルの編成このマニュアルの編成『Oracle9iAS Containers for J2EE ユーザーズ・ガイド』には、8 つの章と 1 つの付録が含まれています。

第第第第 1 章「章「章「章「J2EE 概要」概要」概要」概要」

この章では、OC4J の主要な機能、J2EE API と OC4J のサポート、および OC4J が提供するトンネリングとパフォーマンス・サービスについて説明します。

第第第第 2 章「構成およびデプロイ」章「構成およびデプロイ」章「構成およびデプロイ」章「構成およびデプロイ」

この章では、OC4J のインストール手順、広く使用されている Sun 社の J2EE デモ Web アプリケーションである Pet Store の構成手順、および Web アプリケーションのデプロイ方法について説明します。

v

Page 7: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

第第第第 3 章「高度な構成、開発およびデプロイ」章「高度な構成、開発およびデプロイ」章「高度な構成、開発およびデプロイ」章「高度な構成、開発およびデプロイ」

この章では、J2EE XML ファイル、アプリケーション用の手動での XML 構成ファイルの編集、アプリケーション用の OC4J 自動デプロイ、およびディレクトリ内での構築とデプロイなど、OC4J に関する高度な情報について説明します。

第第第第 4 章「データ・ソース」章「データ・ソース」章「データ・ソース」章「データ・ソース」

この章では、データ・ソースの使用方法および JDBC ドライバの使用方法について説明します。 さらに、データ・ソースの Document Type Definition(DTD)についても説明します。

第第第第 5 章「章「章「章「OC4J のためのサーブレット入門」のためのサーブレット入門」のためのサーブレット入門」のためのサーブレット入門」

この章では、サーブレットの作成および使用方法について説明します。

第第第第 6 章「章「章「章「OC4J のためののためののためののための JSP 入門」入門」入門」入門」

この章では、JSP の作成および使用方法について説明します。

第第第第 7 章「章「章「章「OC4J のためののためののためののための EJB 入門」入門」入門」入門」

この章では、EJB の作成および使用方法について説明します。

第第第第 8 章「セキュリティ」章「セキュリティ」章「セキュリティ」章「セキュリティ」

この章では、セキュリティ機能の概要について説明します。 さらに、セキュリティ用の認可および認証の設定手順についても説明します。

第第第第 A 章「追加情報」章「追加情報」章「追加情報」章「追加情報」

この付録では、server.xmlファイルの要素および OC4J コマンドライン・ツール・オプションについて説明し、構成とデプロイの例を示します。

vi

Page 8: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

このマニュアルの表記規則このマニュアルの表記規則このマニュアルの表記規則このマニュアルの表記規則このマニュアルでは、「Windows」は、Windows 95、Windows 98 および Windows NT オペレーティング・システムを指します。

例においては、明記されている場合を除き、各行の 後で改行が行われています。 入力した各行の 後で、[Return] キーを押す必要があります。

また、このマニュアルでは、次の表記規則が使用されています。

表記規則表記規則表記規則表記規則 意味意味意味意味

. . .

例の中で使用されている縦方向の省略記号は、例に直接関係のない部分が省略されていることを示します。

. . . 構文またはコマンド中の横方向の省略記号は、その構文またはコマンド中で例に直接関係のない部分が省略されていることを示します。

太字のテキスト太字のテキスト太字のテキスト太字のテキスト 太字は、テキスト内、用語集またはその両方で定義されている用語を示します。

< > 山カッコ内には、ユーザー定義の名前が含まれます。

[ ] 大カッコ内には、1 つ以上のオプション句が含まれます。そのうちの 1つを選択するか、または何も選択する必要はありません。

vii

Page 9: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

viii

Page 10: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

J2EE

1

J2EE 概要概要概要概要

Oracle9iAS では、すべて Java で作成されている Java 2 Enterprise Edition(J2EE)の完全なセットを提供しており、これは標準 Java Deployment Kit(JDK)の Java Virtual Machine

(JVM)上で実行されます。 Oracle9i Application Server Containers for J2EE(OC4J)は、ご使用のオペレーティング・システムに存在する標準の JDK で実行可能です。Oracle9i JVMは必要ありません。 OC4J には独自の Web サーバーが含まれており、これは、Oracle HTTP Server(powered by Apache)のバックグラウンドで J2EE アプリケーションを処理するよう構成する必要があります。

この章には、次のトピックが含まれています。

� OC4J の主な機能

� J2EE API の概要および OC4J のサポート

J2EE の概要以外に、次の OC4J サービスについても説明しています。

� OC4J が提供しているトンネリングおよびパフォーマンス・サービス

概要 1-1

Page 11: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J の主な機能

OC4J の主な機能の主な機能の主な機能の主な機能OC4J の主な機能は、次のとおりです。

� JDK で実行される Pure Java コンテナおよびランタイム実行のセット

� J2EE 1.2 準拠

JDK で実行されるで実行されるで実行されるで実行される Pure Java コンテナおよびランタイム実行のセットコンテナおよびランタイム実行のセットコンテナおよびランタイム実行のセットコンテナおよびランタイム実行のセットJ2EE コンテナ・セットは、完全に Java で実装されており、次の機能があります。

1. 軽量 : コンテナ単体のディスク容量は約 20MB、そして起動時にはわずか、12.2MB のメモリーしか使用しません。

2. JDK Java Virtual Machine の利用 : OC4J は、JDK 1.2.2 および 1.3.x での動作が保証されています。各オペレーティング・システムおよびハードウェア・プラットフォーム用のJDK のこのリリースのパフォーマンス強化および機能を利用できます。

3. 使用方法が簡単 : 標準 JAVA 開発およびプロファイル・ツールをサポートしています。

4. Solaris、HP-UX、AIX、Tru64、Windows NT および Linux を含めたすべての標準的なオペレーティング・システムおよびハードウェア・プラットフォームで使用可能です。

J2EE 1.2 準拠準拠準拠準拠OC4J は J2EE 1.2 に準拠しています。これには、JSP Translator、Java サーブレット・エンジンおよび Enterprise JavaBeans(EJB)コンテナが含まれています。 また、図 1-1 に示すように、Java Message Service(JMS)およびその他いくつかの Java 仕様もサポートしています。

1-2 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 12: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J の主な機能

図図図図 1-1 OC4J のののの J2EE サポートサポートサポートサポート

.

表 1-1 に示すように、OC4J は標準の J2EE API をサポートしています。

表表表表 1-1 Oracle9iAS のののの J2EE サポートサポートサポートサポート

J2EE 標準インタフェース標準インタフェース標準インタフェース標準インタフェース サポートしているバージョンサポートしているバージョンサポートしているバージョンサポートしているバージョン

JavaServer Pages(JSP) 1.1

Servlet 2.2 および 2.3 の一部

Enterprise JavaBeans(EJB) 1.1 および 2.0 の一部

Java Transaction API(JTA) 1.0.1

Java Message Service(JMS) 1.0.1

Java Naming and Directory Interface(JNDI) 1.2

Java Mail 1.1.2

Java Database Connectivity(JDBC) 2.0

J2EE 概要 1-3

Page 13: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

J2EE API の概要および OC4J のサポート

J2EE API の概要およびの概要およびの概要およびの概要および OC4J のサポートのサポートのサポートのサポートOC4J は、標準の J2EE API をサポートしており、これに準拠しています。これについては表1-1 で示されており、次の各項で説明します。

� Java サーブレット

� JavaServer Pages

� Enterprise JavaBeans

� Java Database Connectivity サービス

� Java Naming and Directory Interface

� Java Transaction API

� Java Messaging Service

� Java セキュリティ・サービス

� Java Mail

� JavaBeans Activation Framework

Java サーブレットサーブレットサーブレットサーブレットJava サーブレットは、Web サーバーの機能を拡張するプログラムです。 サーブレットは、クライアントからリクエストを受信し、レスポンスを動的に生成し(場合によってはリクエストを処理するためにデータベースへの問合せを行い)、その後、HTML または XML 文書が含まれているレスポンスをクライアントに送信します。 サーブレットは、CGI と似ていますが、サーブレットは Java クラスおよびストリームを使用するため、CGI と比べて作成が非常に簡単です。 サーブレットは Java バイトコードにコンパイルされているため、サーブレットのほうが実行速度が高速です。 実行時には、サーブレット・インスタンスはメモリー内に格納され、各クライアント・リクエストにより新しいスレッドが生成されます。

サーブレットを使用すると、HTTP レスポンス・ストリームへデータを動的に生成することが簡単になります。 サーブレットの問題は、HTTP がステートレスなプロトコルである点です。 つまり、各リクエストが新しい接続として実行されるため、リクエスト間でフロー制御が自然に行われません。 セッション・トラッキングまたはセッション管理により、複数のリクエスト間でそれぞれのクライアントの状態が維持されます。

OC4J サーブレット・エンジンサーブレット・エンジンサーブレット・エンジンサーブレット・エンジンOC4J サーブレット・エンジンは、次のものをサポートしています。

Servlet 2.2 およびおよびおよびおよび 2.3 のサポートのサポートのサポートのサポート OC4J サーブレット・エンジンは、Servlet 2.2 仕様を完全にサポートし、また、J2EE 1.3 仕様の一部である Servlet 2.3 仕様もサポートしています。

1-4 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 14: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

J2EE API の概要および OC4J のサポート

アプリケーション・コードのアプリケーション・コードのアプリケーション・コードのアプリケーション・コードの Tomcat とのとのとのとの 100% の互換性の互換性の互換性の互換性 OC4J サーブレット・エンジンは、Apache コンソーシアムによる Tomcat サーブレット・エンジンとの間で、アプリケーション・コードが 100% 互換です。 アプリケーションの開発に Apache と Tomcat を使用した場合、OC4J サーブレット・エンジンに簡単にアプリケーションをデプロイできます。 application.xmlファイルの更新、および EAR ファイル内での Web Application Archive(WAR)ファイルのカプセル化など、いくつかの管理面での変更が必要です。 しかし、コードを変更する必要はありません。

フィルタの完全なサポートフィルタの完全なサポートフィルタの完全なサポートフィルタの完全なサポート OC4J では、Servlet 2.3 仕様の一部である、単純および複合的なフィルタをサポートしています。 フィルタとは、具体的には、フィルタがマッピングされているリソース(URL パターンまたはサーブレット名など)がクライアントからリクエストされた場合に起動されるコンポーネントです。 通常、フィルタは、Servlet コンテナによって起動され、元のリクエスト・ターゲットの実行前または後に、リクエスト、レスポンスまたはヘッダー値を操作します。 フィルタからクライアントにレスポンスは返されません。

フィルタには、次のようなものがあります。

� 1 つのリクエストに対して動作するよう構成された単純なフィルタ

� 複数のリクエストに対して動作する複合フィルタ

� 入力および出力引数を受信するパラメータ化されたフィルタ

� 複数のフィルタが順次起動されるようにチェーン化されたフィルタ・チェーン

� ロギング、監査、認証、暗号化、XSLT フィルタ・イメージ変換などを行うもの

機能機能機能機能 次に、OC4J サーブレット・エンジンで使用される機能について説明します。

� 完全な WAR ファイル・ベースのデプロイ : サーブレットは、Web Application Archive(WAR)ファイルという標準フォーマットを使用して、J2EE コンテナにパッケージ化およびデプロイされます。 OC4J は、次のものを提供しています。

1. 複数のサーブレット(および JSP)を WAR ファイルにパッケージする WAR ファイル・パッケージング・ツール。

2. 作成された WAR ファイルを 1 つ以上の OC4J インスタンスにデプロイする WARファイル・デプロイ・ツール。 WAR デプロイ・ツールはクラスタ・デプロイをサポートしており、これにより、クラスタとして定義された OC4J インスタンスすべてにアーカイブを同時にデプロイできます。

� サーブレットの自動コンパイルおよびオート・デプロイ : OC4J では、サーブレットの自動コンパイル、およびサーバーが WAR アーカイブを受信する場所へのオート・デプロイを提供しています。 OC4J は、自動的に WAR アーカイブを解凍し、アプリケーションをインストールします。 これにより、J2EE アプリケーション構築の開発、コンパイルおよびデプロイ・サイクルが短縮されます。

� サーブレットのステートフルなフェイルオーバーおよびクラスタ・デプロイ : クラスタは、OC4J サーバーのグループで、スケーラブルで高可用性のサービスを透過的に提供できるよう、処理が調整されます。 サーブレットは、HTTP セッション・

J2EE 概要 1-5

Page 15: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

J2EE API の概要および OC4J のサポート

オブジェクトを利用して、メソッド・リクエスト間で、Web ショッピング・カートの中身、または旅行の日程表などの状態を保存します。 OC4J は、IP マルチキャスト・ベースのクラスタ化メカニズムをサポートしており、これにより、サーブレットは、透過的に(つまり、プログラムによる API の変更なしに)サーブレットのセッションの状態、特に HTTP セッション・オブジェクトを、他の OC4J インスタンスにレプリケートできます。

OC4J におけるサーブレットの使用および構成の詳細は、『Oracle9iAS Containers for J2EE Servlet 開発者ガイドおよびリファレンス』を参照してください。

JavaServer PagesJavaServer Pages(JSP)は、テキスト・ベースでプレゼンテーション中心のサーブレットの開発手段です。 JSP を使用すると、Web 開発者および設計者は、既存のビジネス・システムを利用して、情報が豊富で動的な Web ページをすばやく開発し、簡単に維持することが可能です。 JSP では、プレゼンテーション部分とコンテンツの生成の明確な区別およびアセンブリが可能です。 これにより、Web 設計者は、基礎になっている動的コンテンツを変更せずに、全体的なページ・レイアウトを変更可能です。 JSP では、Java プログラミング言語で作成された XML に似たタグとスクリプトレットを使用して、ページのコンテンツを生成するロジックをカプセル化します。 さらに、アプリケーション・ロジックは、これらのタグやスクリプトレットを使用してページからアクセスする JavaBeans などのサーバー・ベースのリソースに含めることが可能です。 すべての書式(HTML または XML)タグは、レスポンス・ページに直接渡されます。 ページのロジックを設計と表示から分離し、再利用可能なコンポーネント・ベースの設計をサポートしているため、JSP テクノロジは、Web ベースのアプリケーションの作成をより速く、簡単にします。 JSP ページは、標準の HTML または XMLページに似ており、これに、JSP エンジンが処理し、除去する要素が追加されています。 通常、JSP は、XML、HTML および WML などの動的コンテンツを生成します。

Common Gateway Interface(CGI)より、JSP ページおよびサーブレットの使用をお薦めします。 CGI は、プラットフォームに依存し、オーバーヘッドが多くなり、パラメータ・データへのアクセスおよびプログラムへの受渡しを容易に行う手段がありません。 アプリケーション開発者が JSP を使用する方法はいくつかあります。

1. JSP ページを JavaBean クラスとともに使用することにより、同様のルック・アンド・フィールを持つページで構成された Web サイトを構築するためのテンプレートを定義できます。 JavaBean クラスがデータをレンダリングするため、テンプレートで Javaコードを使用する必要がありません。 また、テンプレートは、HTML エディタで編集可能です。

2. JSP ページを使用する単純な Web ベースのアプリケーションの場合、JavaBean クラスのかわりにカスタム・タグまたはスクリプトレットを使用して、コンテンツをアプリケーション・ロジックにバインドできます。

JSP ページは次の要素で構成されます。

� JSP ディレクティブ : JSP ディレクティブは、情報を JSP エンジンに渡します。 JSP ディレクティブには、いくつかの種類があり、次のものが含まれます。

1-6 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 16: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

J2EE API の概要および OC4J のサポート

– Page Directives: バッファおよびスレッド情報、またはエラー処理など、ページ固有の情報を通信します。

– Language Directives: スクリプト言語およびその拡張子を指定します。

– Include Directives: ページに外部ドキュメントをインクルードする場合に使用します。

– Taglib Directives: ページから起動可能なカスタム・タグのライブラリを示します。

� JSP アクションまたはタグ : JSP 固有の XML ベース・タグにより、JSP 処理を実装します。 タグは、JSP ページから使用可能な機能をカプセル化するために使用します。 たとえば、条件付きロジック、データベース・アクセスおよび反復処理などがあります。 JSP 1.0 には、コア・タグと呼ばれる標準タグがいくつか含まれています。 JSP 1.1 では、標準タグが追加されています。 タグは、使いやすく、アプリケーション間での共有が簡単です。

� スクリプトレット : JSP ページには、ページ内にスクリプトレットと呼ばれる小さなスクリプトをインクルードすることが可能です。 スクリプトレットは、リクエストの処理時に実行されるコードの一部分です。 スクリプトレットをページの静的要素と組み合せることにより、動的に生成されるページを作成可能です。 スクリプトは、"<%" および"%>" マーカー内に記述されます。 これらのマーカーに囲まれている部分は、すべてスクリプト言語エンジンによって評価されます。 JSP 仕様では、式および宣言を含めた一般的なスクリプト要素をすべてサポートしています。

OC4J は、JSP 1.1 準拠のトランスレータおよびランタイム・エンジンを備えています。 また、OC4J に対し、Oracle JSP Translator(OJSP)も使用可能です。 これには、いくつか重要な機能があります。

� JSP 1.1 の完全なサポート : OC4J JSP Translator およびランタイムは、JSP 1.1 を完全にサポートしています。これには、すべての JSP ディレクティブおよびすべてのコアおよび標準 JSP タグのサポートが含まれます。

� 単純、ボディ、パラメータ化および協調動作タグ : OC4J では、次のタグをサポートしています。

– 単純な JSP タグ : タグのボディが 1 回のみ評価される場合。

– ボディ・タグ : タグのボディが複数回評価される可能性がある場合(イテレータ・ループの場合など)。

– パラメータ化タグ : タグがパラメータを受け入れ、表示可能な場合。

– 協調動作タグ : 特殊なパラメータ化タグで、2 つのタグによってタスクを協調動作で処理する場合。 たとえば、1 つのタグでページの有効範囲に特定の値を追加し、別のタグでこの値を検索してさらに処理を行うことが可能です。

� JSP キャッシング・タグ : JSP は動的 Web ページの生成テクノロジであるため、キャッシュを使用して、JSP で作成された Web サイトのパフォーマンスおよび拡張性を改善できます。 Oracle JSP Translator では、標準構文を提供しており、これによって JSP 開発者は、特定の JSP タグがキャッシュ可能かどうかを指定できます。キャッシュには、共

J2EE 概要 1-7

Page 17: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

J2EE API の概要および OC4J のサポート

有 Java キャッシュ(たとえば、追加の XSL-T 変換の適用が必要な場合など)、またはWeb キャッシュ(クライアントからのアクセス用に 終的な生成ページがキャッシュされる場合)のいずれかを使用できます。 標準の JSP タグ構文を使用してタグ・レベルで特定の JSP タグがキャッシュ可能かどうかを指定することにより、OC4J では、アプリケーション開発者によるキャッシュの使用方法を単純化し、Web ページ内でキャッシュ可能なコンポーネントをファイングレインで改善できます(ページ全体自体はキャッシュ可能でない場合)。 キャッシュした JSP ページは、標準のスクリプト拡張子を使用することにより、Oracle9iAS Web Cache だけでなく、Akamai などの Internet Content Delivery Networks からも処理可能です。

� メール、検索およびその他のタグ : OC4J では、電子メールの送受信、ファイルへのアクセス(Oracle Internet File System 内のものを含む)、JSP ページへの XML 結果セットの埋込み、および Web 検索と問合せの実行用に、追加の JSP タグ・ライブラリを提供しています。

� 完全な WAR ファイル・ベースのデプロイ : OC4J では、次の作業を実行するためのツールも提供しています。

– JSP ページおよびサーブレットの J2EE 標準 WAR ファイルへのパッケージ。

– 開発ツールを使用した、1 つ以上の OC4J インスタンスへの WAR ファイルのデプロイ。 WAR デプロイ・ツールはクラスタ・デプロイもサポートしており、これにより、クラスタとして定義された OC4J インスタンスすべてに特定のアーカイブを同時にデプロイできます。

– JSP における SQLJ の使用のサポート。 SQLJ は、JDBC API に比べ、SQL コードをJava に埋め込むためのより単純で生産的な手段を提供します。

Enterprise JavaBeans Enterprise JavaBeans(EJB)は、ビジネス・ロジックを実装する Java コンポーネントです。 コンテナによって EJB のシステム・サービスを介在させることにより、開発者は、データベース・アクセス、トランザクションのサポート、セキュリティ、キャッシングおよび並行性などの実装を考慮する必要がなくなります。 EJB 仕様では、この機能は、EJB コンテナが行うことになっています。

Enterprise Bean は、インタフェースおよびクラスで構成されます。 クライアントは、Beanのホーム・インタフェースおよびリモート・インタフェースを通じて Enterprise Bean メソッドにアクセスします。 ホーム・インタフェースは、Enterprise Bean の作成、削除およびロケーティング用のメソッドを提供し、リモート・インタフェースは、ビジネス・メソッドを提供します。 コンテナは、デプロイ時にこれらのインタフェースからクラスを作成し、これを使用して、Enterprise Bean のビジネス・メソッドを作成、削除、ロケーティングおよびコールするクライアントへのアクセスを提供します。

Enterprise Bean には、Session Bean および Entity Bean の 2 種類があります。

1-8 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 18: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

J2EE API の概要および OC4J のサポート

Session BeanSession Bean は、クライアントとの一時的な対話処理を行い、データベースの読取りおよび書込みを実行する場合もあります。 Session Bean が JDBC コールを起動する場合がありますが、Entity Bean を使用してコールを行う場合もあります。 この場合、Session Bean は Entity Bean のクライアントとなります。 Session Bean のフィールドには、対話処理の状態が含まれますが、これは一時的なものです。 サーバーまたはクライアントがクラッシュすると、Session Bean は失われます。 Session Bean は、ステートフルまたはステートレスのいずれかです。

� ステートレス Session Bean: ステートレス Session Bean は、特定のクライアントに対する状態情報を保有しません。 通常は、特定の状態を維持しないサーバー・サイドの動作を提供します。 ステートレス Session Bean は、より少ないシステム・リソースを必要とします。 一般的なサービスを提供したり、格納されたデータの共有ビューを表示するビジネス・オブジェクトは、ステートレス Session Bean に向いています。

� ステートフル Session Bean: ステートフル Session Bean には、クライアントのカンバセーショナル・ステートが含まれます。 したがって、各クライアントに対して 1 つずつステートフル Session Bean が存在します。 カンバセーショナル・ステートは、Session Bean のインスタンス・フィールドの値で、さらに、Session Bean のフィールドから取得可能なオブジェクトすべてが含まれます。 ステートフル Session Bean は、永続データ・ストア内のデータは扱いませんが、クライアントにかわってデータのアクセスおよび更新を行うことは可能です。

Entity BeanEntity Bean は、データベース内のデータおよびそのデータに対して実行するメソッドを処理するビジネス・エンティティです。 Entity Bean は、トランザクション型で、長期間存在します。つまり、データがデータベース内に存続しつづけるかぎり、Entity Bean も存続しつづけます。 Entity Bean は、コンテナ管理の永続性(Container-Managed Persistence)およびBean 管理の永続性(Bean-Managed Persistence)の両方をサポート可能です。

� コンテナ管理の永続性(CMP): CMP の場合、アプリケーション開発者は、Entity Beanを永続データベース・ストアにプログラムによってマッピングする必要がありません。EJB コンテナが、透過的に永続ストアとの相互作用をマッピングおよび管理するためです。 そのため、CMP を使用する Entity Bean では、開発者がデータベース・アクセス用に JDBC 2.0 API を使用する必要がありません。 したがって、CMP はより単純で簡単に使用できます。ただし、アプリケーション・サーバーとデータベース間の相互作用に対するアプリケーション開発者の制御が制限されます。 これにより、多少のパフォーマンス・オーバーヘッドが発生する可能性があります。

� Bean 管理の永続性(BMP): これに対し、BMP は、Enterprise Bean で永続ストアに状態を格納し、状態を読み込む方法を、開発者が制御する場合に使用します。 アプリケーション開発者がライフ・サイクル・メソッドを実装するため、BMP は CMP よりも複雑です。 JDBC 2.0 API コードを使用して、データのロードと格納の処理、さらに実行時および永続データベース記憶域間の一貫性の維持を行います。 BMP は、EJB、および EJBが非リレーショナル・データベースにバックアップされるタイミングを制御する場合に

J2EE 概要 1-9

Page 19: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

J2EE API の概要および OC4J のサポート

お薦めします。 さらに、BMP Bean はデプロイメント・ディスクリプタで O-R マッピングが不要なため、デプロイがより簡単にできます。

Message-Driven BeanOC4J では、Servlet 2.0 仕様の一部である Message-Driven Bean(MDB)をサポートしています。 MDB は、非同期式に起動される長時間実行プロセスをモデル化しています。 ステートレス Session Bean と似ていますが、クライアントによって直接起動されるのではなく、クライアントから JMS キューまたはトピックにメッセージが転送されます。 その後、EJB コンテナが、メッセージ処理を MDB インスタンスに委譲します。

OC4J のののの EJB サポートサポートサポートサポートOC4J の JDK ベースの EJB コンテナが提供するのは次のとおりです。

� EJB 1.1 の完全なサポートおよび EJB 2.0 の主要な部分のサポート : OC4J EJB コンテナでは、EJB 1.1 仕様を完全にサポートしています。 これには、Session Bean と Entity Beanの完全なサポート、および Bean 管理の永続性(BMP)とコンテナ管理の永続性

(CMP)の完全なサポートが含まれます。 さらに、OC4J では、EJB 2.0 仕様の一部(近く発表される J2EE 1.3 仕様の一部)、たとえば標準 O-R マッピングおよびMessage-Driven Bean も提供しています。

� コンテナ管理の永続性(CMP)および Bean 管理の永続性(BMP)の完全な実装 : OC4Jでは、Entity Bean の完全な CMP および BMP を提供しています。これには、独自のオブジェクト・リレーショナル・マッピング(O-R)および EJB 2.0 仕様で定義されている O-R マッピングの両方のサポートが含まれます。 OC4J では、1 対 1、1 対多、多対多のオブジェクト・リレーショナル・マッピングをサポートしています。Oracle9iAS には、次の機能が含まれています。

� 単純な O-R マッピング : Entity Bean のフィールドを対応するデータベース表に自動的にマッピングする機能が提供されます。 さらに、ユーザーが EJB 間でオブジェクト・リレーショナル・マッピングを指定可能です。

� 複合 O-R マッピング : 一般的な問題として、単純なフィールドを持つ単純な Bean の場合以外は、マッピング用のカスタム・コードを作成しないとデータベース表へのマッピングが難しいという点があります。 OC4J には O-R マッピング・システムが含まれており、複合オブジェクト・モデルをデータベース表にマッピング可能です。 これにより、実用的なオブジェクト・モデルによる CMP の使用が可能になります。 特に、次のタイプのフィールドを Entity Bean 内でマッピングできます。

� 単純なオブジェクトおよびプリミティブ(INT または CHAR)

� オブジェクト(複合オブジェクト)

� シリアライズ可能なオブジェクト(シリアライズおよび BLOB と CLOB への格納が可能な複合オブジェクト)

� エンティティ参照(別の Entity Bean への参照)

� コレクション

1-10 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 20: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

J2EE API の概要および OC4J のサポート

さらに、自動的にコード生成される SQL を取得する分離レイヤーを提供しているため、CMP 機能によって Oracle データベースおよび Oracle 以外のデータベースをターゲットとすることが可能です。

� 動的 EJB スタブ生成 : アプリケーション開発者は、ejbc、rmicやその他の機能を使用して、EJB スタブをクライアント・アプリケーションにプリコンパイルする必要がありません。 かわりに、OC4J の EJB コンテナにより、必要に応じて EJB スタブが生成されます。 これにより、アプリケーションおよびシステム・メンテナンスが、他社の製品に比べて非常に簡単になります。

� 完全な EAR ファイル・ベースのデプロイ : OC4J では、次のことを実行するためのツールを提供しています。

1. WAR ファイルおよび EJB の、EAR ファイルへのパッケージ化。

2. 開発ツールを使用した、1 つ以上の OC4J インスタンスへの EAR ファイルのデプロイ。 このツールは、クラスタ・デプロイをサポートしています。

� EJB アプリケーションのデプロイの簡易化および自動化 : J2EE アプリケーションには、デプロイメント・ディスクリプタ(モジュール構成ファイル)が 2 種類存在します。すべてのアプリケーション・サーバーがサポートしている一般的な J2EE デプロイ・ファイル、およびベンダー固有のファイルです。

OC4J では、アプリケーション・サーバー固有のデプロイ情報を、次のようにサポートしています。

� オート・デプロイ : EAR ファイルがサーバーにデプロイされると、Oracle 固有のデプロイ情報が自動的に生成されます。

� 構成のカスタマイズの簡易化 : すべての Oracle 固有の構成情報は、一連の XML 構成ファイルを手動で編集することにより、カスタマイズ可能です。XML 構成ファイルは、アプリケーション・サーバー固有のデプロイおよび構成情報を取得します。 このファイルには、CMP の表の自動作成および自動削除、セキュリティ・ロールのマッピング、JNDI ネームスペースへのアクセス、セッションの永続性およびタイムアウトの設定、トランザクションの再試行の設定、CMP および O-R マッピング、バッファリング、キャラクタ・セット、ロケール、仮想ディレクトリ、クラスタ構成、セッション・トラッキング、および開発とデバッグ・モードの設定が含まれています。

� ホット・デプロイ : アプリケーション開発者が、すでにデプロイ済の EJB モジュールを変更する場合、開発者は EJB を再デプロイしたりサーバーを再起動する必要がありません。 ユーザーは、server.xml構成ファイルを編集します。 その後、サーバーはファイルを読み込み、自動的に変更を取り出します。

OC4J における EJB の使用および構成の詳細は、『Oracle9iAS Containers for J2EE Enterprise JavaBeans 開発者ガイドおよびリファレンス』を参照してください。

J2EE 概要 1-11

Page 21: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

J2EE API の概要および OC4J のサポート

Java Database Connectivity サービスサービスサービスサービスJDBC は、本質的には、リレーショナル・データベースへの移植可能なブリッジです。 ODBC

(Open Database Connectivity)仕様をモデルとしており、比較的単純で、広く普及しています。 ドライバを使用することにより、データベースをプログラム・コードから分離します。 Oracle9iAS では、Oracle8、Oracle8i および Oracle9i データベースへのアクセス用に、拡張JDBC ドライバを提供しています。 オラクル社では、Oracle 以外のデータベースへのアクセス用に、Merant JDBC の動作を保証していますが、同梱はしていません。これらのデータベースには、DB/2 UDB、Microsoft SQL Server、Informix および Sybase データベースがあります。

JDBC 経由での経由での経由での経由での Oracle データベースへのアクセスデータベースへのアクセスデータベースへのアクセスデータベースへのアクセスOracle9i Application Server では、Java から Oracle データベースにアクセスするために、2種類の JDBC ドライバを提供しています。 JDBC ドライバは、次の 2 種類です。

� Oracle JDBC-OCI ドライバ : JDBC-OCI は、Type 2 の Oracle JDBC Driver で、Oracle OCIライブラリを使用して Oracle データベースと通信します。 これは、Oracle9i Application Server の中間層で稼動している J2EE アプリケーションから Oracle データベースに通信するためにデフォルトで使用される JDBC ドライバです。 中間層に Oracle クライアント・ライブラリをインストールする必要があります。

� Oracle Thin JDBC ドライバ : Oracle Thin JDBC ドライバは、2 MB の Pure Java(Type 4)JDBC ドライバで、完全に Java で実装されており、同様に Java で実装されているOracle Net Services プロトコルを使用して Oracle データベースと通信します。 Thin JDBC ドライバは、開発およびテスト中に使用可能です。 Pure Java コール・スタックは、エンド・トゥ・エンド・デバッグを容易にします。 ドライバは、Oracle データベースと直接通信している Java アプレットとともにダウンロード可能です。 Oracle JDBC-OCI Driver と 100 パーセント互換性があり、必要な変更点は、Oracle データベースへの接続に使用される接続文字列の定義のみです。

JDBC 2.0 の完全なサポートの完全なサポートの完全なサポートの完全なサポートJDBC ドライバは、JDBC 2.0 に完全に準拠しており、次のものを提供しています。

� データ型の完全なサポート : BLOB、CLOB、文字ストリーム、抽象データ型およびコレクションなどの拡張データ型をサポートしており、Oracle9i Database リリース 1 では、継承を使用する抽象データ型もサポートしています。

� JDBC 2.0 Connection Pooling: JDBC 2.0 Connection Pooling 機能を完全にサポートしています。

� 拡張機能 : 透過的アプリケーション・フェイルオーバー(Oracle データベースで障害が発生した場合に、中間層によるフェイルオーバー・ノードへの接続のリダイレクトを可能にする)のサポート、スクロール可能な結果セット、バッチ更新、Unicode サポート、およびその他いくつかの高度な機能を提供しています。

1-12 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 22: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

J2EE API の概要および OC4J のサポート

� サポートしている Oracle のバージョン : OC4J JDBC Drivers は、Oracle8.0、Oracle8i および Oracle9i リリース 1 データベースでの動作が保証されています。

Merant JDBC ドライバドライバドライバドライバOracle9iAS Containers for J2EE から Oracle 以外のデータベースにアクセスするために、オラクル社では、オラクル社のパートナである Merant 社による Type 4 JDBC Drivers の動作を保証しています。 Merant 社により、Informix、Sybase、Microsoft SQL-Server および IBM DB/2 Databases への Oracle9iAS からのアクセス用の JDBC ドライバが提供されています。

SQLJ のサポートのサポートのサポートのサポートOC4J では、SQL 文を Java コードに直接埋め込むための SQLJ 言語もサポートしています。 これは、Java からデータベースにアクセスするための手段として、JDBC を使用する場合よりも単純で生産性の高い方法です。 2-3 ページの「OC4J の SQLJ 用のセットアップ」を参照してください。

Java Naming and Directory InterfaceJava Naming and Directory Interface(JNDI)は、ネーミングおよびディレクトリ・サービスの標準インタフェースです。 J2EE アプリケーションは、JNDI を使用して、他の分散オブジェクトを検索します。 JNDI インタフェースは、2 つの部分で構成されます。ネーミングおよびディレクトリ・サービスにアクセスするためにアプリケーション・プログラムによって使用されるアプリケーション・レベルのインタフェースと、ネーミングおよびディレクトリ・サービスのプロバイダを連結するためのサービス・プロバイダ・インタフェースです。

OC4J では、完全な JNDI 1.2 実装を提供しています。 OC4J のサーブレットおよび Enterprise JavaBeans は、標準の JNDI プログラミング・インタフェースを使用して、名前にアクセスします。 OC4J での JNDI サービス・プロバイダは、XML ベースのファイル・システムで実装されています。

Java Transaction API J2EE トランザクション・モデルにより、アプリケーション開発者は、デプロイ時に、1 つのトランザクションを構成するメソッド間の関係を指定できます。 1 つのトランザクション内のメソッドは、すべて、1 つの単位として扱われます。 トランザクションは、すべてを完了するか、そうでない場合はバック・アウトする必要のある一連のステップです。 たとえば、1つの口座から別の口座へ資金を移動する Enterprise Bean に、一連のメソッドが存在するとします。これには、1 つの口座から資金を引き落し、もう 1 つの口座に入金する処理が含まれます。 この操作全体が 1 つの単位として扱われ、資金の引落し後、入金前に障害が発生した場合、引落しはロールバックされる必要があります。

トランザクションの属性は、アセンブリ時にアプリケーション・コンポーネントに対して指定されます。 これにより、アプリケーション・コンポーネント間に渡ってメソッドがトランザクションにグループ化されます。 J2EE アプリケーション内のアプリケーション・コンポー

J2EE 概要 1-13

Page 23: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

J2EE API の概要および OC4J のサポート

ネントは、コードの変更および再コンパイルを行わずに簡単に変更し、トランザクション属性を再割当てすることが可能です。

Java Transaction API(JTA)および Java Transaction Service(JTS)仕様により、EJB およびJDBC 2.0 における J2EE のトランザクションのサポートの基礎が形成されています。 JTS は、トランザクション管理用の低レベルの API で、Java を Object Management Group(OMG)の Object Transaction Service(OTS)にマッピングします。 OC4J は、JTA 1.0.1 仕様の完全な実装を提供しており、次の 2 つの部分で構成されます。

� トランザクションの境界(デマーケーション)を可能にするトランザクション・インタフェース。 これにより、分散コンポーネントが実行した作業がグローバル・トランザクションによってバインドされます。 これは、操作のグループを 1 つのグローバル・トランザクションにデマーケーションする方法の 1 つです。

� XA リソース・インタフェースは、X/Open/ XA インタフェースをベースとしており、分散トランザクション処理を可能にします。 これらのインタフェースは、データベースまたはキューなど、複数のリソースに渡るトランザクションの調整を必要とします。

J2EE では、JTA を使用した明示的なトランザクションのプログラミングを考慮する必要がありません。これは、コンテナによって処理される JDBC および EJB の API によって行われ、アプリケーション・デプロイメント・ディスクリプタによって構成されるためです。 アプリケーション開発者は、実装ではなく、トランザクションの設計に専念できます。

Java Messaging ServiceJava Message Service(JMS)は、Java プログラム間のメッセージ交換をサポートするためのJ2EE のメカニズムです。 Java では、このようにして非同期通信、つまり送信者と受信者が互いを認識する必要のない通信をサポートします。 これによって、送信者と受信者は独立して稼動することが可能です。 JMS は、次の 2 つのメッセージ・モデルをサポートしています。

� Point-to-Point: メッセージのプロデューサがキューにメッセージを送信します。 メッセージ・コンシューマは、自らをキューに連結し、メッセージをリスニングできます。 メッセージがキューに到着すると、コンシューマはメッセージをキューから取り出し、それに対してレスポンスを返します。 メッセージは、1 つのキューにのみ送信可能で、1つのコンシューマによってのみ処理されます。 コンシューマは、受信するメッセージを指定するために、オプションでメッセージをフィルタできます。

� パブリッシュ・サブスクライブ : プロデューサは、メッセージをトピックに送信し、そのトピックに登録されているすべてのコンシューマがそれらのメッセージを取得します。 この場合、複数のコンシューマが同じメッセージを受信可能です。

Java セキュリティ・サービスセキュリティ・サービスセキュリティ・サービスセキュリティ・サービスセキュリティおよびトランザクション管理など、アプリケーションの動作を、Web およびEnterprise Bean コンポーネントでデプロイ時に構成可能です。 この機能は、アセンブリによって異なる可能性のある構成設定からアプリケーション・ロジックを分離します。 J2EE セキュリティ・モデルにより、許可されたユーザーのみシステム・リソースにアクセスできる

1-14 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 24: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J が提供しているトンネリングおよびパフォーマンス・サービス

よう、Web または Enterprise Bean コンポーネントを構成できます。 たとえば、ユーザー名およびパスワードの入力プロンプトを表示するよう、Web コンポーネントを構成可能です。 特定のグループ内のユーザーのみ特定のメソッドを起動可能なように、EJB コンポーネントを構成できます。 または、サーブレット・コンポーネントの一部のメソッドを全ユーザーからアクセス可能にし、一部のメソッドを組織内の権限を付与されたユーザーのみアクセス可能なように構成できます。 そして、同じサーブレット・コンポーネントを、環境によって、全メソッドを全ユーザーからアクセス可能にしたり、全メソッドを一部のユーザーからのみアクセス可能に構成することも可能です。

OC4J には、強力な Access Control List(ACL)メカニズムが用意されており、これによってサーバーで稼動するコンポーネントの使用状況のファイングレイン制御が可能です。 どのユーザーまたはユーザー・グループによって何が実行可能で何が実行不可かを、Java メソッド・レベルまで定義できます。 この ACL メカニズムは、OC4J で稼動するものは、EJB 以外はすべて対象としています。 EJB には、EJB 仕様で定義されている独自のアクセス制御メカニズムがあります。

セキュリティ・レルムにより、管理者は、既存の認可または認証システムから情報を ACLにインポートできます。 NT セキュリティ・システム、LDAP システム、UNIX パスワード・ファイル、またはデータベースから情報をインポートできます。Oracle9i Application Serverには、次のクラスがすべて含まれています。

� Secure Sockets Layer(SSL)バージョン 3

� RSA 暗号化

� X.509 証明書サポート、バージョン 3

OC4J では、ファイアウォール・トンネリング、つまり HTTP および HTTPS トンネリングを使用してファイアウォールおよびプロキシを通過する機能をサポートしています。

OC4J が提供しているトンネリングおよびパフォーマンス・が提供しているトンネリングおよびパフォーマンス・が提供しているトンネリングおよびパフォーマンス・が提供しているトンネリングおよびパフォーマンス・サービスサービスサービスサービス

J2EE サポート以外の OC4J の利点には、次のものがあります。

� RMI および HTTP トンネリング・サービス

� ロード・バランシングおよびクラスタ化

OC4J におけるロード・バランシングおよびクラスタ化の詳細は、『Oracle9i Application Server パフォーマンス・ガイド』を参照してください。

J2EE 概要 1-15

Page 25: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J が提供しているトンネリングおよびパフォーマンス・サービス

RMI およびおよびおよびおよび HTTP トンネリング・サービストンネリング・サービストンネリング・サービストンネリング・サービスデプロイされた J2EE アプリケーションは、通常、2 層または 3 層に分かれます。

� HTTP リスナーがデプロイされる Web サーバー層

� JSP およびサーブレットがデプロイされる Web プレゼンテーション層

� EJB として定義されたビジネス・ロジックがデプロイされる EJB 層

小規模な Web サイトでは、これらの層を組み合せて 1 つの物理中間層にしたり、大規模なWeb サイトでは、セキュリティ、拡張性およびロード・バランシングのためにこれらの層を2 つまたは 3 つの物理層に分けることがあります。 OC4J では、これらのアーキテクチャを考慮して、次のような場合に対応できるよう設計されています。

� Web サーバーから JSP およびサーブレット・エンジンへの接続

� JSP/ サーブレットから EJB へ、および EJB から EJB への接続

� HTTP および HTTP-S トンネリング

Web サーバーからサーバーからサーバーからサーバーから JSP およびサーブレット・エンジンへの接続およびサーブレット・エンジンへの接続およびサーブレット・エンジンへの接続およびサーブレット・エンジンへの接続Web サーバーは、HTTP を使用して、リクエストを JSP およびサーブレット・エンジンにダイレクトできます。 このため、Web サーバーをファイアウォールの外側に配置し、ファイアウォールの内側に存在するサーブレット・エンジンにリクエストをダイレクトすることが可能です。

JSP/ サーブレットからサーブレットからサーブレットからサーブレットから EJB へ、およびへ、およびへ、およびへ、および EJB からからからから EJB への接続への接続への接続への接続プレゼンテーション層からビジネス層への通信、および EJB 間の通信は、標準の RMI を使用して行われます。標準の RMI により、EJB にアクセスするあらゆるクライアントまたはWeb 層プログラムは、EJB 層のサービスへ直接アクセスが可能になります。 これらのサービスには、EJB のルックアップおよび参照用の JNDI、非同期メッセージの送受信用の Java Message Service(JMS)、およびリレーショナル・データベースへのアクセス用の JDBC が含まれます。

HTTP およびおよびおよびおよび HTTP-S トンネリングトンネリングトンネリングトンネリングOC4J では、HTTP および HTTP-S プロトコル上での RMI のトンネリングをサポートしています。 HTTP プロトコル上で OC4J と通信する必要がある場合に、Java ベースのクライアントに RMI を HTTP/HTTP-S トンネリングすることで使用できます。 通常、HTTP トンネリングは、Java クライアントと OC4J 間のステートフルなソケット接続をシミュレートしており、このソケット接続を、セキュリティ・ファイアウォールの HTTP ポートを通じてトンネリングします。 HTTP はステートレスなプロトコルですが、OC4J では、トンネリング機能を提供することにより、接続をステートフルな RMI 接続のようにします。 HTTP プロトコル下では、クライアントは、サーバー間でのみ、リクエストを送信し、リプライを受信できます。 サーバーは、自発的にクライアントとの通信を行うことはできず、プロトコルはステー

1-16 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 26: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J が提供しているトンネリングおよびパフォーマンス・サービス

トレスです。 つまり、連続的な双方向接続はできません。 OC4J の HTTP トンネリングは、HTTP プロトコル上で RMI 接続をシミュレートし、これらの制約を克服しています。

これにより、OC4J の異なる J2EE コンポーネントを、1 つの物理層にデプロイする(通常はパフォーマンスを 適化するため)ことも、別々の物理層にデプロイする(高可用性のための接続リルートなどの冗長性のため)ことも可能です。

ロード・バランシングおよびクラスタ化ロード・バランシングおよびクラスタ化ロード・バランシングおよびクラスタ化ロード・バランシングおよびクラスタ化OC4J ではクラスタをサポートしています。これは、ユーザーの必要性に応じてカスタマイズ可能です。 LoadBalancer により、個別のノードの状態がクラスタにレプリケートされます。 そのため、フェイルオーバーが発生した場合、サーバーの状態が保持されます。 状態情報は、永続記憶域ではなく、メモリーに格納されます。

各 OC4J インスタンスは、ノードと呼ばれる 1 つの Java Virtual Machine(JVM)で稼動します。 1 つ以上のこれらのノードにより、アイランドが形成されます。 アイランド内のノードは、同じアプリケーションを処理できます。 1 つ以上のアイランドにより、クラスタが形成されます。 クラスタ全体には、LoadBalancer という単純なフロントエンドが存在します。 同時に稼動する JVM の数は、クラスタ内のノードの数 +1(LoadBalancer の分)と同等です。 通常、アイランドには、2 つから 4 つのノードが存在します。

OC4J のフォルト・トレランスは、ステートフルなリクエストおよびステートレスなリクエストの両方の場合に機能します。

� ステートレスなリクエストの場合、クライアントは別の稼動中のインスタンスにリダイレクトされます。

� ステートフルなリクエストの場合、カンバセーショナル・ステートがフェイルオーバー・ノードに対して使用可能である必要があります。 状態は、常にクラスタに伝播されます。 したがって、フェイルオーバーまたはロード・バランシングが必要になると、同じアイランド内の別のノードが、クライアントの対話処理を取得します。

J2EE 概要 1-17

Page 27: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J が提供しているトンネリングおよびパフォーマンス・サービス

1-18 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 28: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

構成およびデプ

2

構成およびデプロイ構成およびデプロイ構成およびデプロイ構成およびデプロイ

この章では、できるだけ簡単にすばやく OC4J を構成および実行する方法を説明します。 OC4J では、SQLJ、JSP ページ、サーブレットおよび EJB を実行できます。 アプリケーションのデプロイ方法の例として、この章では、有名な Pet Store デモの構成方法を説明します。

この章には、次のトピックが含まれています。

� OC4J のセットアップ

� OC4J の起動および停止

� 開発ディレクトリの作成

� アプリケーションのデプロイ

� Web アプリケーションのアンデプロイ

ロイ 2-1

Page 29: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J のセットアップ

OC4J のセットアップのセットアップのセットアップのセットアップOC4J は、軽量な J2EE 準拠のコンテナです。これは、強力で実用的なデフォルトで構成された状態でインストールされ、インストール後すぐに実行可能です。 OC4J のインストールの詳細は、『Oracle9i Application Server インストレーション・ガイド』を参照してください。

OC4J は、Oracle HTTP Server powered by Apache のバックグラウンドで実行されるよう事前に構成されています。 ただし、OC4J および Oracle HTTP Server の両方をスタンドアロンの Web サーバーとして使用可能です。 Oracle HTTP Server には、OC4J とは異なる一連の機能があります。

� オラクル社では、JSP およびサーブレットなどの HTTP アプリケーション用には、Oracle HTTP Server をフロントエンド・リスナーとして使用し、OC4J をバックエンドJ2EE アプリケーション・サーバーとして使用することをお薦めします。 これにより、ロード・バランシング、高可用性などの Oracle9iAS の機能が使用可能になります。

図 2-1 に、すべての受信リクエスト用に Oracle HTTP Server リスナーにアクセスするブラウザを示します。 Oracle HTTP Server は、mod_proxyモジュールを通じて、リクエストを OC4J サーバーに渡します。 アプリケーションを j2ee/ Web コンテキストにデプロイした場合、この状態が事前に構成されています。 別の Web コンテキストを使用する場合、mod_proxyモジュールの構成を変更する必要があります。

� EJB および JMS アプリケーションの場合、クライアントは、OC4J、または EJB クラスタ化を使用している場合はロード・バランサにリクエストを送信する必要があります。

図図図図 2-1 HTTP アプリケーション・リスナーアプリケーション・リスナーアプリケーション・リスナーアプリケーション・リスナー

要件要件要件要件OC4J を実行するために、CLASSPATHに何も追加する必要はありません。インストレーション・ディレクトリ、lib/ サブディレクトリ、およびデプロイ済のアプリケーション EARファイルから、Java JAR ファイルおよびクラス・ファイルが直接ロードされるためです。

注意注意注意注意 : Oracle9iAS バージョン 1.0.2.2 では、デフォルトの Web サイトはHTTP プロトコルを使用してポート 8888 でリスニングします。Oracle9iAS リリース 2 以降は、デフォルトの Web サイトは、AJP 1.3 プロトコルを使用して、OC4J によって選択された有効で使用可能なポートでリスニングします。

Web OC4JHTTP 1.3 HTTP

SSLJ2EE

Oracle HTTPServer

mod_proxyブラウザ

アプリケーション

2-2 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 30: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J のセットアップ

JSP およびサーブレットのクイック・スタートおよびサーブレットのクイック・スタートおよびサーブレットのクイック・スタートおよびサーブレットのクイック・スタートOC4J で Web アプリケーションをデプロイするには、次のいずれかを実行します。

� サーブレット・クラスおよび JSP ページを、j2ee/home/default-web-appディレクトリに入れます。

� admin.jarツールを使用して J2EE アプリケーションをデプロイします。 J2EE アプリケーションは、EAR 形式でアーカイブされている必要があります。

サーブレットおよび JSP ページを default-web-appディレクトリに入れる方法が、アプリケーションをデプロイしたり、Oracle9iAS の以前のバージョンから J2EE アプリケーションを移行する際に、 も簡単な方法です。

サーブレットまたは JSP をすばやくデプロイするには、次のステップを実行します。

1. サーブレット・クラスを j2ee/home/default-web-app/WEB-INF/classesサブディレクトリ、つまり Java パッケージに対応するディレクトリに入れます。 サーブレットは、http://<apache_host>:7777/j2ee/servlet/<class-name>という形式の URL からアクセス可能です。

たとえば、サーブレット・クラス my.HelloServletを次のように入れます。

j2ee/home/default-web-app/Web-INF/classes/my/HelloServlet.class

これにより、http://<apache_host>:7777/j2ee/servlet/my/HelloServletという URL からアクセス可能になります。

2. JSP ページを、j2ee/home/default-web-appディレクトリ内の任意の場所に入れます。 http://<apache_host>:7777/j2ee/<path-to-JSP>という形式の URL からアクセス可能です。

たとえば、j2ee/home/default-web-app/examples/Hello.jsp内の JSP ページは、http://<apache_host>:7777/j2ee/examples/Hello.jspでアクセス可能です。

OC4J のののの SQLJ 用のセットアップ用のセットアップ用のセットアップ用のセットアップOC4J を SQLJ 用にセットアップするには、ランタイム 12ee.jarおよび SQLJ 用のtranslator.jarライブラリを、j2ee/home/libディレクトリにコピーします。 OC4J 固有の手順および SQLJ デモの場所は、SQLJ の READMEファイルを参照してください。 SQLJの詳細は、『Oracle9i SQLJ 開発者ガイドおよびリファレンス』を参照してください。

構成およびデプロイ 2-3

Page 31: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J の起動および停止

OC4J の起動および停止の起動および停止の起動および停止の起動および停止この項には、次のトピックが含まれています。

� OC4J の起動

� OC4J の管理

OC4J の起動の起動の起動の起動OC4J は、デフォルトの構成でインストールされます。これには、デフォルトの Web サイトおよびデフォルトのアプリケーションが含まれます。 これにより、すぐに OC4J を起動できます。

OC4J は、1 つの標準 JDK Java Virtual Machine で稼動します。 OC4J を起動するには、j2ee/homeディレクトリから次のコマンドのうちのいずれかを発行します。

� java -jar orion.jar <options>

このコマンドにより、j2ee/home/configディレクトリ内のデフォルトの構成ファイルを使用して OC4J が起動されます。

OC4J の起動には、このコマンドのオプションは必要ありません。 ただし、OC4J の起動を制御する場合、A-12 ページの「orion.jar コマンドライン・ツール」に示されているオプションを使用するか、j2ee/homeディレクトリから次のコマンドを発行します。

java -jar orion.jar -help

� java -jar orion.jar -config /mypath/server.xml

デフォルトの構成を使用しない場合、このコマンドを使用します。 このコマンドは、/mypath内の server.xmlファイルを使用して OC4J を起動します。

OC4J が起動すると、画面に「Oracle9iAS (1.0.2.2.1) Containers for J2EE initialized」と表示されます。

注意注意注意注意 : j2ee/homeディレクトリから orion.jarを実行するかわりに、$J2EE_HOME変数(UNIX の場合)または %J2EE_HOME%変数

(Windows NT の場合)をコマンドラインで使用し、orion.jarを任意のディレクトリから実行することが可能です。

たとえば、UNIX 環境の場合、次のコマンドを使用します。

% java -jar $J2EE_HOME/orion.jar

2-4 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 32: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J の起動および停止

OC4J の管理の管理の管理の管理OC4J サーバーの起動後、admin.jarコマンドライン・ツールを使用して、サーバーをコンソールから管理できます。 次の構文を使用します。

java -jar admin.jar ormi://<oc4j_host>:<oc4j_ormi_port> <admin_id> <admin_password> <options>

変数は、次のとおりです。

� <oc4j_host><oc4j_ormi_port>: アプリケーションをデプロイするOC4Jサーバーのホスト名およびポート。 admin.jarツールは、OC4J RMI プロトコル(ormi)を使用して、OC4J サーバーと通信します。 したがって、ホスト名およびポートは rmi.xmlファイルで定義されます。 OC4J Remote Method Invocation(ORMI)のデフォルトのポート番号は 23791 です。別のポート番号を使用する場合、config/rmi.xmlファイルで <rmi-server port="<oc4j_ormi_port>" host="<oc4j_host>">を操作することにより、デフォルトのポート番号を変更します。

� <admin_id> <admin_password>: インストール時に管理用の識別情報およびパスワードを定義します。 識別情報およびパスワードは、config/principals.xmlファイル内に存在します。

OC4J の再起動の再起動の再起動の再起動OC4J では、server.xmlで定義されているデプロイ済アプリケーションのほとんどの変更を自動的に検出し、それらのアプリケーションを自動的にリロードします。 そのため、アプリケーションの再デプロイ時には、サーバーを再起動する必要はありません。 ただし、一部のコンテナ・レベルの構成ファイルを変更した場合、OC4J を再起動する必要がある場合があります。このようなファイルには、data-sources.xml、rmi.xml またはprincipals.xmlなどがあります。

OC4J を再起動するには、コンソールから admin.jarコマンドライン・ツールを使用します。 デフォルトのパラメータを使用して OC4J を再起動するには、インストレーション・ルート・ディレクトリに移動し、次を実行します。

% java -jar admin.jar ormi://<oc4j_host>:<oc4j_ormi_port> <admin> <admin_password> -restart

このコマンドは、OC4J RMI リスナー・ポートに接続し、再起動を要求します。 JVM がシグナルに応答していない場合、または RMI メッセージを受け入れない場合、これが機能しない可能性があります。 このような場合、UNIX 環境では、kill <process>というオペレーティング・システム・コマンドを使用して JVM を停止します。 Windows NT 環境では、Windows NT のタスク マネージャにアクセスし、JVM を停止します。

構成およびデプロイ 2-5

Page 33: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J の起動および停止

OC4J のシャットダウンのシャットダウンのシャットダウンのシャットダウンOC4J をシャットダウンするには、コンソールから admin.jarコマンドライン・ツールを使用します。 デフォルトのパラメータを使用して OC4J をシャットダウンするには、インストレーション・ルート・ディレクトリに移動し、次のコマンドを実行します。

% java -jar admin.jar ormi://<oc4j_host>:<oc4j_ormi_port> <admin> <admin-password> -shutdown

このコマンドにより、コンテナが正常にシャットダウンされます。 コンテナがシャットダウンされない場合、次のように force引数を渡して強制的に迅速なシャットダウンを行います。

% java -jar admin.jar ormi://<oc4j_host>:<oc4j_ormi_port> <admin> <admin-password> -shutdown force

この手段でシャットダウンできない場合、ご使用のシステムにより、オペレーティング・システムのコマンドまたはツールを使用して、OC4J プロセスを終了させます。

2-6 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 34: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

開発ディレクトリの作成

開発ディレクトリの作成開発ディレクトリの作成開発ディレクトリの作成開発ディレクトリの作成オラクル社では、アプリケーション開発時に、一貫性があり意味のある命名規則を使用することをお薦めします。 たとえば、アプリケーションの名前を使用したディレクトリ内で、アプリケーションをモジュールとして開発します。 このディレクトリ内のすべてのサブディレクトリは、JAR、WAR および EAR アーカイブ作成用の構造と一貫性を持たせます。 これにより、ソースのアーカイブ時には、すでに必要なアーカイブ形式が準備できています。図2-2 に、この構造を示します。

図図図図 2-2 開発アプリケーションのディレクトリ構造開発アプリケーションのディレクトリ構造開発アプリケーションのディレクトリ構造開発アプリケーションのディレクトリ構造

<appname> |-------META-INF | `-------application.xml | |-------ejb_module | |-------EJB classes | `-------META-INF | `-------ejb-jar.xml |-------web_module | |-------index.html | |-------JSP pages | `-------WEB-INF | |----web.xml | `----classes | `-------Servlet classes `-------client_module |-------Client classes `-------META-INF `-------application-client.xml

図 2-2 に関しては、次の点を考慮してください。

� 次のディレクトリ名および XML ファイル名は変更できません。META-INF、WEB-INF、application.xml、ejb-jar.xml、web-xmlおよび application-client.xml

� ディレクトリを分けることにより、エンタープライズ Java アプリケーションのモジュールがそれぞれ明確に区別されます。 マニフェスト・ファイルとして機能するapplication.xmlファイルにより、これらのモジュールが定義されます。

� 個別のモジュール(ejb_module、web_moduleおよび client_module)が入っているディレクトリには任意の名前が使用可能です。 これらの名前は、マニフェスト・ファイル(application.xmlファイル)の値と一致する必要があります。

� Enterprise JavaBeans(EJB)モジュールの場合、モジュールの 上位は、クラスの検索パスの開始を示します。 したがって、パッケージに所属するクラスは、この下のネストされたディレクトリ構造内に存在しているとみなされます。 たとえば、パッケージ・ク

構成およびデプロイ 2-7

Page 35: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

アプリケーションのデプロイ

ラス 'myapp.ejb.demo'の参照は、<appname>/ejb_module/myapp/ejb/demo.class内に存在するとみなされます。

アプリケーションのデプロイアプリケーションのデプロイアプリケーションのデプロイアプリケーションのデプロイこの項では、OC4J サーバーへの J2EE アプリケーションのデプロイ方法と、サーバーへアプリケーションをバインドし、OC4J からアプリケーションへのアクセスを可能にする方法を説明します。

基本デプロイ基本デプロイ基本デプロイ基本デプロイJ2EE アプリケーションには、次のモジュールを含めることが可能です。

� Web アプリケーション

Web アプリケーション・モジュール(WAR ファイル)には、サーブレットおよび JSPページが含まれます。

� EJB アプリケーション

EJB アプリケーション・モジュール(EJB JAR ファイル)には、Enterprise JavaBeans(EJB)が含まれます。

� クライアント・アプリケーション

エンタープライズ Java アプリケーションに属する JAR および WAR ファイルを、OC4J にデプロイできるよう、EAR ファイルにアーカイブします。 J2EE 仕様で、EAR ファイルのレイアウトが定義されています。

EAR ファイルの内部レイアウトは、次のようにします。

図図図図 2-3 アーカイブ・ディレクトリの形式アーカイブ・ディレクトリの形式アーカイブ・ディレクトリの形式アーカイブ・ディレクトリの形式

<appname> |-------------META-INF/ | \--------application.xml | |-------------EJB JAR file |-------------WEB WAR file \-------------Client JAR file

次の JAR コマンドを使用して、これらのファイルをアーカイブします。

% jar cvfM <appname>.EAR

application.xmlファイルは、マニフェスト・ファイルとして機能します。

EAR ファイルを使用して J2EE アプリケーションをデプロイするには、次のように、admin.jarコマンドライン・ツールを実行します。

2-8 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 36: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

アプリケーションのデプロイ

java -jar admin.jar ormi://<oc4j_host>:<oc4j_ormi_port> <username> <password> -deploy -file <filename> -deploymentName <deploymentName> -targetpath <target_path>

次に、-deployのサブスイッチを示します。

� -file: デプロイする EAR ファイルのパスおよびファイル名。

� -deploymentName: ユーザー定義のアプリケーション・デプロイ名。

� -targetPath: アーカイブをデプロイするサーバー・ノードのパス。 デフォルトは、applications/ディレクトリです。 デプロイ用に EAR ファイルがコピーされているディレクトリへのターゲット・パスを提供します。

admin.jarの全オプションのリストは、A-13 ページの「admin.jar コマンドライン・ツール」を参照してください。

このデプロイ・ステップにより、server.xmlファイルにアプリケーション用の新規エントリが作成されます。

<application name=<app_name> path=<path_EARfile> auto-start="true" />

各項目の説明 :

� name変数は、アプリケーションの名前です。

� pathは、EAR ファイルのディレクトリおよびファイル名を示します。

� auto-start変数は、OC4J の再起動のたびにアプリケーションを自動的に再起動するかどうかを示します。

server.xmlの要素の説明は、A-8 ページの「server.xml ファイルの要素」を参照してください。

Web アプリケーションのバインドアプリケーションのバインドアプリケーションのバインドアプリケーションのバインドJ2EE Web アプリケーションを OC4J Web サーバーからアクセス可能にするには、次のコマンドを使用して、Web アプリケーションを OC4J サーバーにバインドします。

java -jar admin.jar ormi://<oc4j_host>:<oc4j_ormi_port> <username> <password> -bindWebApp <app_deploy_name> <web_app_name> <web_site_name> <context_root>

次に、-bindWebAppの値を示します。

� <app_deploy_name>はアプリケーション名で、-deployオプションの-deploymentNameで使用されている名前と同じです。 さらに、これは、server.xmlファイルの <application name=<app_name> />属性に保存されている名前とも同じです。

構成およびデプロイ 2-9

Page 37: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

Web アプリケーションのアンデプロイ

� <web_app_name>は、EAR ファイル内の WAR ファイルの名前から .war拡張子を除いた部分です。

� <web_site_name>は、この Web アプリケーションをバインドする Web サイトを示す*web-site.xmlファイルの名前です。 これは、Web アプリケーション定義を受信するファイルです。

� <context_root>は、Web モジュールのルート・コンテキストです。 Apache Server が受信リクエストを OC4J サーバーにルーティングするためには、コンテキスト・ルートは、/j2ee/ で始まる必要があります。

admin.jarの全オプションのリストは、A-13 ページの「admin.jar コマンドライン・ツール」を参照してください。

このステップにより、<web_site_name>変数に示されている OC4J の *web-site.xml構成ファイルにエントリが作成されます。

デプロイの検証デプロイの検証デプロイの検証デプロイの検証server.xmlファイルにアプリケーションが追加されると、OC4J はそれを検出します。 そして、OC4J サーバーにより、アプリケーションがデプロイされたというメッセージが表示されます。

サーバーがアプリケーションをすぐに検出しない場合、OC4J を起動(または再起動)すると、すぐにアプリケーションが検出されます。 詳細は、2-4 ページの「OC4J の起動および停止」を参照してください。

Web アプリケーションのアンデプロイアプリケーションのアンデプロイアプリケーションのアンデプロイアプリケーションのアンデプロイJ2EE アプリケーションを OC4J Web サーバーから削除するには、admin.jarコマンドライン・ツールで -undeployオプションを使用します。 構文は次のとおりです。

java -jar admin.jar ormi://<oc4j_host>:<oc4j_ormi_port> admin <adminpassword> -undeploy <applicationName> -keepFiles

このコマンドによって <applicationName>という名前のデプロイ済の J2EE アプリケーションが削除され、次の処理が行われます。

� アプリケーションが OC4J ランタイムから削除されます。

� Web モジュールのバインドは、すべてのバインド先の Web サイトから削除されます。

� アプリケーション・ファイルは、applications/およびapplication-deployments/ディレクトリの両方から削除されます。 これらのファイルを削除しない場合、-keepFilesスイッチを使用します。

2-10 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 38: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

高度な構成、開発およ

3

高度な構成、開発およびデプロイ高度な構成、開発およびデプロイ高度な構成、開発およびデプロイ高度な構成、開発およびデプロイ

第 2 章「構成およびデプロイ」では、J2EE アプリケーションの も簡単な構成、開発およびデプロイ方法を説明しています。 ただし、JMS などの他のサービスを使用する場合は、様々な XML 構成ファイルの操作方法を知っている必要があります。 この章では、XML 構成ファイルの詳細な評価、アプリケーションのデプロイ方法の説明、および OC4J 内での J2EE アプリケーションの開発方法の推奨事項を示します。

この章には、次のトピックが含まれています。

� OC4J および J2EE の XML ファイルの概要

� XML 構成ファイルの手動での編集

� OC4J のアプリケーションの自動デプロイ

� ディレクトリ内での構築およびデプロイ

びデプロイ 3-1

Page 39: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J および J2EE の XML ファイルの概要

OC4J およびおよびおよびおよび J2EE のののの XML ファイルの概要ファイルの概要ファイルの概要ファイルの概要この項には、次のトピックが含まれています。

� XML 構成ファイルの概要

� J2EE 構成ファイルの手動での編集

XML 構成ファイルの概要構成ファイルの概要構成ファイルの概要構成ファイルの概要OC4J は、XML ファイルのみによって構成されるため、様々な XML ファイルの役割および方式を理解する必要があります。 各 XML ファイルは、特定の役割のために存在します。そのため、その役割が必要な場合、どの XML ファイルで変更およびメンテナンスを行うかを理解する必要があります。

図 3-1 に、OC4J のすべての XML ファイル、および対応する機能を示します。

� OC4J サーバー : このボックス内のすべての XML ファイルは、OC4J サーバーのこのインスタンスのセットアップに使用されます。 これらのファイルは、リスニング・ポート、管理パスワード、セキュリティおよびその他の基本的な J2EE サービスなどを構成します。

OC4J サーバーの構成ファイルは、home/config/ディレクトリ内に存在します。これらの OC4J 固有ファイルは、OC4J サーバーを構成し、他の主要な構成ファイルを指します。 OC4J 構成ファイルの設定は、ユーザーの J2EE アプリケーションに直接関係するのではなく、サーバーそのものに関係します。

� Web サイト : これらの XML ファイルは、OC4J Web サイトのリスニング・ポートおよびWeb コンテキストを構成します。

� Oracle HTTP Server: これらのファイルは、Apache Server 内の構成ファイルです。 ただし、OC4J サーバーへのリクエストの送信方法を変更するために、これらのファイルを修正する必要がある場合があるため、この図に含まれています。

� アプリケーションの XML ファイル : 各 J2EE アプリケーション・タイプ(EJB、サーブレット、JSP)は、独自の構成(デプロイ)ファイルを必要とします。 各 J2EE アプリケーション XML ファイルに加え、マニフェスト・ファイルも application.xmlファイルに含まれています。 他の OC4J 固有のグローバル・アプリケーション情報を、orion-application.xmlファイルで構成可能です。

3-2 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 40: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J および J2EE の XML ファイルの概要

図図図図 3-1 OC4J およびおよびおよびおよび J2EE のアプリケーション・ファイルのアプリケーション・ファイルのアプリケーション・ファイルのアプリケーション・ファイル

OC4J サーバー

J2EE デプロイデプロイデプロイデプロイ XML ファイルファイルファイルファイル

OC4J 構成ファイル構成ファイル構成ファイル構成ファイル

config/server.xmlconfig/principals.xmlconfig/data-sources.xmlconfig/rmi.xmlconfig/jms.xml

サーバー構成ファイル

config/ global-web-application.xmlconfig/application.xml(global)

アプリケーション

EJB Web クライアントクライアントクライアントクライアント

ejb-jar.xmlorion-ejb-jar.xml

web.xmlorion-web.xml

application-client.xmlorion-application-client.xml

application.xmlorion-application.xml

Web サイトサイトサイトサイト

<name>-web-site.xml

oc4j-connectors.xml

高度な構成、開発およびデプロイ 3-3

Page 41: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J および J2EE の XML ファイルの概要

表 3-1 に、前述の図で示した各 XML ファイルの役割および機能を示します。

表表表表 3-1 OC4J の機能および構成要素の機能および構成要素の機能および構成要素の機能および構成要素

XML 構成ファイル構成ファイル構成ファイル構成ファイル 機能機能機能機能 / 構成要素構成要素構成要素構成要素

server.xml OC4J の全般的なサーバー構成。 サーバーを構成し、こ

のファイルに追加する XML ファイル(セキュリティ

用の principals.xmlなど)を指定します。

principals.xml OC4J のデフォルトのセキュリティ。 サーバーへのアク

セスに必要なセキュリティのタイプを構成します。

loadbalancer.xml OC4J のロード・バランシング構成。 OC4J サーバーの

パフォーマンスを改善します。 ロード・バランサは、

すべて OC4J サーバーの外部に存在します。

data-sources.xml OC4J の JDBC サポート。 OC4J 内のアプリケーション

によって使用されているすべてのデータベースのデータ・ソースを構成します。

rmi.xml OC4J の RMI サポート。 RMI ポートおよび必要なトン

ネリングのサポートを構成します。

jms.xml OC4J の JMS サポート。 OC4J 内で JMS および MDB に

よって使用されている JMS の Destinationのトピッ

クおよびキューを構成します。

<name>-web-site.xml OC4J の Web サイト定義。 各 Web サイトは、それぞ

れの XML ファイル内で定義されています。 各 XMLファイルの名前を、ルート要素名である <web-site>に基づいて決定することをお薦めします。 たとえば、

<name>-web-site.xmlを my-web-site.xmlにしま

す。 server.xmlファイルの web-site path文で、こ

の XML ファイルを指定する必要があります。

application.xml orion-application.xml

J2EE アプリケーションのマニフェスト・ファイルおよ

び構成ファイル。 <name>-application.xmlファイル

は、EJB および Web モジュールを含んでいる J2EE EAR ファイルの定義に使用されます。 J2EE EAR ファ

イルは、セキュリティ XML 定義ファイル

principals.xmlの場所も定義します。 config/ディ

レクトリ内に application.xmlファイルが 1 つ存在

しています。 これは、グローバル・アプリケーション

定義ファイルです。

3-4 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 42: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J および J2EE の XML ファイルの概要

XML ファイルの相互関連性ファイルの相互関連性ファイルの相互関連性ファイルの相互関連性これらの XML ファイルの一部は、相互に関連性があります。 つまり、一部の XML ファイルは、他の XML ファイル(OC4J 構成および J2EE アプリケーションの両方)を参照します

(図 3-3 を参照してください)。

次に、相互関連ファイルを示します。

� config/server.xml: 次のファイルへの参照が含まれています。

– この OC4J サーバーの各 Web サイト用のすべての config/<name>-web-site.xmlファイル。

– 他の OC4J サーバー構成ファイル。ただし、config/application.xmlで定義されている principals.xmlは除きます。図 3-1 にこれを示します。

– OC4J でデプロイされている各 J2EE アプリケーション用の application.xmlファイルの場所。

� <name>-web-site.xml: server.xmlファイルで定義されている名前でアプリケーションを参照します。 また、このファイルはアプリケーション固有の EAR ファイルを参照します。

global-web-application.xmlweb.xml

J2EE の Web アプリケーションの構成ファイル。

� global-web-application.xml は、OC4J 固有のファ

イルで、すべての Web サイトにバインドされて

いるサーブレットの構成に使用されます。

� web.xml および orion-web.xml が各 Web アプリ

ケーションに対して存在します。

<name>-web.xmlファイルは、Web アプリケーション

のデプロイ・パラメータの定義に使用され、WARファイル内に含まれています。 さらに、このファイル

内で、サーブレットおよび JSP の URL パターンを指

定できます。 たとえば、サーブレットは <servlet>要

素で定義され、URL パターンは <servlet-mapping>要素で定義されます。

ejb-jar.xml orion-ejb-jar.xml

J2EE の EJB アプリケーションの構成ファイル。 <name>-ejb-jar.xmlファイルは、EJB のデプロイメ

ント・ディスクリプタの定義に使用され、EJB JARファイル内に含まれています。

application-client.xml orion-application-client.xml

J2EE のクライアント・アプリケーションの構成ファイ

ル。

表表表表 3-1 OC4J の機能および構成要素の機能および構成要素の機能および構成要素の機能および構成要素 (続き)(続き)(続き)(続き)

XML 構成ファイル構成ファイル構成ファイル構成ファイル 機能機能機能機能 / 構成要素構成要素構成要素構成要素

高度な構成、開発およびデプロイ 3-5

Page 43: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J および J2EE の XML ファイルの概要

� config/application.xml: principals.xmlファイルへの参照が含まれています。

server.xmlファイルは、OC4J サーバーで使用されている大部分のファイルへの参照を含んでいる中核ファイルです。図 3-2 に、server.xmlファイルで参照される可能性のある XMLファイルを示します。

図図図図 3-2 server.xml 内で参照される内で参照される内で参照される内で参照される XML ファイルファイルファイルファイル

$j2ee_home/config/server.xml|------>rmi.xml|------>jms.xml|------>application.xml| |------>data-sources.xml| `------->principals.xml|------>global-web-application.xml`------>default-web-site.xml |------>default-web-app `------>web-app

3-6 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 44: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J および J2EE の XML ファイルの概要

図図図図 3-3 Server.xml ファイルおよび関連ファイルおよび関連ファイルおよび関連ファイルおよび関連 XML ファイルファイルファイルファイル

高度な構成、開発およびデプロイ 3-7

Page 45: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

XML 構成ファイルの手動での編集

XML 構成ファイルの手動での編集構成ファイルの手動での編集構成ファイルの手動での編集構成ファイルの手動での編集各 XML ファイルとその相互関連性を理解すると、これらのファイルの操作方法がわかるようになります。

Web リスニング・エンド・ポイントの構成リスニング・エンド・ポイントの構成リスニング・エンド・ポイントの構成リスニング・エンド・ポイントの構成各 OC4J サーバーは、HTTP または RMI ポートで受信リクエストをリスニングするよう構成されています。

� mod_proxyからの受信 HTTP リクエストは、Apache フロントエンドが転送します。 このデフォルト構成を変更する場合、httpd.confを変更する必要があります。

� その他の HTTP クライアントは、OC4J の HTTP ポートに直接アクセスできます。 これには、OC4J の <name>-web-site.xmlファイルを構成する必要があります。

� EJB クライアントおよび OC4J ツールは、構成済の RMI ポートを通じて OC4J サーバーにアクセスします。 これには、OC4J の rmi.xmlファイルを構成する必要があります。

OC4J は、Web モジュールを持つ J2EE アプリケーションを、Web サイトの 1 つによって処理されている URL にバインドすることにより、Web クライアントからアクセス可能にします。 EJB のみを含んでいるアプリケーションは、Web サイトの URL にバインドされませんが、RMI を通じてサーバーにアクセス可能です。

Web サーバーの構成ファイル(<name>-web-site.xml)で、HTTP リスナー・ポートが示されます。 次の形式の HTTP URL を使用して、Web サーバーにアクセスします。

http://<web_server_host>:<web_server_port>

rmi.xmlファイルで、受信 EJB および OC4J ツールのリクエスト用に、RMI リスナー・ポートを定義します。 RMI サーバーには、次の形式の URL を使用して、任意の EJB クライアント・アプリケーションからアクセス可能です。

ormi://<oc4j_host>:<rmi_server_port>

デフォルトの RMI ポートは 23791 です。

J2EE 構成ファイルの手動での編集構成ファイルの手動での編集構成ファイルの手動での編集構成ファイルの手動での編集admin.jarコマンドライン・ツールを使用して XML ファイルを変更するかわりに、手動で変更することも可能です。 server.xmlおよび web-site.xmlファイルを、ご使用のアプリケーション情報を含めるよう変更します。

� server.xmlで、OC4J の起動時に自動的にデプロイする各アプリケーションに対し、<application name=... path=... auto-start="true" />エントリを新しく追加するか、または既存のエントリを変更します。 auto-start変数を trueに設定することにより、自動デプロイが行われます。

3-8 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 46: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J のアプリケーションの自動デプロイ

� web-site.xmlで、OC4J の起動時に自動的にデプロイする各 Web アプリケーションに対し、<web-app...>エントリを追加します。 これによって Web アプリケーションが Webサイトにバインドされるため、このステップは重要です。 <name>は WAR ファイル名から .WAR拡張子を除いた部分であるため、J2EE アプリケーション内の各 WAR ファイルについて、1 行ずつ必要です。

WAR ファイルを使用した Web アプリケーションのバインディングには、次のものを追加します。

<web-app application="myapp" name="/private/myapp-web" root="/myapp" />

� application属性は、server.xmlでアプリケーション名として指定されている名前です。

� name属性は、WAR ファイル名から .WAR拡張子を除いた部分です。

� root属性は、Web サイト外でのアプリケーションのルート・コンテキストを定義します。 たとえば、Web を "http://<apache_host>:7777/j2ee"と定義した場合、アプリケーションを起動するには、ブラウザで"http://<apache_host>:7777/j2ee/myapp"を指定します。

OC4J のアプリケーションの自動デプロイのアプリケーションの自動デプロイのアプリケーションの自動デプロイのアプリケーションの自動デプロイOC4J は、XML ファイルのタイムスタンプが変わると自動的にアプリケーションをデプロイします。 この自動化プロセスは、ホット・デプロイと呼ばれます。 再デプロイするためにOC4J を再起動する必要はなくなりました。 すべての場合にホット・デプロイが使用可能なわけではありませんが、次のような場合、デプロイが行われます。

� server.xmlへの手動での変更がチェックされた場合

� WAR および EAR ファイルへの変更がチェックされた場合

� サーブレット・クラスおよび JSP ファイル(開かれたディレクトリ形式下で)への変更がチェックされた場合

次のような場合、ホット・デプロイは発生しません。

� server.xmlへの手動での変更がチェックされていない場合

� Bean クラス(開かれたディレクトリ形式下で)への変更がチェックされていない場合

適切な XML ファイルを変更すると、OC4J によって自動的に変更が検出されます。 クライアントが次にアプリケーションにアクセスすると、OC4J によってアプリケーションが再デプロイされます。 OC4J により更新がチェックされない場合、admin.jarコマンドライン・ツー

注意注意注意注意 : 自動デプロイが完了するのを待ってからクライアントにアクセスしてください。 これには、すべての EAR ファイルのデプロイ、およびすべての WAR および JAR ファイルの更新の完了が含まれます。 これらの処理が完了する前にクライアントがルックアップを行うと、失敗します。

高度な構成、開発およびデプロイ 3-9

Page 47: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

ディレクトリ内での構築およびデプロイ

ルを使用するか、または OC4J サーバーを手動で再起動することにより、再デプロイを行ってください。 -deployオプションの詳細は、A-13 ページの「admin.jar コマンドライン・ツール」を参照してください。

ディレクトリ内での構築およびデプロイディレクトリ内での構築およびデプロイディレクトリ内での構築およびデプロイディレクトリ内での構築およびデプロイアプリケーションの開発時には、クラスをすばやく修正、コンパイルおよび実行する必要があります。 OC4J では、(2-3 ページの「JSP およびサーブレットのクイック・スタート」で説明されているように)j2ee/home/default-web-appディレクトリ内に入れられた Web アプリケーション、および j2ee/home/applicationsディレクトリ内に入れられた EJB アプリケーションを自動的にデプロイします。

EJB または複合 J2EE アプリケーションをデプロイするには、次のステップを実行します。

1. ファイルを、applications/ディレクトリ下の任意のディレクトリに入れます。

このディレクトリ構造は、EAR ファイルに使用されているものと同様です。

2. ディレクトリ名を、EJB JAR ファイルまたは Web アプリケーションの WAR ファイルおよび Resource Adapter Archive(RAR)ファイルが存在する場所に置換します。

3. クラスを、そのパッケージ構造にマッピングされる、ディレクトリ構造内の場所に入れます。

図 3-4 に、このディレクトリ構造を示します。

3-10 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 48: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

ディレクトリ内での構築およびデプロイ

図図図図 3-4 開発アプリケーションのディレクトリ構造開発アプリケーションのディレクトリ構造開発アプリケーションのディレクトリ構造開発アプリケーションのディレクトリ構造

applications`------<appname> |-------META-INF | `-------application.xml | |-------ejb | |-------EJB classes (my.ejb.class maps to /my/ejb/class) | `-------META-INF | `-------ejb-jar.xml |-------web | |-------index.html | |-------JSP pages | `-------WEB-INF | |----web.xml | `----classes | `-------Servlet classes (my.servlet to /my/servlet) |-------client | |-------Client classes | `-------META-INF | |-------application-client.xml | `-------orion-application-client.xml

4. server.xml、applications.xmlおよび <name>-web-site.xmlファイルを、次のように変更します。

� server.xmlで、各 J2EE アプリケーションに対し、<application name=... path=... auto-start="true" />要素を新しく追加するか、または既存の要素を変更します。 パスは、J2EE アプリケーションの META-INFアプリケーションの親ディレクトリにします。

パスは、次のいずれかの方法で指定します。

� ルートから親ディレクトリへのフルパスを指定します。

図 3-4 の例では、<appname>が "myapp"の場合、絶対パスは次のようになります。

<application_name="myapp" path="/private/j2ee/home/applications/myapp" auto-start="true" />

� 相対パスを指定します。 このパスは、親ディレクトリの場所に対するserverl.xml ファイルの相対的な場所を示します。

図 3-4 の例では、<appname>が "myapp"の場合、相対パスは次のようになります。

<application_name="myapp" path="../myapp" auto-start="true" />

高度な構成、開発およびデプロイ 3-11

Page 49: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

ディレクトリ内での構築およびデプロイ

� application.xmlで、<module>要素を変更し、Web アプリケーション、EJB アプリケーションおよび展開ディレクトリ内のすべてのクライアント・コードのディレクトリを含めるようにします。 この場合、<web-uri>、<ejb>および <client>要素を変更する必要がある場合があります。 これらの要素に含まれるパスは、applications/ディレクトリの相対パスであり、これらの各アプリケーション・タイプの WEB-INFまたは META-INFディレクトリの親ディレクトリである必要があります。 次の例では、<web-uri>を、"myapp"アプリケーション内に含まれているWeb アプリケーション用に変更しています。

<module> <web> <web-uri>web</web-uri> </web></module>

� <name>-web-site.xmlファイルで各 Web アプリケーションに対し、<web-app...>要素を追加します。 これによって Web アプリケーションが Web サイトにバインドされるため、このステップは重要です。 アプリケーションの属性値は、server.xmlファイルの値と同じである必要があります。 <name>は、Web アプリケーションのディレクトリにする必要があります。 name 要素内のディレクトリ・パスは、application.xmlファイル内の <web-uri>要素のパスの場合と同じ規則に従う必要があります。

Web アプリケーション "myapp" をバインドするには、次のパスを追加します。

<web-app application="myapp" name="myapp/web" root="/myapp" />

注意注意注意注意 : JAR ファイルを使用してデプロイすると、よりパフォーマンスが向上します。 実行中は、JAR ファイル全体がメモリーにロードされ、索引付けされます。 この方法は、必要時に開発ディレクトリからクラスを読み込むより高速です。

3-12 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 50: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

データ・ソ

4

データ・ソースデータ・ソースデータ・ソースデータ・ソース

この章では、OC4J のインストール時に構成されるデフォルトのデータ・ソースの使用方法について説明します。

この章には、次のトピックが含まれています。

� 概要

� 接続の取得

� データ・ソースの使用

ース 4-1

Page 51: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

概要

概要概要概要概要データ・ソースは、javax.sql.DataSourceインタフェースで指定されているプロパティおよびメソッドを持つ Java オブジェクトです。 データ・ソースは、JDBC 接続を返すファクトリです。 J2EE アプリケーションは、JNDI を使用して、DataSourceオブジェクトをルックアップします。

OC4J データ・ソースは、data-sources.xml構成ファイルで定義されています。 アプリケーションは、application.xmlファイルで指定されている data-sources.xmlファイルを直接使用します。 application.xmlファイルで、<data-sources>タグの path属性により、使用する data-sources.xmlファイルが指定されます。

次に、このタグの例を示します。

<data-sources path = "data-sources.xml"/>

接続の取得接続の取得接続の取得接続の取得データベースへの接続を取得するには、JNDI を使用してデータ・ソースをルックアップします。 JNDI が返すオブジェクトを、必ず DataSourceにキャストまたはナローイングする必要があります。JNDI の lookup()メソッドは、常に Pure Java の Objectを返すためです。 DataSourceオブジェクトが存在する場合、その getConnection()またはgetXAConnection()を起動して接続を取得します。 接続は、データ・ソースへの物理接続の場合と論理ハンドルの場合とがあります。 これは、XA データ・ソースによってわずかに異なります。

サーブレットまたは EJB からは、次のようにして、データ・ソースを使用して接続を取得します。

1. 初期コンテキストを作成します。

Context ic = new InitialContext();

2. data-sources.xmlファイルで定義されている論理名を使用して、データ・ソースをルックアップします。 論理名は、locationプロパティで指定されています。 同じデータ・ソースの場所に対する複数のルックアップは、常に同じデータ・ソース・インスタンスを返します。

DataSource ds = (DataSource) ci.lookup("jndi/OracleCacheDS");

3. 返された DataSourceオブジェクトから接続を取得します。 データ・ソースの種類により、接続は物理的接続、プールされた接続または XA が使用可能な接続のいずれかです。

Connection con = ds.getConnection("scott", "tiger");

4-2    Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 52: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

データ・ソースの使用

接続を取得すると、データ・ソースによって指定されたデータベースに対して JDBC 文を構成および実行できます。

データ・ソースの使用データ・ソースの使用データ・ソースの使用データ・ソースの使用この項では、アプリケーションで使用可能なデータ・ソース、およびアクセス方法について説明します。 次のトピックが含まれています。

� 構成ファイル

� 移植可能な DataSource ルックアップ

ほとんどの場合、サーバーの data-sources.xml構成ファイルで定義済のデータ・ソースを使用できます。

データ・ソース構成ファイルで指定されていないクラスに基づいたデータ・ソース・オブジェクトなど、新しいデータ・ソース・オブジェクトを定義する必要がある場合、datasource.xmlファイルを編集する必要があります。

構成ファイル構成ファイル構成ファイル構成ファイル1 つの主要な構成ファイル $J2EE_HOME/config/data-sources.xmlによって、データ・ソースが OC4J サーバー・レベルで設定されます。

また、各アプリケーションごとに、別々の JNDI ネームスペースが存在します。 web.xmlおよび orion-web.xmlファイルには、アプリケーションの JNDI 名をデータ・ソースにマッピングする際に使用可能なエントリが含まれています。これについては、次に説明します。

移植可能な移植可能な移植可能な移植可能な DataSource ルックアップルックアップルックアップルックアップJNDI を使用してデータ・ソースをルックアップする際に、次のように JNDI ルックアップ・メソッドを指定したとします。

DataSource ds = ic.lookup("jdbc/OracleDS");

これにより、OC4J サーバーは、内部 JNDI ツリーを検索します。

ただし、アプリケーションでは、移植可能な java:comp/envメカニズムを使用してアプリケーションの JNDI ツリー内のデータ・ソースをルックアップするほうが移植性も高いため、こちらをお薦めします。 Web アプリケーションでは、アプリケーションの JNDI ツリー内のデータ・ソースを、java:comp/envを使用してルックアップできます。 これには、<resource-ref>タグを使用して、データ・ソースを指定するエントリをアプリケーションの web.xmlファイル内に入れます。 たとえば、次のようになります。

<resource-ref> <res-ref-name>jdbc/OracleMappedDS</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth>

データ・ソース 4-3

Page 53: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

SQLJ の使用

</resource-ref>

<res-ref-name>では、orion-web.xmlファイル内のデータ・ソースへのマッピングを指定します。 orion-web.xmlファイルには、web.xml内のデータ・ソース名から OC4J のdata-sources.xmlファイル内のデータ・ソース位置のタグへのマッピングを含めます。 たとえば、次のようになります。

<resource-ref-mapping name="jdbc/OracleMappedDS" location="jdbc/OracleDS" />

OC4J の data-sources.xmlファイルには、データ・ソースの位置のプロパティが含まれています。 これにより、次の Java 文を使用して、アプリケーションの JNDI ネームスペース内でデータ・ソースをルックアップできます。

InitialContext ic = new InitialContext();DataSource ds = ic.lookup("java:comp/env/jdbc/OracleMappedDS");

SQLJ の使用の使用の使用の使用SQLJ では、JDBC 接続のかわりに接続コンテキストを使用します。 データ・ソースの使用方法を簡易化するために、SQLJ ランタイムの 12ee.jarライブラリには、JDBC 接続以外に、SQLJ コンテキストを返すデータベース実装も含まれています。 OC4J 固有の手順は、SQLJ の README ファイルを参照してください。 (この README ファイルは、SQLJ DataSource および接続 Bean について説明している HTML ファイルを指します。 SQLJ デモの場所についても、SQLJ の README ファイルを参照してください。) SQLJ の詳細は、『Oracle9i SQLJ 開発者ガイドおよびリファレンス』を参照してください。

4-4    Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 54: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J のためのサーブレット入

5

OC4J のためのサーブレット入門のためのサーブレット入門のためのサーブレット入門のためのサーブレット入門

この章では、Java サーブレットおよび Oracle9iAS Containers for J2EE(OC4J)について説明します。 サーブレットに関する知識をお持ちでない場合、またはサーブレットに関する知識を更新したい場合、この章をお読みください。 サーブレットに関する詳細は、『Oracle9iAS Containers for J2EE Servlet 開発者ガイドおよびリファレンス』を参照してください。

この章には、次のトピックが含まれています。

� サーブレットとは

� 2 つのサンプル・サーブレット

� セッション・トラッキング

� フィルタ

� サーブレットのデバッグ

� サーブレットの詳細

門 5-1

Page 55: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

サーブレットとは

サーブレットとはサーブレットとはサーブレットとはサーブレットとはサーブレットは、OC4J などの J2EE アプリケーション・サーバーで実行される Java プログラムです。 サーブレットは、Java Applet に対応するサーバー・サイドと考えることができます。 サーブレットは、J2EE アプリケーションの 4 つのアプリケーション・コンポーネント・タイプの 1 つです。 他のコンポーネントは、クライアント・サイドに存在する Applet およびアプリケーション・クライアント・プログラム、そしてサーバー・サイドに存在する EJB です。 サーブレットは OC4J の Servlet コンテナによって管理され、EJB は OC4J の EJB コンテナによって管理されます。 これらのコンテナが、OC4J の中核を形成します。

JavaServer Pages(JSP)も、サーバー・サイドのコンポーネントです。 JSP ページは、実行前にコンテナの JSP トランスレータ(これ自体もサーブレット)によってサーブレットに変換されるため、JSP ページも Servlet コンテナによって管理されます。 JSP の詳細は、第 6 章

「OC4J のための JSP 入門」を参照してください。

ほとんどのサーブレットは、HTML テキストを生成します。これは、その後クライアントに送り返されて Web ブラウザに表示されるか、またはアプリケーション内の他のコンポーネントに送信されます。 また、サーブレットは XML を生成し、データをカプセル化したり、データをクライアントまたは他のコンポーネントに送信できます。

Servlet コンテナコンテナコンテナコンテナサーブレットは、静的な main()メソッドを持たないという点で、Java クライアント・プログラムと異なります。 そのため、サーブレットは Servlet コンテナの制御下で実行される必要があります。コンテナによって、サーブレットのメソッドがコールされ、サーブレットの実行時に必要なサービスが提供されるためです。

サーブレット自体は、リクエストの処理およびレスポンスの返却に必要なアクセス・メソッド(GenericServletまたは HttpServletクラスで実装)をオーバーライドします。 たとえば、ほとんどのサーブレットは、HttpServletの doGet()および doPost()メソッド(またはその両方)をオーバーライドして HTTP GETおよび POSTリクエストを処理します。

Servlet コンテナは、サーブレットに対し、HTTP リクエストのヘッダーおよびパラメータなどのプロパティへの簡単なアクセスを提供します。 さらに、サーブレットでは、他の Java API も使用可能です。たとえば、データベースにアクセスするための JDBC、リモート・オブジェクトをコールするための RMI、または非同期メッセージングを実行する JMS、さらにその他多くの Java および J2EE サービスがあります。

パフォーマンスパフォーマンスパフォーマンスパフォーマンスサーブレットは Java プログラミング言語で作成されているため、Java Virtual Machine およびサーブレットをサポートしている Web サーバーの存在するあらゆるプラットフォームでサポートされます。 サーブレットは、再コンパイルせずに様々なプラットフォームで使用可能で、サーブレットと、グラフィック、音声およびその他のデータなどのファイルをパッケージにして完全な Web アプリケーションを作成できます。 これにより、アプリケーション開発が非常に簡単になります。

5-2 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 56: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

サーブレットとは

また、別のアプリケーション・サーバー用に開発されたサーブレット・ベースのアプリケーションを、少ない手間で OC4J に移植できます。 アプリケーションが、J2EE 準拠のアプリケーション・サーバー用に開発されたものである場合、移植の手間はほとんどかかりません。

サーブレットは、サーバー・サイド・インクルードまたは CGI スクリプトなどの、これまでの動的 HTML の生成手段より大幅に優れています。 いったんサーブレットがメモリーにロードされると、1 つの軽量なスレッドで稼動できます。しかし、CGI スクリプトは、各リクエストに対して、別々のプロセスにロードされる必要があります。

図 5-1 に、サーブレットおよびオプションのサーブレット・フィルタと、Servlet コンテナ、および Web ブラウザなどのクライアントとの関連を示します。 Web リスナーが Oracle HTTP Server(powered by Apache)の場合、OC4JServlet コンテナへの接続は、mod_proxyモジュールによって行われます。

図図図図 5-1 サーブレットおよびサーブレットおよびサーブレットおよびサーブレットおよび Servlet コンテナコンテナコンテナコンテナ

OC4J のためのサーブレット入門 5-3

Page 57: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

2 つのサンプル・サーブレット

2 つのサンプル・サーブレットつのサンプル・サーブレットつのサンプル・サーブレットつのサンプル・サーブレットサーブレットとそのコーディング方法を理解するには、単純なサーブレットの例を参照するのが一番効率的です。 この項では、2 つのサーブレットのコードを示します。コードには、コメントが付いています。 わかりやすくするために、コードの各セクションの隣に、番号を振ったコールアウトを示し、各番号のセクションに対する説明をコード例の下に示しています。

Hello Worldここでも、"Hello World" デモを使用します。 これは、サーブレット作成の際の基本的なフレームワークを示します。 このサーブレットは、クライアントに "Hi There!" と出力します。

import java.io.*; // 1. (first comment)import javax.servlet.*;import javax.servlet.http.*;

public class HelloWorldServlet extends HttpServlet { // 2.

public void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 3. response.setContentType("text/html"); // 4.

ServletOutputStream out = resp.getOutputStream(); // 5. out.println("<html>"); // 6. out.println("<head><title>Hello World</title></head>"); out.println("<body>"); out.println("<h1>Hi There!</h1>"); out.println("</body></html>"); // 7. }}

HelloWorldServlet に関するコメントに関するコメントに関するコメントに関するコメント1. どのようなサーブレットを作成する場合でも、 低、これらのパッケージをインポート

する必要があります。 SQL 操作または Oracle JDBC Drivers をサポートする場合には、他のパッケージも必要です。

2. 作成するサーブレット・クラスは HttpServletクラスを拡張しており、これによりサーブレットが使用するメソッドが実装されます。 特定のサーブレット実装で必要なメソッドはオーバーライドします。

3. ここでの doGet()メソッドは、HTTP の GETリクエストを処理する HttpServletクラスのメソッドをオーバーライドします。 ほとんどの HttpServletメソッドと同様、doGet()は、パラメータとしてリクエストおよびレスポンス・オブジェクトを使用しま

5-4 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 58: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

2 つのサンプル・サーブレット

す。 この例では、入力(つまりリクエスト)データを必要としないため、リクエスト・オブジェクト(req)でメソッドはコールされません。

4. レスポンス・オブジェクトで setContentType()メソッドをコールし、レスポンス・コンテンツの MIME タイプをヘッダーに設定します。 この例では、サーブレットが生成するタイプに合せて text/htmlです。

5. サーバーの出力をクライアントに返すライターを取得するには、responseオブジェクトを使用します。 また、レスポンス・オブジェクトから PrintWriterを取得することも可能です。

6. コードの残りの部分では、クライアントの Web ブラウザがレスポンスを取得したときに出力する HTML を生成します。 これは、ヘッダー 1(<h1>)書式で "Hello World" と表示する単純な Web ページを作成するためのコードと同じ HTML です。

7. bodyおよび htmlタグをクローズして、生成中のページをクローズします。

このサーブレットを OC4J で使用するには、テキスト・エディタでHelloWorldServlet.javaという名前のファイルにこれを入力し、$J2EE_HOME/default-web-apps/WEB-INF/classesディレクトリに保存します。 これは、コンテナがデフォルトのアプリケーションのサーブレットを探す場所です。 次に、Java 1.3.x 準拠のコンパイラを使用してサーブレットをコンパイルします。

% javac HelloWorldServlet.java

OC4J が起動中であることを確認したら、このサーブレットを実行し、Web ブラウザで出力を確認できます。 URL を入力します。

http://<hostname>:<port>/servlet/HelloWorldServlet

<hostname>は OC4J サーバーが稼動しているホスト名を示します。<port>は OC4J Web リスナーのポートで、デフォルトは 80 です。

自動コンパイル自動コンパイル自動コンパイル自動コンパイルテスト開発をより簡単にするには、<application_name>/WEB-INF/classesディレクトリ内のサーブレット・コード用の OC4J 自動コンパイル機能を使用します。 値development="true"を global-web-application.xml構成ファイルの <orion-web-app>タグで設定します。 たとえば、次のようになります。

<orion-web-app jsp-cache-directory="./persistence" servlet-webdir="/servlet" development="true">...

OC4J のためのサーブレット入門 5-5

Page 59: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

2 つのサンプル・サーブレット

このファイルは、$J2EE_HOMEディレクトリ内の configディレクトリにあります。 サーブレット・ソースを変更および保存するたびに、OC4J サーバーはサーブレットをコンパイルおよび再デプロイします。 また、development="true"で、web.xmlファイルを変更および保存すると、サーバーはアプリケーションを再デプロイします。

リクエストおよびレスポンス・オブジェクトリクエストおよびレスポンス・オブジェクトリクエストおよびレスポンス・オブジェクトリクエストおよびレスポンス・オブジェクトdoGet()および doPost()などの HttpServletメソッドは、HttpServletRequestオブジェクトおよび HttpServletResponseオブジェクトという 2 つのパラメータを取ります。 Servletコンテナは、これらのオブジェクトをサーブレットに渡し、クライアント、フィルタ・チェーン内の次のサーブレット、または EJB などの別のサーバー・オブジェクトに渡すレスポンスを受信します。

リクエストおよびレスポンス・オブジェクトは、効率的なサーブレット・コードを作成するためのメソッドをサポートしています。 前の例では、レスポンスからストリーム・ライター・オブジェクトを取得し、これを使用してレスポンス・ストリームに文を書き込めることを示しました。

GetEmpInfo サーブレットサーブレットサーブレットサーブレットHelloWorldServletの例では、 小で、ほとんど何も行わないサーブレットを示しました。 しかし、サーブレットの利点は、データベースからデータを取得できることです。 サーブレットは動的 HTML を生成可能です。つまり、サーブレットはデータベースから情報を取得し、クライアントに送り返すことができます。

もちろん、サーブレットでは、HTTP リクエストで渡された情報に基づき、データベースを更新することも可能です。

次の例では、サーブレットはクライアント(Web ブラウザ)から情報を取得し、データベースへの問合せを行ってリクエスト・データに基づく情報を取得しています。

サーブレットは、クライアントから様々な方法で情報を取得できますが、この例では、HTTP リクエストから問合せ文字列を読み込むという一般的な方法を使用しています。

HTML フォームフォームフォームフォームWeb ブラウザは、OC4J Web リスナーを通じて処理されるページ内のフォームにアクセスします。 まず、次のテキストをファイルに入力します。 次に、ファイルに EmpInfo.htmlという名前を付けます。

<html>

<head><title>Query the Employees Table</title></head>

<body><form method=GET ACTION="/servlet/GetEmpInfo">

5-6 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 60: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

2 つのサンプル・サーブレット

The query is<br>SELECT LAST_NAME, EMPLOYEE_ID FROM EMPLOYEES WHERE LAST NAME LIKE ?.<p>

Enter the WHERE clause ? parameter (use % for wildcards).<br>Example: 'S%':<br><input type=text name="init"><p><input type=submit></form>

</body></html>

その後、このファイルを $J2EE_HOME/default-web-appsディレクトリに保存します。

サーブレットサーブレットサーブレットサーブレット前述の HTML ページからコールされるサーブレットは、問合せ文字列から入力を取得します。 入力は、SELECT 文中の WHERE 句の完了です。 その後、サーブレットはこの入力を追加してデータベースへの問合せを完了します。 このサーブレットの複雑な部分は、データ・サーバーに接続し、問合せ行を取得するために必要な JDBC コードに起因しています。 JDBCの知識をお持ちでない場合、『Oracle9i JDBC 開発者ガイドおよびリファレンス』を参照してください。

次に、サーブレットのコードを示します。

import javax.servlet.*;import javax.servlet.http.*;import javax.naming.*; //1. (see comments below)import javax.sql.*; // 2.import oracle.jdbc.*;

public class GetEmpInfo extends HttpServlet {

DataSource ds = null; Connection conn = null;

public void init() throws ServletException { // 3. try { InitialContext ic = new InitialContext(); // 4.

注意注意注意注意 : この例をセットアップした場合、OC4J サーバーが Web ページ・サーバーを兼ねています。 本番アプリケーションでは、Oracle9iAS パッケージの一部である Oracle HTTP Server(powered by Apache)を使用して Web ページを処理することをお願いします。

OC4J のためのサーブレット入門 5-7

Page 61: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

2 つのサンプル・サーブレット

ds = (DataSource) ic.lookup("java:comp/env/jdbc/OracleDS1"); // 5. conn = ds.getConnection(); // 6. } catch (SQLException se) { // 7. throw new ServletException(se); } catch (NamingException ne) { // 8. throw new ServletException(ne); } }

public void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String queryVal = req.getParameter("queryVal"); // 9. String query = //10. "select last_name, employee_id from employees " + "where last_name like " + queryVal;

resp.setContentType("text/html");

PrintWriter out = resp.getWriter(); out.println("<html>"); out.println("<head><title>GetEmpInfo</title></head>"); out.println("<body>");

try { Statement stmt = conn.createStatement(); //11. ResultSet rs = stmt.executeQuery(query); //12.

for (int count = 0; ; count++ ) { //13. if (rs.next()) { out.println(rs.getString(1) + "&nbsp;&nbsp;&nbsp;" + rs.getInt(2) + "<br>"); } else { out.println("<h3>" + count + " rows retrieved</h3>"); break; } } rs.close(); //14. stmt.close();} catch (SQLException se) { //15. se.printStackTrace(out); }

5-8 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 62: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

2 つのサンプル・サーブレット

out.println("</body></html>"); }

public void destroy() { //16. try { conn.close(); } catch (SWLException ignored) { } }

}

このファイルを $J2EE_HOME/default-web-application/WEB-INF/classes/ディレクトリに保存します。

GetEmpInfo に関するコメントに関するコメントに関するコメントに関するコメント1. JNDI API をサポートするために、これらのパッケージをインポートします。

2. これらのパッケージは、SQL および Oracle JDBC Drivers をサポートします。

3. この例では、HttpServlet init()メソッドをオーバーライドし、データ・ソースをルックアップし、データ・ソースを使用してデータベース接続を取得します。

4. 初期 JNDI コンテキストを取得します。

5. OracleDS1という名前のデータ・ソースをルックアップします。 このデータ・ソースは、$J2EE_HOME/ config/data-sources.xmlファイルで定義されています。

6. データ・ソースを使用して、データベースへの接続を取得します(data-sources.xml構成ファイル内の <location>タグ値 OracleCoreDSで指定されています)。

7. これらのルックアップおよび SQL 操作は、JNDI ネーミングまたは SQL エラーを捕捉するために、try...catchシーケンスで実行されます。

8. JNDI ネーミング例外を捕捉し、ServletExceptionとしてスローします。

9. HTML フォームから、リクエスト・ヘッダーで渡されたパラメータを受け取ります。

10. WHERE 句のパラメータを使用して SQL の問合せを組み立てます。

11. 文オブジェクトを開きます。

12. JDBC の ResultSetオブジェクトを開きます。 これにより、文が問合せを実行して結果セットを返します。結果セットは、空の場合もありますが、そうでなければ問合せを満たす行がすべて含まれます。

13. 結果セットの行をループします。 forループは、 後の行が取得された後、break文で終了します。 結果セット・インスタンスの getString()および getInt()メソッドを使

OC4J のためのサーブレット入門 5-9

Page 63: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

2 つのサンプル・サーブレット

用して結果を出力します。 結果セットの getXXX()メソッドの詳細は、『Oracle9i JDBC開発者ガイドおよびリファレンス』を参照してください。

14. 結果セット、文および接続を閉じます。

15. 接続エラーまたは table-not-found エラーなど、SQL 例外がある場合は捕捉します。

16. destroy()メソッドにより、データベース接続を閉じます。

実行の仕組み実行の仕組み実行の仕組み実行の仕組みブラウザから EmpInfo.htmlを起動すると、ブラウザ・ウィンドウに次のように表示されます。

フォームに 'S%'と入力し、「「「「Submit Query」」」」をクリックすると、GetEmpInfoサーブレットがコールされ、次のような結果が表示されます。

5-10 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 64: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

2 つのサンプル・サーブレット

出力の改善出力の改善出力の改善出力の改善 GetEmpInfoサーブレットの出力は、ほとんど書式化されていません。 しかし、サーブレットは HTML を生成するため、出力の外見を改善することができます。 Java のfor文の前に HTML の table文を追加し、forの out.println()コードを、HTML テーブル行を生成する out.println()コールに置換します。 次に、この方法の 1 例を示します。

out.println("<table border=1 width=50%>");out.println("<tr><th width=75%>Last Name</th><th width=25%>Employee " + ID</th></tr>");

for (int count = 0; ; count++ ) { if (rs.next()) { out.println ("<tr><td>" + rs.getString(1) + "</td><td>" + rs.getInt(2) + "</td></tr>"); } else {

注意注意注意注意 : この例は、Oracle データベースに HR スキーマがインストールされている場合のみ使用可能です。 このスキーマは、サンプルの Common Schemas セットの一部です。

OC4J のためのサーブレット入門 5-11

Page 65: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

セッション・トラッキング

out.println("</table><h3>" + count + " rows retrieved.</h3>"); break; }}

この簡単な変更により、次のように、ブラウザ・ウィンドウへの出力が改善されます。

セッション・トラッキングセッション・トラッキングセッション・トラッキングセッション・トラッキングサーブレット、およびその JSP 関連物は、ショッピング・カートなどのアプリケーションで広く使用されるようになりました。 たとえば、顧客は Web サイトで商品を探し、その商品を詳細に解説したページに移動し、場合によっては商品の購入を決定して買物かごに入れます。 後に、クレジット・カード情報および配送先を入力し、会計を済ませます。 このようなサイトを実装するには、サーバーは、顧客が Web サイト内でページを移動するたびに、顧客の識別情報を追跡できる必要があります。

これを行うためにいくつかのメカニズムが開発されました。なかでも も広く使用されているのは、Cookie です。 Cookie は、ただの小さな情報で、サーバーがクライアントに送り返すサーバー・セッション ID が含まれます。 その後、クライアント(たとえば Web ブラウザ)は、新しい HTTP リクエストのたびに Cookie をサーバーに返します。 つまり、Cookieは、クライアントが、ステートレスな HTTP プロトコルを使用していても、サーバー・セッションと同期化してステートフルな情報を維持できるようにします。

5-12 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 66: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

セッション・トラッキング

OC4J Servlet コンテナでは、Cookie 以外に、クライアントからサーバーへの通信用に、 近のサーブレット仕様で定義されている HttpSessionオブジェクトをサポートしています。 HTTP セッション・オブジェクトは、Web アプリケーションにのみスコープされます。 つまり、セッション・オブジェクトを使用して、アプリケーション間、または異なるクライアント間でデータを共有することはできません。 このような共有を行うには、データをデータベースまたはその他の場所に格納する必要があります。

セッション・トラッキングの例セッション・トラッキングの例セッション・トラッキングの例セッション・トラッキングの例次の SessionServletコードでは、HttpSessionオブジェクトを確立し、そのオブジェクトを使用して、セッションがアクセスされた回数を記録するカウンタを維持するサーブレットを実装します。 また、このサーブレットは、リクエストおよびセッション・オブジェクトから取得した多数の情報を出力します。これは、HttpServletRequestおよび HttpSessionクラスの一部の機能を示すためです。

import java.io.*;import java.util.Enumeration;

import javax.servlet.*;import javax.servlet.http.*;import java.util.Date;

public class SessionServlet extends HttpServlet {

public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

HttpSession session = req.getSession(true); // 1.

res.setContentType("text/html"); PrintWriter out = res.getWriter();

out.println("<head><title> " + "SessionServlet Output " + "</title></head><body>"); out.println("<h1> SessionServlet Output </h1>"); Integer ival = (Integer) session.getAttribute("sessionservlet.counter"); // 2. if (ival==null) { ival = new Integer(1); } else { ival = new Integer(ival.intValue() + 1); }

session.setAttribute("sessionservlet.counter", ival); // 3.

out.println(" You have hit this page <b>" +

OC4J のためのサーブレット入門 5-13

Page 67: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

セッション・トラッキング

ival + "</b> times.<p>"); // 4. out.println("Click <a href=" + res.encodeURL(HttpUtils.getRequestURL(req).toString()) + ">here</a>"); // 5. out.println(" to ensure that session tracking is working even " + "if cookies aren't supported.<br>"); out.println("Note that by default URL rewriting is not enabled" + " due to its large overhead.");

out.println("<h3>Request and Session Data</h3>"); // 6. out.println("Session ID in Request: " + req.getRequestedSessionId()); out.println("<br>Session ID in Request is from a Cookie: " + req.isRequestedSessionIdFromCookie()); out.println("<br>Session ID in Request is from the URL: " + req.isRequestedSessionIdFromURL()); out.println("<br>Valid Session ID: " + req.isRequestedSessionIdValid());

out.println("<h3>Session Data</h3>"); // 7. out.println("New Session: " + session.isNew()); out.println("<br> Session ID: " + session.getId()); out.println("<br> Creation Time: " + new Date(session.getCreationTime())); out.println("<br>Last Accessed Time: " + new Date(session.getLastAccessedTime()));

out.println("</body>"); out.close(); }

public String getServletInfo() { //8. return "A simple session servlet"; }}

SessionServlet に関するコメントに関するコメントに関するコメントに関するコメント1. この行によってセッション・オブジェクトが取得されます。 セッションがまだ作成され

ていない場合、getSession(true)メソッドによって新しいセッションが作成されます。

2. ヒット数は、セッション・オブジェクトから取得されます。 このカウンタは、オブジェクトである必要があります。int型は使用できません。sessionservlet.counterは、このサーブレットによって割り当てられている属性の従来型のキー値にすぎません。

3. 新しい増分ヒット件数を設定します。

4. 結果を出力します。

5-14 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 68: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

セッション・トラッキング

5. サーブレットが URL リライティングを行うためのリンク先。

6. リクエスト・ヘッダーから情報を取得し、出力します。

7. セッションに関するデータを取得し、出力します。

8. getServletInfo()は、サーブレットが行う処理に対して情報を提供する必要がある場合にコンテナがコール可能なメソッドです。 サーブレットは、この GenericServletメソッドをオーバーライドして、コンテナに必要な情報を提供できます。

SessionServlet を Web ブラウザから起動すると、次のようになります。

OC4J のためのサーブレット入門 5-15

Page 69: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

フィルタ

フィルタフィルタフィルタフィルタフィルタを使用して、サーブレットが受信するリクエストの処理、レスポンスの処理、またはその両方を行うことが可能です。 たとえば、アプリケーションで、1 つ以上のサーブレットに対する特定のリクエストには特殊なロギングが必要であったり、サーブレットのクラス全体の出力(レスポンス・オブジェクト)を暗号化する必要がある場合があります。

サーブレットと異なり、フィルタは一般的にはレスポンスを作成しません。 フィルタは、リクエストやレスポンスの変更、またはリクエストやレスポンスに基づいたその他の操作を実行するために使用します。 次のような操作が含まれます。

� サーブレットのコール前のリクエストの検証

� 実際のリクエストまたはレスポンス・オブジェクトをラップする、オブジェクトのカスタム・バージョンを提供することによる、リクエストまたはレスポンス・ヘッダーまたはデータ(またはその両方)の変更

� サーブレットの起動前または完了後、またはその両方での操作の実行(たとえばロギングなど)

� サーブレットのコール後のサーブレットの遮断

� サーブレットへのコールの阻止

javax.servlet.Filterインタフェースが Servlet 2.3 仕様に追加され、アプリケーションでこれらの作業が実行可能になりました。 複数のフィルタをチェーン化し、リクエストまたはレスポンスに対して一連の作業を実行できます。

ロギング・フィルタロギング・フィルタロギング・フィルタロギング・フィルタこの例では、サーブレット・リクエストの処理にかかった時間(ミリ秒単位)をログに記録する単純なフィルタを実装します。 この例では、フィルタはデフォルトのアプリケーションにデプロイされ、各サーブレットまたは JSP 起動時刻のログが、$J2EE_HOME/logディレクトリ内の global-application.logファイルに書き込まれます。 フィルタの結果を見るには、サーブレット・リクエストが処理中であるため、このファイルを別のウィンドウに表示します。 UNIX システムでは、次のコマンドを使用します。

% tail -f $J2EE_HOME/log/global-application.log

LogFilter コードコードコードコード前の例と同様に、ログ・フィルタの実装にもコメントが追加されています。

import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;

5-16 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 70: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

フィルタ

publicclass LogFilter implements Filter { //1. FilterConfig config; ServletContext context;

public void init(FilterConfig config) { //2. this.config = config; context = config.getServletContext(); //3. }

public void destroy() { //4. context.log("Log Filter terminating."); }

public //5. void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { long bef = System.currentTimeMillis(); chain.doFilter(req, res); //6. long aft = System.currentTimeMillis(); HttpServletRequest nreq = (HttpServletRequest) req; context.log("Request from " + nreq.getRequestURI() + ": " + (aft-bef)); }}

LogFilter の例に関するコメントの例に関するコメントの例に関するコメントの例に関するコメント1. このフィルタは、javax.servlet.Filterクラスの、doFilter、initおよび destroyと

いう 3 つのメソッドを実装します。

2. コンテナが起動時に init()メソッドをコールすると、フィルタは構成パラメータを保存します。

3. この例では、構成から ServletContextオブジェクトを取得して、ログ・ファイルへの書込みに使用します。

4. destroy()メソッドを実装する必要があります。 コンテナは、フィルタの終了前にdestroy()をコールするため、ファイル・ハンドルのクローズなどのクリーン・アップ・コードをここに入れます。

5. doFilter()は、パラメータとしてリクエストおよびレスポンス・オブジェクトを取ります。また、リクエストおよびレスポンス・オブジェクト(ラップされている場合もある)をチェーン内の次のフィルタに渡すか、またはチェーンの 後の場合はサーブレットに渡すかコンテナに返すことが可能な FilterChainオブジェクトも、パラメータとして取ります。 コンテナは、ターゲット・サーブレットの処理の前後にフィルタをコールします。

OC4J のためのサーブレット入門 5-17

Page 71: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

フィルタ

6. サーブレット・コンテキストは、フィルタの configオブジェクトから取得されます。

7. このフィルタは単一のものである(チェーンが存在しない)ため、FilterChainパラメータは doFilter()起動で使用されていません。

8. サーブレットの完了後、フィルタはサーブレットの処理にかかった時間(ミリ秒単位)を計算し、その値と、フィルタが適用されるサーブレットを起動した URI をログ・ファイルに書き込みます。

この例のデプロイこの例のデプロイこの例のデプロイこの例のデプロイフィルタは、Web アプリケーションのデプロイメント・ディスクリプタで構成されます。 フィルタをデプロイするには、web.xmlファイルに <filter>タグを作成します。ここで、フィルタの名前を指定し、フィルタを実装する .../WEB-INF/classesディレクトリにクラスを作成します。

この例のフィルタでは、アプリケーションのすべてのサーブレット・リクエストを監視するため、その旨を指定する '/*'というマッピングが必要です。

したがって、このフィルタをデフォルトのアプリケーションでデプロイするには、次の行を$J2EE_HOME/default-web-app/WEB-INF/web.xmlに入力します。

<web-app> ... <filter> <filter-name>log</filter-name> <filter-class>LogFilter</filter-class> </filter> <filter-mapping> <filter-name>log</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ...</web-app>

出力例出力例出力例出力例global-applications.logファイルからのこのサンプルは、このフィルタが生成する出力を示しています。 PrimeSearcherサーブレットはコンテナによって初期化され、数回コールされた後、サーバーはシャットダウンされましたが、その前にコンテナはフィルタのdestroy()メソッドをコールしました。 "Request from..." で始まる行は、フィルタの出力です。

8/1/01 8:50 AM defaultWebApp: 1.0.2.2 Stopped8/1/01 8:50 AM defaultWebApp: PrimeSearcher: init8/1/01 8:50 AM defaultWebApp: 1.0.2.2 Started8/1/01 8:50 AM defaultWebApp: PrimeSearcher: init8/1/01 8:50 AM defaultWebApp: Request from /servlet/PrimeSearcher: 1

5-18 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 72: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

サーブレットのデバッグ

8/1/01 10:10 AM defaultWebApp: Request from /servlet/PrimeSearcher: 18/2/01 5:56 AM defaultWebApp: Request from /servlet/PrimeSearcher: 28/2/01 2:12 PM defaultWebApp: Log Filter done.8/2/01 2:12 PM defaultWebApp: 1.0.2.2 Stopped8/2/01 2:12 PM Stopped (Shutdown executed by admin from 130.35.172.234 (dlsun1497))

フィルタ、フィルタ・チェーンおよびフィルタのデプロイに関する詳細は、『Oracle9iAS Containers for J2EE Servlet 開発者ガイドおよびリファレンス』を参照してください。

サーブレットのデバッグサーブレットのデバッグサーブレットのデバッグサーブレットのデバッグサーブレットをデバッグする も簡単で速い方法は、オラクル社の JDeveloper などの IDEを使用して開発およびテストを行うことです。 JDeveloper の使用方法はこのマニュアルの対象外なので、IDE を使用せずに一時的にサーブレットを開発する場合のヒントをいくつか示します。

インタプリタ・モードでのインタプリタ・モードでのインタプリタ・モードでのインタプリタ・モードでの OC4J の実行の実行の実行の実行OC4J がコンパイルされて実行されている場合、スタック・トレースが発生しても行番号情報を参照できません。 この情報を取得するには、OC4J サーバーをインタプリタ・モードで起動します。 これを行うには、サーバーの起動時に、java.compiler定義の変数を NONEに設定します。 たとえば、次のようにします。

% java -Djava.compiler=NONE -jar orion.jar

println 文の使用文の使用文の使用文の使用IDE を使用せずに開発する場合、出力をファイルまたはクライアントに書き出すために、println文を取込む必要があります。

その他のヒントその他のヒントその他のヒントその他のヒントIDE のコンテキスト外でのサーブレットのデバッグの詳細は、『Oracle9iAS Containers for J2EE Servlet 開発者ガイドおよびリファレンス』を参照してください。

OC4J のためのサーブレット入門 5-19

Page 73: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

サーブレットの詳細

サーブレットの詳細サーブレットの詳細サーブレットの詳細サーブレットの詳細サーブレットの詳細を理解するには、まず、『Oracle9iAS Containers for J2EE Servlet 開発者ガイドおよびリファレンス』を読むことをお薦めします。 このマニュアルでは、OC4J 環境でのサーブレットおよび Web 層アプリケーションの開発に必要な事項を説明しています。

サーブレット API の完全なドキュメントを入手するには、次の Sun 社の Web サイトを参照してください。

http://java.sun.com/j2ee/docs.html

この Web サイトでは、他に、サーブレットに関する幅広いチュートリアル、およびその他の J2EE アプリケーション開発に関する情報を参照できます。

後に、サーブレットを開発し、それを J2EE 互換アプリケーションにデプロイする方法を説明した専門書がいくつか出版されています。 特に、O'Reilly & Associates

(http://www.oreilly.com)および Wrox(http://www.wrox.com)から出版されている書籍は非常に参考になります。

5-20 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 74: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J のた

6

OC4J のためののためののためののための JSP 入門入門入門入門

この章では、Oracle9iAS Containers for J2EE(OC4J)環境における JavaServer Pages(JSP)アプリケーションの実行方法の基礎について説明します。 OC4J がすでにインストール済でベース・サーバーおよび Web サイトが構成されており、また、読者の方に Java プログラミングおよび Web アプリケーション・テクノロジに関する基礎知識があることを前提としています。 この章には簡単な概要が含まれていますが、JSP テクノロジについてはすでに理解されていることが前提になっています。 また、この章では、JSP をサポートする Oracle 追加機能についても説明します。

この章には、次のトピックが含まれています。

� JavaServer Pages テクノロジの概要

� 単純な JSP ページの実行

� JavaBean を起動する JSP ページの実行

� カスタム・タグを使用する JSP ページの実行

� JSP ページをサポートする Oracle 追加機能の概要

Web アプリケーションのデプロイの完全な説明は、2-8 ページの「アプリケーションのデプロイ」を参照してください。

めの JSP 入門 6-1

Page 75: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

JavaServer Pages テクノロジの概要

JavaServer Pages テクノロジの概要テクノロジの概要テクノロジの概要テクノロジの概要この項では、次の内容について、簡単な概要を示します。

� JavaServer Pages テクノロジとは

� JSP の変換およびランタイム・フロー

� JSP の主な利点

� アプリケーション・アーキテクチャ内における JSP

JavaServer Pages テクノロジとはテクノロジとはテクノロジとはテクノロジとはJSP は、J2EE プラットフォームの一部で、Web アプリケーションによって出力されたページの動的コンテンツを生成するための便利な手段として、Sun 社によって提唱されているテクノロジです。 このテクノロジは、Java サーブレット・テクノロジと密接に関連しており、これによって Java コードの断片や、外部 Java コンポーネントへのコールを、Web ページのHTML コードやその他のマークアップ・コード(XML など)内に含めることが可能です。 JSP テクノロジは、ビジネス・ロジック、および、JavaBeans や Enterprise JavaBeans(EJB)にカプセル化された動的機能のフロントエンドとして効果的に機能します。

HTML またはその他のコード内の JSP 構文は、<%...%>構文で囲むことによって指定されます。 これには、いくつかのバリエーションがあります。たとえば、式を指定する<%=...%>、または宣言を指定する <%!...%>などがあります。

JSP ページは、実行前に Java サーブレットに変換され、HTTP リクエストを処理し、同様にレスポンスを他のサーブレットに対して生成します。 JSP テクノロジは、サーブレットのコーディングより便利な手段を備えています。 変換は、通常、オンデマンド、つまりアプリケーションの実行時に行われます。 JSP トランスレータは、通常、URL 内の .jspファイル名拡張子によってトリガーされます。 さらに、Oracle の機能として、SQLJ JSP で使用される.sqljspファイル名拡張子も、JSP トランスレータおよび SQLJ トランスレータをトリガーします。

JSP ページは、サーブレットとの間で完全に相互操作性があります。つまり、JSP は、サーブレットからの出力を含んだり、出力をサーブレットに転送することが可能で、一方、サーブレットは、JSP からの出力を含んだり、JSP に転送することが可能です。

次に、単純な JSP のコード、welcomeuser.jspを示します。

<HTML> <HEAD><TITLE>The Welcome User JSP</TITLE></HEAD> <BODY> <% String user=request.getParameter("user"); %> <H3>Welcome <%= (user==null) ? "" : user %>!</H3> <P><B> Today is <%= new java.util.Date() %>. Have a fabulous day! :-)</B></P> <B>Enter name:</B> <FORM METHOD=get> <INPUT TYPE="text" NAME="user" SIZE=15>

6-2 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 76: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

JavaServer Pages テクノロジの概要

<INPUT TYPE="submit" VALUE="Submit name"> </FORM> </BODY> </HTML>

ユーザーが "Amy" という名前を入力すると、JSP ページにより、次のような出力が生成されます。

Welcome Amy!

Today is Wed Jun 21 13:42:23 PDT 2000. Have a fabulous day! :-)

JSP の変換およびランタイム・フローの変換およびランタイム・フローの変換およびランタイム・フローの変換およびランタイム・フロー図 6-1 に、ユーザーが URL をブラウザで指定して JSP ページを実行した際の実行のフローを示します。

.jspファイル名拡張子が使用されているため、次のステップは自動的に発生します。

1. JSP トランスレータが起動され、Hello.jspを変換してファイル Hello.javaを生成します。 (.sqljspファイルの場合、Hello.sqljが生成され、SQLJ トランスレータが SQLJ を変換するために起動されて Hello.javaを生成します。)

2. Java コンパイラが起動され、Hello.classを作成します。

3. Hello.classが JSP ランタイム・ライブラリを使用してサーブレットとして実行されます。

4. Helloクラスは JDBC または SQLJ のいずれか該当するほうを通じてデータベースにアクセスし、出力をブラウザに送信します。

OC4J のための JSP 入門 6-3

Page 77: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

JavaServer Pages テクノロジの概要

図図図図 6-1 JSP の変換およびランタイム・フローの変換およびランタイム・フローの変換およびランタイム・フローの変換およびランタイム・フロー

JSP の主な利点の主な利点の主な利点の主な利点ほとんどの場合、サーブレットのかわりに JSP を使用すると、 低 2 つの一般的な利点があります。

� 容易なコーディング容易なコーディング容易なコーディング容易なコーディング : JSP 構文は、動的 Web ページのコーディングを行う簡便な手段を提供します。通常、同等のサーブレット・コードと比較してかなり少ないコードを必要とします。 また、JSP トランスレータにより、標準 JSP/ サーブレット・インタフェースの実装や HTTP セッションの作成など、一部のサーブレット・コーディングのオーバーヘッドが自動的に処理されます。

� 静的コンテンツと動的コンテンツの分離静的コンテンツと動的コンテンツの分離静的コンテンツと動的コンテンツの分離静的コンテンツと動的コンテンツの分離 : JSP テクノロジにより、静的ページのプレゼンテーションを決定する HTML コードと、ビジネス・ロジックを処理して動的コンテンツを提供する Java コードの間の開発の手順が分離されます。 これにより、メンテナンスの作業を、HTML に習熟していて Java には詳しくないプレゼンテーションおよびレイアウトの専門家と、Java に習熟していて HTML には詳しくないコード専門家とに分担させることが可能です。 一般的な JSP では、ほとんどの Java コードおよびビジネス・ロジックは、JSP ページに埋め込まれている断片内には存在せず、JSP ページから起動される JavaBeans または Enterprise JavaBeans に存在します。

6-4 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 78: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

JavaServer Pages テクノロジの概要

アプリケーション・アーキテクチャ内におけるアプリケーション・アーキテクチャ内におけるアプリケーション・アーキテクチャ内におけるアプリケーション・アーキテクチャ内における JSPJSP は、Model-View-Controller などの一般的なアプリケーション・アーキテクチャに適しています。 このアーキテクチャでは、コントローラ・サーブレットまたは JSP ページがHTTP リクエストのフロントエンド・ハンドラとして機能し、JavaBeans または Enterprise JavaBeans が、バックエンド・データ・モデルを提供してビジネス・ロジックを処理します。 JSP のプレゼンテーション(コントローラとして機能するページと同じ場合と異なる場合とがある)がデータの 終的なビューを提供します。図 6-2 に、このアーキテクチャを示します。

図図図図 6-2 Model-View-Controller アーキテクチャにおけるアーキテクチャにおけるアーキテクチャにおけるアーキテクチャにおける JSP

OC4J のための JSP 入門 6-5

Page 79: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

単純な JSP ページの実行

単純な単純な単純な単純な JSP ページの実行ページの実行ページの実行ページの実行この項では、6-2 ページの「JavaServer Pages テクノロジとは」で使用した JSP の例の実行方法を示します。次のことを前提としています。

� 機能している JDK(1.3.x)が存在すること

� OC4J ソフトウェアがインストール済であること

� OC4J Web サーバーが起動されていること

Web アプリケーションをすばやくデプロイする手順の詳細は、2-3 ページの「JSP およびサーブレットのクイック・スタート」を参照してください。

次のステップについて説明します。

� JSP の作成 —welcomeuser.jsp

� OC4J ディレクトリ構造への welcomeuser.jsp の配置

� welcomeuser.jsp の実行

JSP の作成の作成の作成の作成 —welcomeuser.jsp6-2 ページの「JavaServer Pages テクノロジとは」のサンプル・コードをファイルにコピーまたは入力し、welcomeuser.jspという名前で保存します。

OC4J ディレクトリ構造へのディレクトリ構造へのディレクトリ構造へのディレクトリ構造への welcomeuser.jsp の配置の配置の配置の配置OC4J をダウンロードおよびインストールすると、OC4J のホーム・ディレクトリの下にデフォルトの Web アプリケーション・ディレクトリが作成されます。

現在、OC4J のホーム・ディレクトリおよびデフォルトの Web アプリケーション・ディレクトリは、それぞれ次のようになっています(UNIX 構文を使用)。

j2ee/home

j2ee/home/default-web-app

welcomeuser.jspをデフォルトの Web アプリケーション・ディレクトリ、たとえばj2ee/home/default-web-app/examples/jspディレクトリに入れます。

welcomeuser.jsp の実行の実行の実行の実行OC4J でアプリケーションを実行するための URL を指定する際、次の点に注意してください。

� デフォルトのリスナーは Oracle HTTP Server です。

� OC4J のデフォルトのリスナー・ポートは 7777 です。

6-6 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 80: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

単純な JSP ページの実行

� URL パスは、デフォルトの Web アプリケーション・ディレクトリの下のディレクトリ・パスにマッピングされます。

たとえば、welcomeuser.jspを j2ee/home/default-web-app/examples/jspディレクトリに入れ、デフォルトのポートを使用している場合、次の URL でページを実行できます。

http://<apache_host>:7777/j2ee/examples/jsp/welcomeuser.jsp

この例では、OC4J およびアプリケーションがインストールされているシステム名に<apache_host>を使用しています。

初めてページを実行すると、次のような出力が表示されます。

名前(Amy など)を送信すると、ページが更新されます。

OC4J のための JSP 入門 6-7

Page 81: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

JavaBean を起動する JSP ページの実行

JavaBean を起動するを起動するを起動するを起動する JSP ページの実行ページの実行ページの実行ページの実行前述のとおり、JSP テクノロジは、ビジネス・ロジック、および、JavaBeans にカプセル化された動的機能のフロントエンドとして効果的に機能します。 実際、優れた設計の JSP アプリケーションのほとんどは、JSP ページで比較的少ない Java コードしか使用していません。そのかわり、Java ロジックおよびビジネス・ロジックは、ページから起動される JavaBeansなどのその他のコンポーネント内に含まれます。 この項では、JavaBean およびそれをコールする JSP ページのコードを示し、OC4J 内での適切なファイルの場所、およびアプリケーションの実行方法を説明します。

この項では、次のステップについて説明します。

� JSP の作成 —usebean.jsp

� JavaBean の作成 —NameBean.java

� OC4J ディレクトリ構造への usebean.jsp および NameBean.class の配置

� usebean.jsp の実行

JSP の作成の作成の作成の作成 —usebean.jspこの項では、JavaBean を起動するための標準の JSP タグである useBeanタグを使用するJSP ページのソースを示します。 コードを実行するには、これを usebean.jspというファイルにコピーまたは入力します。 詳細は、コードの後の注意を参照してください。

<%@ page import="beans.NameBean" %>

<jsp:useBean id="pageBean" class="beans.NameBean" scope="page" /><jsp:setProperty name="pageBean" property="*" />

<HTML><HEAD> <TITLE> The Use Bean JSP </TITLE> </HEAD><BODY BGCOLOR=white>

<H3> Welcome to the Use Bean JSP </H3>

<% if (pageBean.getNewName().equals("")) { %> I don't know you. <% } else { %> Hello <%= pageBean.getNewName() %> !<% } %>

<P>May we have your name?<FORM METHOD=get><INPUT TYPE=TEXT name=newName size = 20><INPUT TYPE=SUBMIT VALUE="Submit name"></FORM></BODY></HTML>

6-8 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 82: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

JavaBean を起動する JSP ページの実行

コードに関する注意コードに関する注意コードに関する注意コードに関する注意

� コードの 1 行目は、pageディレクティブと呼ばれる JSP 構成メンバーで、JavaBean クラスをインポートします。

� 標準の useBeanタグは、JavaBean をインスタンス化し、パッケージ、クラス名およびインスタンス名を指定します。

� pageのスコープ設定により、JavaBean インスタンスが、作成元の JSP ページからのみアクセス可能であることを指定します。

� 標準の setPropertyタグは、指定された Bean インスタンスの 1 つ以上のプロパティの値を設定します。 *というプロパティ設定により、複数の HTTP リクエスト・パラメータに渡る反復が実行されます。Bean プロパティ名をリクエスト・パラメータ名と一致させ、Bean プロパティ値を、対応するリクエスト・パラメータ値に基づいて設定します。 この場合、唯一の Bean プロパティは newNameです。 これは、ページ内の HTMLフォーム・コードで指定されている newName HTTP リクエスト・パラメータに対応します。

JavaBean の作成の作成の作成の作成 —NameBean.java次に、JavaBean クラス NameBeanのコードを示します。 ここで指定するパッケージ名は、JSP ページの pageディレクティブおよび useBeanタグと一貫している必要があります。 JSP ページを実行するには、このコードを NameBean.javaというファイルにコピーまたは入力し、コンパイルします。 このファイルは、パッケージ名に基づき、beansサブディレクトリ内に存在する必要があります。

package beans;

public class NameBean {

String newName="";

public void NameBean() { }

public String getNewName() { return newName;

注意注意注意注意 :

� pageディレクティブには、他にも多くの用途があり、また、これ以外にも様々なディレクティブが存在します。

� 他の使用可能なスコープには、request、sessionおよびapplicationがあります。

useBeanタグと併せて使用するための setPropertyタグ以外に、標準の getPropertyタグが存在します。

OC4J のための JSP 入門 6-9

Page 83: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

JavaBean を起動する JSP ページの実行

} public void setNewName(String newName) { this.newName = newName; }}

OC4J ディレクトリ構造へのディレクトリ構造へのディレクトリ構造へのディレクトリ構造への usebean.jsp およびおよびおよびおよび NameBean.class の配置の配置の配置の配置この章の前述の JSP の例と同様に、usebean.jspをj2ee/home/default-web-app/examples/jspディレクトリに入れることが可能です。

JavaBean クラス(NameBean.class、およびオプションで NameBean.java)のファイルは、WEB-INFディレクトリ内に入れる必要があります。これは、標準的な J2EE Web アプリケーション・メカニズムです。 この場合、具体的には次のようになります(UNIX の場合。Windows NT の場合も同様)。

j2ee/home/default-web-app/WEB-INF/classes/beans

WEB-INF/classesおよび WEB-INF/libディレクトリ、およびサブディレクトリは、自動的にシステムのクラスパスに含まれます。 この例では、NameBean.classは beansサブディレクトリ内に存在する必要があります。これがコードで指定されているパッケージ名であるためです。 beansサブディレクトリを作成する必要があります。

usebean.jsp の実行の実行の実行の実行この章の前述の例と同様、usebean.jspは default-web-app/examples/jspディレクトリ内に存在するため、同様の URL を使用してブラウザから実行します。 この例では、前の例と同様、OC4J およびアプリケーションがインストールされているシステム名に<apache_host>を使用しています。

http://<apache_host>:7777/j2ee/examples/jsp/usebean.jsp

これは、OC4J Web サーバーがまだ稼動中であることを前提としています。

注意注意注意注意 : WEB-INF/classesディレクトリは、個別のクラス・ファイルのディレクトリ・ツリー(パッケージ・ネーミングによる)用です。 WEB-INF/libディレクトリは、クラス・ライブラリを含んでいる JAR または ZIP ファイル用です。

6-10 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 84: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

JavaBean を起動する JSP ページの実行

このページを実行すると、まず、次のような出力が表示されます。

名前(Ike など)を送信すると、次のようにページが更新されます。 別の名前を入力する場合のために、プロンプトが表示されています。

OC4J のための JSP 入門 6-11

Page 85: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

カスタム・タグを使用する JSP ページの実行

カスタム・タグを使用するカスタム・タグを使用するカスタム・タグを使用するカスタム・タグを使用する JSP ページの実行ページの実行ページの実行ページの実行Sun 社の JavaServer Pages 仕様には、様々な作業の実行用に、JSP ページで使用するための標準タグが含まれています。 たとえば、6-8 ページの「JavaBean を起動する JSP ページの実行」で使用した useBeanタグがあります。 また、JSP 1.1 仕様では、ベンダーがカスタム・タグ・ライブラリを移植可能な状態で提供できるようにするための標準フレームワークの概要も示されています。

OC4J JSP は、いくつかの分野にわたる機能を持つ移植可能なタグ・ライブラリを提供しています。これらの分野には、データベース・アクセス、XML/XSL 処理、電子メール、ファイルのアップロードとダウンロード、およびプログラミングの利便性などがあります。

この項では、Oracle SQL タグ・ライブラリのタグを使用して、データベースにアクセスし、問合せを行い、結果をブラウザに出力する例を示します。

次に、JSP タグ・ライブラリの使用手順を示します。

� 各タグ・ライブラリには、タグ・ライブラリ・ディスクリプタ(TLD)ファイルが存在します。 このファイルを、/WEB-INFディレクトリに入れます。

� 各タグは、サポート・クラスを必要とします。 低、タグのセマンティックを実行するコードを持つタグ・ハンドラ・クラスが必要で、可能であれば追加の処理ロジックを持つ tag-extra-info クラスを使用します。 これらのクラスを、Web アプリケーションから使用可能にします。 これを行う標準的な方法は、個別のクラスなら/WEB-INF/classesディレクトリに入れ、ライブラリなら /WEB-INF/libディレクトリに入れます。

� 標準の taglibディレクティブを、TLD ファイルの場所と名前、およびコードで使用するタグ接頭辞を指定する JSP コードに入れます。

この項では、次のステップについて説明します。

� JSP ページの作成 —sqltagquery.jsp

� OC4J ディレクトリ構造への sqltagquery.jsp の配置

� タグ・ライブラリのサポートのためのファイルのセットアップ

� sqltagquery.jsp の実行

6-12 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 86: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

カスタム・タグを使用する JSP ページの実行

JSP ページの作成ページの作成ページの作成ページの作成 —sqltagquery.jspこの項では、OC4J 提供の SQL タグを使用して、データベース接続を開き、簡単な問合せを実行し、結果を HTML 表として出力し、接続を閉じる JSP ページのソースを示します。 コードを実行するには、これを sqltagquery.jspというファイルにコピーまたは入力します。 詳細は、コードの後の注意を参照してください。

<%@ taglib uri="/WEB-INF/sqltaglib.tld" prefix="sql" %><HTML> <HEAD> <TITLE>The SQL Tag Query JSP</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <HR> <sql:dbOpen URL="jdbc:oracle:thin:@dbasehost:5521:orcl" user="scott" password="tiger" connId="con1"> </sql:dbOpen> <sql:dbQuery connId="con1"> select * from EMP </sql:dbQuery> <sql:dbClose connId="con1" /> <HR> </BODY></HTML>

コードに関する注意コードに関する注意コードに関する注意コードに関する注意

� コードの 初の行は、SQL タグ・ライブラリ用の TLD ファイルの名前と場所を指定する標準の taglibディレクティブで、これによってファイルを入れた場所を指定します。 または、/WEB-INF/web.xmlファイル内の taglib-uriおよび taglib-location仕様を通じて指定するショートカット URI を使用することも可能です。

� このページは、Oracle JDBC Thin Driver を使用して、SID が orclであるデータベースに、システム dbasehostのポート 5521 を通じて、パスワード tigerを使用してscottとして接続します。 このページを実行する場合は、コードを更新して適切なユーザー名、パスワードおよび URL に置換します。

OC4J ディレクトリ構造へのディレクトリ構造へのディレクトリ構造へのディレクトリ構造への sqltagquery.jsp の配置の配置の配置の配置この章の前述の JSP の例と同様に、sqltagquery.jspをj2ee/home/default-web-app/examples/jspディレクトリに入れることが可能です。

OC4J のための JSP 入門 6-13

Page 87: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

カスタム・タグを使用する JSP ページの実行

タグ・ライブラリのサポートのためのファイルのセットアップタグ・ライブラリのサポートのためのファイルのセットアップタグ・ライブラリのサポートのためのファイルのセットアップタグ・ライブラリのサポートのためのファイルのセットアップsqltaglib.tldを /WEB-INFディレクトリに入れ、ojsp.jar、ojsputil.jar、xmlparserv2.jarおよび xsu12.jarを J2EE libディレクトリに入れます。 続けて OC4Jのデフォルト Web アプリケーション・ディレクトリを使用します。次のようになります。

� sqltaglib.tld:

j2ee/home/default-web-app/WEB-INF

j2ee/home/tldディレクトリから、タグ・ライブラリをデフォルトの Web アプリケーションまたはご自分のアプリケーションの WEB-INFディレクトリに移動します。

� ojsp.jar、ojsputil.jar、xmlparserv2.jarおよび xsu12.jar:

j2ee/home/lib

ここでは、JAR ファイルは他のアプリケーションからも使用可能です。

タグ・ハンドラおよび tag-extra-info クラス・ファイルは、ojsputil.jarに存在します。 j2ee/home/libディレクトリは自動的にクラスパスに含まれています。

sqltagquery.jsp の実行の実行の実行の実行この章の前述の例と同様、sqltagquery.jspは default-web-app/examples/jspディレクトリ内に存在するため、同様の URL を使用してブラウザから実行します。 この例では、前の例と同様、OC4J およびアプリケーションがインストールされているシステム名に<apache_host>を使用しています。

http://<apache_host>:7777/j2ee/examples/jsp/sqltagquery.jsp

注意注意注意注意 : 箇条書き 2 点目の JAR ファイルは必須であるため、OC4J のインストール時に自動的に j2ee/home/libディレクトリにロードされます。

注意注意注意注意 :

� ojsputil.jarを j2ee/home/libディレクトリに入れると、data-access JavaBeans およびその他 OC4J 付属の Java ユーティリティ・クラスにもアクセス可能になります。

� ojspdemos.earファイル内のデモを使用する場合、TLD ファイルは自動的に ojspdemosアプリケーションの WEB-INFディレクトリに入れられます。 (デモ自体には独自のアプリケーション・ルートが存在します。)

6-14 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 88: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

カスタム・タグを使用する JSP ページの実行

これは、OC4J Web サーバーが稼動中で、データベースのセットアップ用に Oracle デモの標準 SQL スクリプトを実行済であることを前提としています。

このページにより、次のような出力が生成されます。

重要重要重要重要 : Oracle JDBC Drivers クラスは OC4J ダウンロードに含まれ、j2ee/home/libディレクトリ内に存在しますが、これらがご使用の JDKおよびデータベースのバージョンと互換性があることを確認する必要があります。 classes111.zipまたは .jarライブラリは JDK 1.1.x 用で、classes12.zipは .jarは JDK 1.2.x 以上を対象としています。 また、ドライバのリリース番号、たとえば 8.1.7 または 9.0.1 が、データベースのリリース番号と互換性がある必要があります。

OC4J のための JSP 入門 6-15

Page 89: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

JSP ページをサポートする Oracle 追加機能の概要

JSP ページをサポートするページをサポートするページをサポートするページをサポートする Oracle 追加機能の概要追加機能の概要追加機能の概要追加機能の概要OC4J JSP では、一般的に他の JSP 環境に移植可能なカスタム・タグ・ライブラリおよびカスタム JavaBeans とクラスによって、次の拡張機能を提供しています。

� 特定のスコープを持つ、JavaBeans として実装される拡張型

� イベント処理用の JspScopeListener

� カスタム・タグによる XML および XSL との統合

� データ・アクセス JavaBeans

� Oracle JSP Markup Language(JML)カスタム・タグ・ライブラリ(Java の知識が少なくても JSP 開発が可能になる)

� SQL 機能用のカスタム・タグ・ライブラリ(6-12 ページの「カスタム・タグを使用するJSP ページの実行」で使用)

� ファイルのアップロードとダウンロード、または電子メールの送信などの機能用の追加ユーティリティ・タグ

さらに、OC4J JSP コンテナは、キャッシュ・テクノロジとの統合も実現しています。

� Edge Side Include 用の JESI タグ

OC4J JSP コンテナでは、次の Oracle 固有プログラミング拡張機能もサポートしています。

� SQL 文を Java コードに直接埋め込む場合の標準構文である SQLJ のサポート

SQLJ 製品では、JSP ページにおける SQLJ コードの簡易化された接続管理をサポートするための SQLJ 固有の接続 Bean のデモについて説明しており、このデモを提供しています。

� 拡張グローバリゼーション・サポート

� Servlet 2.0 環境におけるアプリケーション・サポート用の globals.jsaファイル

6-16 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 90: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J のための

7

OC4J のためののためののためののための EJB 入門入門入門入門

OC4J をインストールし、ベース・サーバーとデフォルトの Web サイトを構成した後、J2EEアプリケーションの開発を開始します。 この章では、簡単な J2EE の運用知識と EJB 開発の基本知識があることを前提としています。

この章では、基本的な OC4J 特有の構成およびデプロイを使用した単純な EJB の開発方法を説明します。OTN Japan (http://otn.oracle.co.jp) のサンプルコードのページから、

「Stateless Session Bean」の例(stateless.jar)をダウンロードしてください。

OC4J を使用した EJB アプリケーションの開発およびデプロイには、次の作業が含まれます。

� EJB の開発 : 標準の J2EE 仕様の範囲内での EJB モジュールの開発およびテストを行います。

� EJB アプリケーションのデプロイ準備 : デプロイ前に、エンタープライズ・アプリケーションのマニフェスト・ファイルとして機能する XML ファイルを修正する必要があります。

� エンタープライズ・アプリケーションの OC4J へのデプロイ : エンタープライズ Java アプリケーションを Enterprise ARchive(EAR)ファイルにアーカイブし、OC4J にデプロイします。

EJB 入門 7-1

Page 91: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

EJB の開発

EJB の開発の開発の開発の開発OC4J 環境用の EJB の開発は、他の標準的な J2EE 環境での開発とほぼ同じです。 EJB 開発のステップは、次のとおりです。

1. 開発ディレクトリの作成 : エンタープライズ・アプリケーションの開発用ディレクトリを作成します(図 7-1 を参照)。

2. Enterprise JavaBeans の実装 : EJB と、そのホーム・インタフェース、リモート・インタフェースおよび Bean 実装を開発します。

3. デプロイメント・ディスクリプタの作成 : EJB アプリケーション内のすべての Bean に対し、標準の J2EE EJB デプロイメント・ディスクリプタを作成します。

4. EJB アプリケーションのアーカイブ : EJB ファイルを JAR ファイルにアーカイブします。

開発ディレクトリの作成開発ディレクトリの作成開発ディレクトリの作成開発ディレクトリの作成アプリケーションは、好きな方法で開発して構いません。 アプリケーションを簡単に見つけられるよう、一貫性のある命名規則を使用することをお薦めします。 1 つの方法としては、エンタープライズ Java アプリケーションを、1 つの親ディレクトリ構造内に実装し、アプリケーションの各モジュールをそれぞれのサブディレクトリに分ける方法があります。

employee の例は、2-7 ページの「開発ディレクトリの作成」で説明されているディレクトリ構造を使用して開発されています。 図 7-1 では、EJB および Web モジュールは、employeeアプリケーションの親ディレクトリ内に存在し、それぞれ別々のディレクトリ内で開発されている点に注意してください。

図図図図 7-1 employee のディレクトリ構造のディレクトリ構造のディレクトリ構造のディレクトリ構造

.../employee/ |-------META-INF | `-------application.xml | |-------ejb_module | |-------EJB classes (Employee.class, ...) | `-------META-INF | `-------ejb-jar.xml `-------web_module |-------index.html |-------JSP pages (add.jsp, ...) `-------WEB-INF |----web.xml `--classes `---servlet class (EmployeeServlet.class)

7-2 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 92: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

EJB の開発

Enterprise JavaBeans の実装の実装の実装の実装EJB を実装する際、次のものを作成します。

1. Bean のホーム・インタフェース。 ホーム・インタフェースは、javax.ejb.EJBHomeを拡張します。 これは Bean の createメソッドを定義します。 Bean が Entity Bean の場合、その Bean の finder メソッドも定義します。

2. Bean のリモート・インタフェース。 リモート・インタフェースは、クライアントによって起動可能なメソッドを宣言します。 javax.ejb.EJBObjectを拡張します。

3. 次のものが含まれている Bean の実装。

a. リモート・インタフェースで宣言されているビジネス・メソッドの実装

b. javax.ejb.SessionBeanまたは javax.ejb.EntityBeanインタフェースを継承しているコンテナのコールバック・メソッド

c. ホーム・インタフェースで定義された createメソッドのパラメータに一致するパラメータを持つ ejbCreateメソッド

ホーム・インタフェースの作成ホーム・インタフェースの作成ホーム・インタフェースの作成ホーム・インタフェースの作成Bean インスタンスの作成および破棄に、ホーム・インタフェースが使用されます。したがって、ホーム・インタフェースでは、Bean の createメソッドを定義します。 それぞれのEJB タイプでは、次のようにして createメソッドを定義可能です。

注意注意注意注意 : EJB モジュールの場合、モジュールの 上位(ejb_module)は、クラスの検索パスの開始を示します。 したがって、パッケージに所属するクラスは、この下のネストされたディレクトリ構造内に存在しているとみなされます。 たとえば、パッケージ・クラス 'myapp.Employee.class'の参照は、"...employee/ejb_module/myapp/Employee.class" 内に存在するとみなされます。

EJB タイプタイプタイプタイプ create のパラメータのパラメータのパラメータのパラメータ

ステートレス Session Bean パラメータなしの 1 つの createメソッドのみ使用可能。

ステートフル Session Bean それぞれ定義されたパラメータを持つ 1 つ以上の createメソッ

ド。

Entity Bean それぞれ定義されたパラメータを持つ 0(ゼロ)以上の createメ

ソッド。 すべての Entity Bean で、1 つ以上の finder メソッドを定義

する必要があります。そのうちの 1 つ以上は findByPrimaryKeyメソッドである必要があります。

OC4J のための EJB 入門 7-3

Page 93: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

EJB の開発

各 createメソッドにつき、対応する ejbCreateメソッドが Bean 実装で定義されます。 クライアントは、ホーム・インタフェースで宣言された createメソッドを起動します。 次に、コンテナが、Bean 実装内の、適切なパラメータ・シグネチャを持つ ejbCreateメソッドをコールします。 新しい EJB オブジェクトの状態を初期化するために、パラメータの引数を使用できます。

1. ホーム・インタフェースでは、javax.ejb.EJBHomeインタフェースを拡張する必要があります。

2. すべての createメソッドで、次の例外をスローする必要があります。

� javax.ejb.CreateException

� java.rmi.RemoteExceptionまたは javax.ejb.EJBException

例例例例次のサンプル・コードでは、EmployeeHomeという Session Bean のホーム・インタフェースを示します。

package employee;

import javax.ejb.*;import java.rmi.*;

public interface EmployeeHome extends EJBHome{ public Employee create() throws CreateException, RemoteException;}

リモート・インタフェースの作成リモート・インタフェースの作成リモート・インタフェースの作成リモート・インタフェースの作成リモート・インタフェースでは、クライアントから起動可能な Bean のビジネス・メソッドを定義します。

1. Bean のリモート・インタフェースは、javax.ejb.EJBObjectインタフェースを拡張する必要があり、そのメソッドは java.rmi.RemoteException例外をスローする必要があります。

2. これらのメソッドを起動するクライアントはリモートであるため、リモート・インタフェースおよびそのメソッドを publicとして宣言する必要があります。

3. リモート・インタフェース、すべてのメソッド・パラメータおよび戻り型はシリアライズ可能である必要があります。 一般的に、RMI は両側のオブジェクトをマーシャリングおよびアンマーシャリングするため、クライアントと EJB の間で受渡しされるオブジェクトは、すべてシリアライズ可能である必要があります。

7-4 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 94: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

EJB の開発

4. シリアライズ可能であれば、どのような例外でもクライアントにスロー可能です。 EJBExceptionおよび RemoteExceptionを含めた実行時例外は、リモート実行時例外としてクライアントに転送されます。

例例例例次のサンプル・コードでは、Employeeというリモート・インタフェースとその定義済のメソッドが示されています。各メソッドは、ステートレス Session Bean で実装されます。

package employee;

import javax.ejb.*;import java.rmi.*;import java.util.*;

public interface Employee extends EJBObject{ public Collection getEmployees() throws RemoteException;

public EmpRecord getEmployee(Integer empNo) throws FinderException, RemoteException;

public void setEmployee(Integer empNo, String empName, Float salary) throws FinderException, RemoteException;

public EmpRecord addEmployee(Integer empNo, String empName,Float salary)

throws CreateException, RemoteException;

public void removeEmployee(Integer empNo) throws RemoveException, RemoteException;}

Bean の実装の実装の実装の実装Bean には、アプリケーションのビジネス・ロジックが含まれています。 次のメソッドを実装します。

1. リモート・インタフェースで定義された Bean メソッド。 これらの各メソッドのシグネチャは、リモート・インタフェースのシグネチャに一致している必要があります。

サンプル・アプリケーションの Bean は、EmployeeBeanという 1 つのクラスで構成され、従業員に関する情報を取得します。

2. ホーム・インタフェースで定義されたメソッドは、SessionBeanまたは EntityBeanインタフェースを継承しています。 コンテナは、これらのメソッドを使用して、Bean の

OC4J のための EJB 入門 7-5

Page 95: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

EJB の開発

ライフ・サイクルを制御します。 これらのメソッドには、ejbActivate、ejbPassivateなどの ejb<Action>メソッドが含まれます。

3. ホーム・インタフェースで宣言された各 createメソッドに対応する ejbCreateメソッド。 クライアントが createメソッドを起動すると、コンテナによって対応するejbCreateメソッドが起動されます。

4. ビジネス・ロジックに使用される Bean またはパッケージに対してプライベートであるメソッド。 これには、パブリック・メソッドが要求された作業の完了に使用するプライベート・メソッドも含まれます。

Bean へのアクセスへのアクセスへのアクセスへのアクセススタンドアロン・クライアント、サーブレット、JSP および JavaBean を含めたすべての EJBクライアントは、次のようにして、Bean のインスタンス化、そのメソッドの起動、およびBean の破棄を行います。

1. ライフ・サイクル管理に使用される JNDI ルックアップによって Bean のホーム・インタフェースをルックアップします。 JNDI 規則に従って、Bean 参照を取得します。これには、Bean がクライアントに対してリモートである場合、JNDI プロパティの設定も含まれます。

2. PortableRemoteObject.narrowメソッドによって、JNDI ルックアップから返されたオブジェクトをホーム・インタフェースにナローイングします。

3. ホーム・インタフェースを通じて、サーバーの Bean のインスタンスを作成します。 ホーム・インタフェースで createメソッドを起動すると、新しい Bean がインスタンス化されます。 これにより、リモート・インタフェースに Bean 参照が返されます。

4. リモート・インタフェースで定義されたビジネス・メソッドを起動します。

5. 完了後、removeメソッドを起動します。 これにより、Bean インスタンスが削除されるか、プールに返されます。 removeメソッドに対する動作は、コンテナが制御します。

例例例例 次の例は、ステートレス Session Bean の存在するコンテナと同じコンテナに存在するサーブレットから起動されていますが、JSP または JavaBean からも起動可能です。 したがって、JNDI ルックアップは、ファクトリ、場所またはセキュリティ・パラメータなどの JNDIプロパティを必要としません。

注意注意注意注意 : すでにインスタンス化されている Entity Bean の場合、Bean 参照を finder メソッドによって取得可能です。

7-6 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 96: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

EJB の開発

このコードは、実際にはエラーを捕捉するために TRY ブロック内で実行する必要がありますが、ここでは、ロジックをわかりやすくするために TRY ブロックを省略しています。 例外全体を参照するには、ダウンロード可能なサンプルを参照してください。

public class EmployeeServlet extends HttpServlet{ EmployeeHome home; Employee remote;

public void init() throws ServletException { //Retrieve the initial context for JNDI Context context = new InitialContext();

//Retrieve the home interface using a JNDI lookup using // the java:comp/env bean environment variable specified in web.xml Object homeObject = context.lookup("java:comp/env/EmployeeBean"); //Narrow the returned object to be an EmployeeHome object home = (EmployeeHome) PortableRemoteObject.narrow(homeObject, EmployeeHome.class);

// Create the remote Employee bean instance and return a reference // to the remote interface to this bean. empBean =home.create(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html");

注意注意注意注意 : JNDI 名は、クライアントの XML 構成ファイルの <ejb-ref>要素で指定されています。この場合は、サーブレットの web.xmlファイルで、次のようになっています。

<ejb-ref> <ejb-ref-name>EmployeeBean</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <home>employee.EmployeeHome</home> <remote>employee.Employee</remote> </ejb-ref>

OC4J のための EJB 入門 7-7

Page 97: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

EJB の開発

ServletOutputStream out = response.getOutputStream();

//Invoke a method on the remote interface reference. Collection emps = empBean.getEmployees();

out.println("<html>"); out.println("<head><title>Employee Bean</title></head>"); out.println("<body>"); out.println("<table border='2'>"); out.println("<tr><td>" + "<b>EmployeeNo</b>" + "</td><td>" + "<b>EmployeeName</b>" + "</td><td>" + "<b>Salary</b>" + "</td></tr>");

Iterator iterator = emps.iterator();

while(iterator.hasNext()) { EmpRecord emp = (EmpRecord)iterator.next(); out.println("<tr><td>" + emp.getEmpNo() + "</td><td>" + emp.getEmpName() + "</td><td>" + emp.getSalary() + "</td></tr>"); }

out.println("</table>"); out.println("</body>"); out.println("</html>"); out.close(); }}

デプロイメント・ディスクリプタの作成デプロイメント・ディスクリプタの作成デプロイメント・ディスクリプタの作成デプロイメント・ディスクリプタの作成クラスの実装およびコンパイルが完了した後、モジュール内のすべての Bean に対し、標準の J2EE EJB デプロイメント・ディスクリプタを作成する必要があります。 ejb-jar.xmlファイルで定義されている XML デプロイメント・ディスクリプタは、アプリケーション・コンポーネントを記述し、コンテナがアプリケーションを管理するための追加情報を提供します。 このファイルの構造は DTD ファイルで規定されています。http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd を参照してください。

次の例では、Employeeの例に必要なセクションを示しています。

7-8 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 98: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

EJB の開発

例例例例 7-1 Employee Bean のののの XML デプロイメント・ディスクリプタデプロイメント・ディスクリプタデプロイメント・ディスクリプタデプロイメント・ディスクリプタ

<?xml version="1.0"?><!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd">

<ejb-jar> <enterprise-beans> <session> <description>Session Bean Employee Example</description> <ejb-name>EmployeeBean</ejb-name> <home>employee.EmployeeHome</home> <remote>employee.Employee</remote> <ejb-class>employee.EmployeeBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Bean</transaction-type> </session> </enterprise-beans></ejb-jar>

EJB アプリケーションのアーカイブアプリケーションのアーカイブアプリケーションのアーカイブアプリケーションのアーカイブ実装を完了し、デプロイメント・ディスクリプタを作成した後、EJB アプリケーションをJAR ファイルにアーカイブします。 JAR ファイルには、すべての EJB アプリケーション・ファイルおよびデプロイメント・ディスクリプタを含めます。

たとえば、Employeeの例のコンパイル済 EJB クラス・ファイルと XML ファイルを JARファイルにアーカイブするには、../employee/ejb_moduleディレクトリで次のコマンドを実行します。

% jar cvf Employee-ejb.jar

これにより、ejb_moduleサブディレクトリ内のすべてのファイルが JAR ファイルにアーカイブされます。

注意注意注意注意 : このエンタープライズ Java アプリケーションの一部として Webアプリケーションが含まれている場合、3-10 ページの「ディレクトリ内での構築およびデプロイ」の Web アプリケーションの構築手順を実行してください。 その後、<name>-web-site.xmlファイルを変更し、すべての Web アプリケーション・ファイルを WAR ファイルにアーカイブします。

OC4J のための EJB 入門 7-9

Page 99: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

EJB アプリケーションのデプロイ準備

EJB アプリケーションのデプロイ準備アプリケーションのデプロイ準備アプリケーションのデプロイ準備アプリケーションのデプロイ準備デプロイ前に、次の手順を実行します。

1. エンタープライズ Java アプリケーションのモジュールを使用して、application.xmlファイルを修正します。

2. アプリケーションのすべての要素を EAR ファイルにアーカイブします。

application.xml の修正の修正の修正の修正application.xmlファイルは、アプリケーションのマニフェスト・ファイルとして機能し、エンタープライズ・アプリケーション内に存在するモジュールのリストが含まれています。 エンタープライズ・アプリケーションを構成するモジュールを指定するには、application.xmlファイル内の <module>要素を使用します。 各モジュールで、EJB JAR、Web WAR およびクライアント・ファイルのうちのいずれかを記述します。 別々の<module>要素内で、それぞれ <ejb>、<web>および <java>要素を修正します。

� <ejb>要素は、EJB JAR ファイル名を指定します。

� <web>要素は、<web-uri>要素内で Web WAR ファイル名を、<context>要素内でそのコンテキストを指定します。

� <java>要素は、クライアント JAR ファイル名を(存在する場合)指定します。

図 7-2 で示すように、application.xmlファイルは、アプリケーションの親ディレクトリ内の META-INFディレクトリ内に存在します。 JAR、WAR およびクライアント JAR ファイルは、このディレクトリ内に入っている必要があります。 application.xmlファイルは、JAR および WAR ファイルとこのように近くに存在するため、これらのファイルを参照する際、名前のみを使用し、絶対パスは使用しません。 これらのファイルが親ディレクトリ内のサブディレクトリに存在する場合、ファイル名に加えてこれらのサブディレクトリを指定する必要があります。

図図図図 7-2 アーカイブ・ディレクトリの形式アーカイブ・ディレクトリの形式アーカイブ・ディレクトリの形式アーカイブ・ディレクトリの形式

employee |-------META-INF/ | `-------application.xml | |-------Employee-ejb.jar `-------Employee-web.war

たとえば、次の例では、Employee EJB アプリケーションの application.xml内に存在する <ejb>および <web>モジュール要素を修正していますが、このアプリケーションにはEJB と対話処理を行うサーブレットも含まれています。

<?xml version="1.0"?><!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN" "http://java.sun.com/j2ee/dtds/application_1_2.dtd">

7-10 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 100: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

エンタープライズ・アプリケーションの OC4J へのデプロイ

<application> <module> <ejb>Employee-ejb.jar</ejb> </module> <module> <web> <web-uri>Employee-web.war</web-uri> <context-root>/employee</context-root> </web> </module></application>

EAR ファイルの作成ファイルの作成ファイルの作成ファイルの作成アプリケーションの JAR、WAR および XML ファイルを含める EAR ファイルを作成します。 application.xmlファイルが EAR マニフェスト・ファイルとして機能します。

Employee.EARファイルを作成するには、図 7-2 で示されている employee ディレクトリ内で、次のコマンドを実行します。

% jar cvfM Employee.EAR

これにより、application.xml、Employee-ejb.jarおよび Employee-web.warファイルが Employee.earファイルにアーカイブされます。

エンタープライズ・アプリケーションのエンタープライズ・アプリケーションのエンタープライズ・アプリケーションのエンタープライズ・アプリケーションの OC4J へのデプロイへのデプロイへのデプロイへのデプロイOC4J は、アプリケーションが server.xmlファイル内で構成されると、それを認識し、起動します。 server.xmlファイル内で正確な情報を提供するには、2 つの方法があります。

� admin.jarを使用して server.xmlファイルを修正する

� server.xmlファイルを手動で更新する

いずれの方法も結果は同じですが、admin.jarツールを使用すると、手動更新の場合に発生する可能性のあるエラーを防ぎます。そのため、オラクル社では、ツールの使用をお薦めします。 次の項では、両方の方法について説明します。

admin.jar を使用したを使用したを使用したを使用した server.xml の修正の修正の修正の修正OC4J には、admin.jarコマンドという、J2EE アプリケーションのデプロイ用のコマンドライン・デプロイ・ツールが含まれています。 このコマンドのオプションは、A-13 ページの

「admin.jar コマンドライン・ツール」で説明されています。

J2EE アプリケーションを EAR ファイルを使用してリモート・ノードにデプロイするには、次のコマンドを実行して admin.jarを実行します。

java -jar admin.jar ormi://<oc4j_host>:<oc4j_ormi_port>

OC4J のための EJB 入門 7-11

Page 101: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

エンタープライズ・アプリケーションの OC4J へのデプロイ

<username> <password> -deploy -file <path/filename> -deploymentName <appname> -targetpath <path/destination>

各項目の説明 :

� <oc4j_host>:<oc4j_ormi_port>は、OC4J サーバーのホストおよびポートです。

� <username><password>は、OC4J サーバーの管理者のユーザー名およびパスワードです。

� -file <path/filename>には、EAR ファイルのディレクトリおよびファイル名を指定します。

� -deploymentName <appname>変数は、アプリケーション名です。

� -targetpath <path/destination>は、EAR ファイルのデプロイ先のサーバー・ノードのパスです。 デフォルトのパスは applications/ディレクトリです。 オラクル社では、ターゲット・パスを設定することをお薦めします。

手動による手動による手動による手動による server.xml の更新の更新の更新の更新server.xmlで、各 J2EE アプリケーションに対して、<application name=... path=... auto-start="true" />エントリを新規で追加するか、または既存のエントリを修正します。 パスには、絶対ディレクトリ・パスと EAR ファイル名を指定する必要があります。 employee の例では、次のエントリを server.xmlファイルに追加します。

<application name="employee" path="/private/applications/Employee.EAR" auto-start="true" />

Web アプリケーションが含まれている場合は、次のようにして Web アプリケーションをWeb サーバーにバインドする必要があります。 web-site.xmlで、各 Web アプリケーションにつき、<web-app ...> エントリを 1 つずつ追加します。 <application>変数は、server.xmlファイルで指定したものと同じ値にする必要があります。 <name>は、Webアプリケーションの WAR ファイル名から WAR 拡張子を除外したものです。

employee Web アプリケーションでのアプリケーション・バインディングの場合、次のエントリを追加します。

<web-app application="employee" name="Employee-web" root="/employee" />

注意注意注意注意 : EAR ファイル内に Web アプリケーションが存在する場合、Webアプリケーションを admin.jar -bindWebAppツールを使用してバインドします。

7-12 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 102: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

エンタープライズ・アプリケーションの OC4J へのデプロイ

デプロイの検証デプロイの検証デプロイの検証デプロイの検証OC4J は、server.xmlにアプリケーションが追加されたことを検出します。 OC4J サーバーにより、アプリケーションがデプロイされたというメッセージが表示されます。 ここまでが、OC4J のインストールです。

サーバーによりアプリケーションがすぐに検出されない場合、OC4J を起動(または再起動)すると、すぐにアプリケーションが検出されます。

OC4J のための EJB 入門 7-13

Page 103: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

エンタープライズ・アプリケーションの OC4J へのデプロイ

7-14 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 104: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

セキュリ

8

セキュリティセキュリティセキュリティセキュリティ

この章では、次のトピックについて説明します。

� セキュリティ機能の概要

� 認証

� 認可

ティ 8-1

Page 105: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

セキュリティ機能の概要

セキュリティ機能の概要セキュリティ機能の概要セキュリティ機能の概要セキュリティ機能の概要OC4J のセキュリティは、J2EE アプリケーションにアクセスするユーザーとグループの認証および認可という、2 段階のプロセスに基づいています。 これらの 2 つの機能と OC4J の機密保護は、次のようになっています。

� 認証 : ユーザー ID および資格証明の検証。

ユーザーとグループをユーザー・リポジトリに定義します。 ユーザー・リポジトリは、J2EE アプリケーションにアクセスしようとするユーザーの ID を検証するために、ユーザー・マネージャが使用します。 ユーザー・リポジトリには、principals.xmlファイルを使用します。

J2EE アプリケーションは、どのユーザーがアプリケーションを使用できるかを判断しますが、ユーザー・リポジトリの情報に基づきユーザーの ID を検証するのは、ユーザー・マネージャ(ユーザー名とパスワードを使用)です。

� 認可 : アプリケーションにアクセスするユーザーおよびグループを許可または拒否します。

汎用および OC4J 固有のデプロイメント・ディスクリプタに、ユーザーおよびグループ(ID)の認可を指定します。いずれのデプロイメント・ディスクリプタも、ご使用の

EAR、WAR または EJB JAR ファイルに埋め込まれています。 デプロイメント・ディスクリプタは、アプリケーションの異なる部分へのアクセスに必要なロールを示します。 ロールは、アプリケーションの異なるオブジェクトへのアクセス権を示すために、各アプリケーションが使用する論理 ID です。 また、デプロイメント・ディスクリプタは、論理ロールと、OC4J で認識されているユーザーおよびグループとの間のマッピングを提供します。

� 機密保護 : 暗号化された通信を確保します。

OC4J は、Oracle HTTP Server のバックグラウンドで実行するよう、事前に構成されています。 このようにして、Oracle HTTP Server は機密保護を行います。 たとえば、Secure Sockets Layer(SSL)を使用するように Oracle HTTP Server を構成できます。

注意注意注意注意 : SSL を使用するようにご自分で OC4J を設定することはお薦めできません。 Oracle HTTP Server と OC4J 間の追加の SSL ハンドシェイクは、パフォーマンスを大幅に低下させます。

8-2    Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 106: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

認証

認証認証認証認証認証は、個人またはエンティティの ID および資格証明が有効であることを検証します。 J2EE アプリケーションは、どのユーザーがアプリケーションを使用できるかを判断します。 しかし、ユーザー・リポジトリの情報に基づきユーザーの ID を検証するのは、ユーザー・マネージャ(ユーザー名とパスワードを使用)です。 認証は、認可とは別のものであり、個人やエンティティがその ID に基づき、J2EE アプリケーションにアクセスできるようにするプロセスです。

OC4J セキュリティは、HTTP および EJB とう 2 つのタイプのクライアントを認証します。 これらはそれぞれ、ユーザーおよびグループの設定とともにこの項で説明します。

ユーザーおよびグループの指定ユーザーおよびグループの指定ユーザーおよびグループの指定ユーザーおよびグループの指定OC4J は、デプロイされているすべてのアプリケーションで共有されるか、あるいは特定のアプリケーションに固有の、ユーザーおよびグループの定義をサポートしています。

� 共有されるユーザーおよびグループは、ユーザー・リポジトリにリストされており、そのパスがグローバルな config/application.xmlファイルに指定されています。

� アプリケーション固有のユーザーおよびグループは、アプリケーション固有のユーザー・リポジトリにリストされており、そのパスは、当該アプリケーションのorion-application.xmlファイルに指定されています。

次の項では、デフォルトの UserManagerの下で、ユーザーおよびグループを指定する方法を例示します。

例例例例 : principals.xml でのユーザーおよびグループの指定でのユーザーおよびグループの指定でのユーザーおよびグループの指定でのユーザーおよびグループの指定principals.xmlファイル(デフォルトの UserManagerのリポジトリ)から抜粋した次の XML は、allusersというグループと、パスワード welcomeを持つ guestというユーザーの定義方法を示しています。 guestユーザーは、allusersグループのメンバーとして作成されています。

<principals> <groups> <group name="allusers"> <description>Group for all normal users</description> <permission name="rmi:login" /> <permission name="com.evermind.server.rmi.RMIPermission" /> </group>

....other groups... </groups> <users> <user username="guest" password="welcome"> <description>Guest user</description> <group-membership group="allusers" /> </user>

セキュリティ 8-3

Page 107: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

認証

</users> </principals>

HTTP クライアントの認証クライアントの認証クライアントの認証クライアントの認証アプリケーションに対するクライアントの大半は Web ブラウザで、これは、Oracle HTTP Server の mod_proxyモジュール経由で OC4J にアクセスします。 OC4J は、クライアントが保護付きの URL にアクセスする際に、クライアント自身を認証するよう要求します。 認証は、デジタル証明となるユーザー名とパスワード、あるいは SSL の場合には私有鍵ペアにより行うことができます。

EJB クライアントの認証クライアントの認証クライアントの認証クライアントの認証リモート・コンテナの EJB にアクセスする場合、有効な資格証明をこのコンテナに渡す必要があります。

� スタンドアロン・クライアントは、EAR ファイルとともにデプロイされたjndi.propertiesファイルに、自分の資格証明を定義します。

� コンテナ内で実行中のサーブレットまたは JavaBeans は、リモート EJB をルックアップするために作成された InitialContext内に、自分の資格証明を渡します。

JNDI プロパティの資格証明プロパティの資格証明プロパティの資格証明プロパティの資格証明jndi.propertiesファイルには、リモート EJB をルックアップする際に使用するユーザー名(プリンシパル)およびパスワード(資格証明)を指定します。

たとえば、welcomeを使用して、リモート EJB に guestとしてアクセスする場合は、次のようなプロパティを定義します。

java.naming.security.principal=guestjava.naming.security.credentials=welcomejava.naming.factory.initial=

com.evermind.server.ApplicationClientInitialContextFactoryjava.naming.provider.url=ormi://oc4j_host/ejbsamples

factory.initialプロパティは、Oracle JNDI の実装を使用することを示します。

ご使用のアプリケーション・プログラム内では、次に示すように、認証およびリモート EJBへのアクセスを行います。

InitialContext ic = new InitialContext();CustomerHome = (CustomerHome)ic.lookup("java:comp/env/customerbean");

8-4    Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 108: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

認可

InitialContext の資格証明の資格証明の資格証明の資格証明サーブレットまたは JavaBeans からリモート EJB にアクセスするには、次のようにして、InitialContextオブジェクトに資格証明を渡します。

Hashtable env = new Hashtable(); env.put("java.naming.provider.url", "ormi://oc4j_host/ejbsamples"); env.put("java.naming.factory.initial",

"com.evermind.server.ApplicationClientInitialContextFactory"); env.put(Context.SECURITY_PRINCIPAL, "guest"); env.put(Context.SECURITY_CREDENTIALS, "welcome"); Context ic = new InitialContext (env); CustomerHome = (CustomerHome)ic.lookup("java:comp/env/customerbean")

認可認可認可認可認可は、ユーザーやエンティティに、その ID に基づき J2EE アプリケーションへのアクセス権を付与したり、拒否するプロセスです。 認可は、個人やエンティティが有効であることを検証するプロセスである認証とは異なります。

汎用および OC4J 固有のデプロイメント・ディスクリプタに、ユーザーおよびグループ(ID)の認可を指定します。いずれのデプロイメント・ディスクリプタも、ご使用の EAR、

WAR または EJB JAR ファイルに埋め込まれています。 汎用デプロイメント・ディスクリプタは、論理ロールを使用してアクセス・ルールを指定するものです。 OC4J 固有のデプロイメント・ディスクリプタは、論理ロールを、ユーザー・リポジトリに定義されている実際のユーザーとグループにマップするものです。

ユーザー、グループおよびロールの定義方法は、次の項で説明します。

� ユーザーおよびグループの指定

� J2EE アプリケーションの論理ロールの指定

� 論理ロールのユーザーおよびグループへのマッピング

J2EE アプリケーションの論理ロールの指定アプリケーションの論理ロールの指定アプリケーションの論理ロールの指定アプリケーションの論理ロールの指定アプリケーションが使用する論理ロールを、XML デプロイメント・ディスクリプタに指定します。 アプリケーションのコンポーネント・タイプに応じて、論理ロールとともに次のうち 1 つを更新します。

� WAR ファイルの場合は、web.xml

� EJB JAR ファイルの場合は、ejb-jar.xml

� EAR ファイルの場合は、application.xml

これらの各デプロイメント・ディスクリプタでは、ロールは、<security-role>というXML 要素により定義されます。

セキュリティ 8-5

Page 109: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

認可

例例例例 8-1 EJB JAR セキュリティロールの定義セキュリティロールの定義セキュリティロールの定義セキュリティロールの定義

次のステップで、ejb-jar.xmlデプロイメント・ディスクリプタの VISITORという論理ロールの作成に必要な XML について説明します。

1. VISITORという論理セキュリティ・ロールを、<security-role>要素に定義します。

<security-role> <description>A role for every user</description> <role-name>VISITOR</role-name> </security-role>

2. このロールがアクセス可能な Bean およびメソッドを <method-permission>要素に定義します。

<method-permission> <description>VISITOR role needed for CustomerBean methods</description> <role-name>VISITOR</role-name> <method> <ejb-name>customerbean</ejb-name> <method-name>*</method-name> </method> </method-permission>

論理ロールのユーザーおよびグループへのマッピング論理ロールのユーザーおよびグループへのマッピング論理ロールのユーザーおよびグループへのマッピング論理ロールのユーザーおよびグループへのマッピングアプリケーション・デプロイメント・ディスクリプタに定義されている論理ロールを、ユーザー・リポジトリに定義されている実際のユーザーおよびグループにマップします。 マッピングは、<security-role-mapping>要素により、OC4J 固有のデプロイメント・ディスクリプタに指定されています。図 8-1 に、このマッピングを示します。

8-6    Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 110: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

認可

図図図図 8-1 principals.xml に定義されているユーザーおよびグループへの論理ロールのマッピングに定義されているユーザーおよびグループへの論理ロールのマッピングに定義されているユーザーおよびグループへの論理ロールのマッピングに定義されているユーザーおよびグループへの論理ロールのマッピング

例例例例 8-2 論理ロールの実際のロールへのマッピング論理ロールの実際のロールへのマッピング論理ロールの実際のロールへのマッピング論理ロールの実際のロールへのマッピング

この例では、論理ロール VISITORを、orion-ejb-jar.xmlファイルの allusersグループにマップします。 このグループの一部としてログイン可能なすべてのユーザーは、VISITORロールを持っているものとみなされるため、customerbeanのメソッドを実行できます。

<security-role-mapping name="VISITOR"> <group name="allusers" /> </security-role-mapping>

注意注意注意注意 : 論理ロールは、単一または複数のグループにマップできます。

application.xmlejb_jar.xmlweb.xml

orion_application.xmlorion_ejb_jar.xml

<security_role_mapping> <security_role_mapping>

<security_role> <security_role>

<group> <group>

<user> <user><user>

orion_web.xml

config/principleprincipals.xml(アプリケーション固有)

セキュリティ 8-7

Page 111: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

認可

8-8    Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 112: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

追加

A

追加情報追加情報追加情報追加情報

この付録には、次のトピックに関する完全な情報が含まれています。

� XML ファイルの内容の説明

� server.xml ファイルの要素

� OC4J コマンドライン・ツールのオプション

� 構成およびデプロイメントの例

情報 A-1

Page 113: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

XML ファイルの内容の説明

XML ファイルの内容の説明ファイルの内容の説明ファイルの内容の説明ファイルの内容の説明OC4J は、構成 XML ファイルおよびデプロイメント XML ファイルを使用します。 次の項で、これらの各タイプを説明します。

OC4J 構成構成構成構成 XML ファイルファイルファイルファイルこの項では、OC4J の構成に必要となる、次のような XML ファイルに関して説明します。

� server.xml

� web-site.xml

� principals.xml

� data-sources.xml

� jms.xml

� rmi.xml

� httpds.conf

server.xml このファイルには、アプリケーション・サーバー用の構成が含まれています。 server.xmlファイルは、ルート構成ファイルで、他の構成ファイルへの参照が含まれています。 このファイルでは、次のものを指定します。

� アプリケーション・デプロイメント・ディスクリプタに入っているライブラリ・パス

� グローバル・アプリケーション、グローバル Web アプリケーション、および提供されるデフォルトの Web サイト

� サーバーが許容する 大 HTTP 接続数

� ロギング設定

� Java コンパイラ設定

� クラスタ ID

� トランザクション・タイムアウト

� SMTP ホスト

� data-sources.xml構成の場所

� JMS および RMI の構成の場所

� デフォルトおよび追加 Web サイトの場所

Web サイト構成ファイルの場所をリストするエントリを追加することにより、これらの場所を指定します。 複数の Web サイトを使用できます。 default-web-site.xmlファイルはデフォルトの Web サイトを定義するため、これら XML ファイルのうち 1 つしか存

A-2 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 114: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

XML ファイルの内容の説明

在しません。 他のすべての Web サイトは、web-site.xml構成ファイル内で定義されます。 server.xmlファイル内に次のようにして、各 Web サイトを登録します。

<web-site path="./default-web-site.xml" /><web-site path="./another-web-site.xml" />

後に、独自のアプリケーションを server.xmlファイルに追加できます。 必要な数だけアプリケーション・ディレクトリを使用でき、それらは、OC4J インストレーション・ディレクトリの下に置く必要はありません。

次のサイトで、Document Type Definition(DTD)を参照できます。

http://xmlns.oracle.com/ias/dtds/server.dtd

web-site.xml このファイルには、Web 用の構成が含まれています。 web-site.xmlファイル内で、次のものを指定します。

� ホスト名または IP アドレス、このサイトの仮想ホスト設定、リスナー・ポートおよびSSL を使用したセキュリティ

� このサイトのデフォルトの Web アプリケーション

� このサイトの追加の Web アプリケーション

� アクセス・ログ・フォーマット

� ユーザー Web アプリケーションの設定(/~user/ sites用)

� SSL 構成

次のサイトで、DTD を参照できます。

http://xmlns.oracle.com/ias/dtds/web-site.dtd

principals.xml このファイルには、OC4J サーバー用のセキュリティ情報が含まれています。 これは、デフォルトの XMLUserManagerを使用するユーザーおよびグループ構成を定義します。 principals.xmlファイルで、次のものを指定します。

� 管理者のユーザー名およびパスワード

� ユーザーまたはグループの名前と説明、およびユーザーの実名とパスワード

� オプションの、ユーザー用 X.509 証明書

次のサイトで、DTD を参照できます。

http://xmlns.oracle.com/ias/dtds/principals.dtd

注意注意注意注意 : 示されているパスは、config/ディレクトリに対する相対パスです。

追加情報 A-3

Page 115: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

XML ファイルの内容の説明

data-sources.xml このファイルには、使用するデータ・ソースの構成が含まれています。 また、JDBC 接続の取得方法に関する情報も含まれています。 data-sources.xmlファイルで、次のものを指定します。

� JDBC ドライバ

� JDBC URL

� データ・ソースのバインド先の JNDI パス

� データ・ソースのユーザーおよびパスワード

� 使用するデータベース・スキーマ

� 非アクティブのタイムアウト

� 許容される 大データベース接続数

次のサイトで、DTD を参照できます。

http://xmlns.oracle.com/ias/dtds/data-sources.dtd

jms.xml このファイルには、Java Messaging Service(JMS)をメモリー内部に実装するための構成が含まれています。 jms.xmlファイルで、次のものを指定します。

� ホスト名または IP アドレス、および JMS サーバーがバインドするポート番号

� JNDI ツリー内にバインドされるキューおよびトピックの設定

� ログの設定

次のサイトで、DTD を参照できます。

http://xmlns.oracle.com/ias/dtds/jms.dtd

rmi.xml このファイルには、Remote Method Invocation(RMI)システムの構成が含まれます。 これには、EJB にリモート・アクセスを提供する RMI リスナーの設定が含まれます。 rmi.xmlファイルで、次のものを指定します。

� ホスト名または IP アドレス、および RMI サーバーがバインドするポート番号

� 通信相手のリモート・サーバー

注意注意注意注意 : データベース・スキーマは、自動生成された SQL が別のデータベース・システムで動作するようにするために使用します。 OC4J には、タイプ・マッピングと予約語などのプロパティを指定する、XML ファイル・フォーマットが含まれます。 OC4J には、MS SQL Server/MS Access、Oracle および Sybase 用のデータベース・スキーマが付属しています。 これらを編集したり、ご使用の DBMS 用の新規スキーマを作成することができます。

A-4 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 116: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

XML ファイルの内容の説明

� クラスタ設定

� ログの設定

次のサイトで、DTD を参照できます。

http://xmlns.oracle.com/ias/dtds/rmi.dtd

J2EE デプロイメントデプロイメントデプロイメントデプロイメント XML ファイルファイルファイルファイルOC4J 固有のデプロイメント XML ファイルには、異なるコンポーネントのデプロイメント情報が含まれます。 OC4J 固有のファイルを作成しない場合、それらは、自動デプロイメント使用時に自動的に生成されます。 OC4J 固有のデプロイメント XML ファイルを手動で編集することができます。 OC4J はこれらのファイルを使用して、環境エントリ、リソース参照およびセキュリティ・ロールを、実際のデプロイメント固有の値にマップします。

この項では、Web アプリケーションのデプロイメントに必要となる、次のような XML ファイルについて説明します。

� application.xml

� orion-application.xml

� ejb-jar.xml

� orion-ejb-jar.xml

� web.xml

� orion-web.xml

� application-client.xml

� orion-application-client.xml

application.xml このファイルは、J2EE アプリケーションに入っている Web または EJB アプリケーションを識別します。 また、このファイルは、セキュリティ XML 定義ファイル

(principals.xml)の場所を識別します。

次のサイトで、DTD を参照できます。

http://xmlns.oracle.com/ias/dtds/application.dtd

orion-application.xml このファイルは、グローバル・アプリケーションを構成します。 orion-application.xmlファイルで、次のものを指定します。

� CMP Bean のテーブルの自動作成および自動削除を行うかどうか

� CMP Bean とともに使用するデフォルトのデータ・ソース

� セキュリティ・ロール・マッピング

追加情報 A-5

Page 117: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

XML ファイルの内容の説明

� ユーザー・マネージャの指定

� JNDI のネームスペースおよびアクセス・ルール(認可)

次のサイトで、DTD を参照できます。

http://xmlns.oracle.com/ias/dtds/orion-application.dtd

ejb-jar.xml このファイルは、この JAR ファイルの EJB のデプロイメント・パラメータを定義します。

次のサイトで、DTD を参照できます。

http://xmlns.oracle.com/ias/dtds/ejb-jar.dtd

orion-ejb-jar.xml このファイルは、EJB 用の OC4J 固有デプロイメント・ディスクリプタです。 orion-ejb-jar.xmlファイルで、次のものを指定します。

� タイムアウト設定

� トランザクションの再試行設定

� セッションの永続性設定

� トランザクションの独立性設定

� CMP マッピング

� OR マッピング

� finder メソッドの仕様

� JNDI マッピング

次のサイトで、DTD を参照できます。

http://xmlns.oracle.com/ias/dtds/orion-ejb-jar.dtd

web.xml このファイルには、このアプリケーションのサーブレットおよび JSP に関するデプロイメント情報が含まれています。

次のサイトで、DTD を参照できます。

http://xmlns.oracle.com/ias/dtds/web.dtd

A-6 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 118: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

XML ファイルの内容の説明

orion-web.xml このファイルは、Web 設定マッピング用の OC4J 固有デプロイメント・ディスクリプタです。 この XML ファイルには、次のようなものが含まれます。

� 自動再ロード(変更チェックと時間間隔を含む)

� バッファリング

� 文字セット

� 開発モード

� ディレクトリのブラウズ

� ドキュメント・ルート

� ロケール

� Web タイムアウト

� 仮想ディレクトリ

� クラスタリング

� セッション・トラッキング

� JNDI マッピング

次のサイトで、DTD を参照できます。

http://xmlns.oracle.com/ias/dtds/orion-web.dtd

application-client.xml このファイルには、サーバー・アプリケーションにアクセスするためのJNDI 情報、および他のクライアント情報が含まれています。

次のサイトで、DTD を参照できます。

http://xmlns.oracle.com/ias/dtds/application-client.dtd

orion-application-client.xml このファイルは、クライアント・アプリケーション用の OC4J 固有のデプロイメント・ディスクリプタです。 これには、クライアントの JNDI マッピングとエントリが含まれています。

次のサイトで、DTD を参照できます。

http://xmlns.oracle.com/ias/dtds/orion-application-client.dtd

追加情報 A-7

Page 119: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

server.xml ファイルの要素

server.xml ファイルの要素ファイルの要素ファイルの要素ファイルの要素server.xmlファイルでは、次の作業を行います。

� OC4J の構成

� 他の構成ファイルの参照

� ご使用の Web アプリケーションの指定

OC4J の構成の構成の構成の構成OC4J サーバーを構成するには、server.xmlファイル内で次のようなものを設定します。

� ライブラリ・パス

� グローバル・アプリケーション、グローバル Web アプリケーション、および提供されるデフォルトの Web サイト

� サーバーが許容する 大 HTTP 接続数

� ロギング設定

� Java コンパイラ設定

� クラスタ ID

� トランザクション・タイムアウト

� SMTP ホスト

他の構成ファイルの参照他の構成ファイルの参照他の構成ファイルの参照他の構成ファイルの参照server.xmlファイルの他の構成ファイルを参照するには、次のものを指定します。

� データ・ソース構成の場所

� プリンシパル構成の場所

� JMS および RMI の構成の場所

server.xml の要素の説明の要素の説明の要素の説明の要素の説明次は、server.xmlファイルの要素および属性です。

<application-server>

この要素には、アプリケーション・サーバー用の構成が含まれています。

A-8 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 120: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

server.xml ファイルの要素

属性 :

� application-auto-deploy-directory=".../applications/auto" - 削除された EAR ファイルが自動的にインストールされ、その Web アプリケーションがデフォルトの Web サイトにバインドされるディレクトリを指定します。 デフォルトでは指定されていません。

� application-directory=".../applications" - アプリケーション(EAR ファイル)を格納するディレクトリを指定します。 何も指定されていない場合(デフォルト)、OC4J は、情報を [j2ee/home]/applicationsに格納します。 これは、admin.jarコマンドライン・ツールを使用してデプロイする際に使用します。

� deployment-directory=".../application-deployments"

� recovery-procedure="automatic|prompt|ignore"> - リカバリにどのように対処するかを指定します。

� automatic - 自動的にリカバリを試行(デフォルト)

� prompt - ユーザーにプロンプトを表示(システム・インおよびアウト)

� ignore - リカバリを無視(開発環境に便利)

<rmi-config>

属性 :

path=".../rmi.xml" - rmi.xmlファイルへのパスを指定します。

<jms-config>

属性 :

path=".../jms.xml" - jms.xmlファイルへのパスを指定します。

<principals>

属性 :

path=".../principals.xml" - principals.xmlファイルへのパスを指定します。

<log> <file>

属性 :

path=".../log/server.log" - イベントのログを記録するための相対パスまたは絶対パスを指定します。

<mail>

ログ・イベントの転送先の電子メール・アドレス。 このオプションを使用するには、有効なメール・セッションも指定する必要があります。

追加情報 A-9

Page 121: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

server.xml ファイルの要素

属性 :

address="[email protected]" - メール・アドレスを指定します。

<transaction-config>

サーバーのトランザクション構成。

属性 :

� timeout="60000" - トランザクションが、タイムアウトによりロール・バックされるまでの使用可能である 大時間(ミリ秒)を指定します。 デフォルト値は、60000 です。

<global-application>

このサーバーのデフォルト・アプリケーション。 これは、オブジェクトの可視性などに関し、他のアプリケーションの親として機能します。

属性 :

� name="default" - アプリケーションを指定します。

� path=".../application.xml" /> - application.xmlファイルへのパスを指定し

ます。

<application>

アプリケーションは、それ自身のユーザー、Web アプリケーションおよび EJB JAR ファイルを持つエンティティです。

属性 :

� auto-start="true|false" - 起動時にアプリケーションを起動するかどうかを指定します。 デフォルトは、true です。 多数のアプリケーションがインストールされており、それらを必要に応じて起動する場合には、auto-startを falseに設定すると便利です。 これにより、通常のサーバー起動時間、リソース使用率などを改善できます。

� deployment-directory=".../application-deployments/myapp" - アプリケーション・デプロイメント情報を格納するディレクトリを指定します。 何も指定しない場合(デフォルト)、OC4J はグローバル deployment-directoryを検索し、そこに何も存在しなければ、EAR ファイル内の情報を格納します。

� name="anApplication" - アプリケーションを参照するために使用する名前を指定します。

� parent="anotherApplication" - オプションの親アプリケーションの名前。 デフォルトは、グローバル・アプリケーションです。 子は、自分の親アプリケーションのネームスペースを参照します。 これは、EJB などのサービスを複数のアプリケーション間で共有するために使用します。

� path=".../applications/myApplication.ear" /> - myApplication.earファイルへのパス。

A-10 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 122: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

server.xml ファイルの要素

<global-web-app-config>

path=".../web-application.xml" /> - web-application.xmlファイルが存在する場所へのパス。

<max-http-connections>

特定のサイトがどの時点においても同時に受け付けることのできる 大接続数を制限するために使用します。 タグ内部にテキストが存在する場合、制限に達するとリダイレクト URL として使用されます。

属性 :

� max-connections-queue-timeout="10" - 大接続数に達した際に、接続が切断され、サーバーがビジーまたは接続がリダイレクトされる旨のメッセージが表示されるまでの秒数。 デフォルトは、10 秒です。

� socket-backlog - ソケット・レベルで接続を拒否するまでキューに入れられる接続数。 デフォルトは、30 です。

� value - 大接続数。

<web-site>

属性 :

� path=".../my-web-site.xml" /> - my-web-site.xmlファイルへのパス。

<compiler>

EJB または JSP コンパイル用の、代替コンパイラ(Jikes など)を指定します。

属性 :

� classpath="/my/rt.jar" - コンパイル時の代替または追加のCLASSPATHを指定します。 追加の CLASSPATH が必要となるコンパイラも存在します(Java 2 VM のrt.jarファイルをインクルードする必要がある Jikes など)。

� executable="jikes" /> - 使用する実行可能ファイルの名前(Jikes、JVC など)。

<cluster>

このサーバーのクラスタ設定。

属性 :

� id="123" /> - サーバーの一意のクラスタ。

追加情報 A-11

Page 123: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J コマンドライン・ツールのオプション

OC4J コマンドライン・ツールのオプションコマンドライン・ツールのオプションコマンドライン・ツールのオプションコマンドライン・ツールのオプションOC4J には、2 つのコマンドライン・ツール(orion.jarおよび admin.jar)があります。 次の項で、それぞれについて説明します。

orion.jar コマンドライン・ツールコマンドライン・ツールコマンドライン・ツールコマンドライン・ツールorion.jarコマンドライン・ツールを使用して、OC4J の起動、停止およびインストールを行うことが可能です。

表 A-1 に、orion.jarのオプションをすべて示します。

表表表表 A-1 orion.jar コマンドライン・オプションコマンドライン・オプションコマンドライン・オプションコマンドライン・オプション

オプションオプションオプションオプション 説明説明説明説明

-config <file> デフォルトの server.xmlファイル以外の構成ファイルを指定しま

す。

-validateXML すべての構成ファイルの妥当性チェックを厳密に行います。 これは、構

成ファイルを変更した後で構文を検証する場合に役立ちます。 指定しな

い場合、妥当性チェックは行われません。 このオプションには、イン

ターネットへの接続が必要となる点に注意してください。

-out [file] 標準出力にルーティングするファイルを指定します。 System.outに

出力されたメッセージ、およびサーブレット・ロギング・インタフェース経由で出力に送られたメッセージがロギングされるファイル。 指定しない場合、すべての出力は標準出力に書き込まれます。

-err [file] 標準エラーのルーティング先のファイルを指定します。 System.errとともにメッセージが出力されるファイルは、ロギングされます。 指定

しない場合、すべてのエラーは標準エラーに書き込まれます。

-install サーバーをインストールし、管理者アカウントをアクティブ化します。 オペレーティング・システムの LF に一致するよう、テキスト・ファイ

ルを書き換えます。 これは、初回のみ使用してください。

-userThreads ユーザーが作成したスレッドから、コンテキスト・ルックアップ・サポートを使用できるようにします。

-quiet 標準出力を抑制します。

-version バージョン番号を出力して、終了します。

-help ヘルプ・メッセージを出力します。

A-12 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 124: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J コマンドライン・ツールのオプション

admin.jar コマンドライン・ツールコマンドライン・ツールコマンドライン・ツールコマンドライン・ツールadmin.jarコマンドライン・ツールを使用すると、コマンドラインを使用してコンソールから OC4J を管理できるようになります。 構文は次のとおりです。

java -jar admin.jar ormi://<oc4j_host>:<oc4j_ormi_port> <admin_id> <admin_password> <options>

表 A-2 に、コマンドライン・ツールのすべてのオプションを示します。

表表表表 A-2 admin.jar コマンドライン・ツールのオプション(コンソール)コマンドライン・ツールのオプション(コンソール)コマンドライン・ツールのオプション(コンソール)コマンドライン・ツールのオプション(コンソール)

オプションオプションオプションオプション 説明説明説明説明

-shutdown OC4J サーバーをシャットダウンします。

-restart OC4J サーバーを再起動します。 orion.jarを使用して、コンテ

ナが起動されている必要があります。

-deploy アプリケーションをデプロイ(再デプロイ)します。 次のサブス

イッチでアプリケーション情報を提供します。

-file: デプロイする EAR ファイルのパスおよびファイル名。

-deploymentName: ユーザー定義のアプリケーション・デプロイ

名。

-targetPath: アーカイブのデプロイ先のサーバー・ノードのパ

ス。 デフォルトは、applications/ディレクトリです。 デプロイ

用に EAR ファイルがコピーされているディレクトリをターゲッ

ト・パスにすることをお薦めします。

<target_path>が指定されていない場合、EAR ファイルは

applications/ディレクトリにコピーされます。 OC4J は、EARファイルの一意の名前を維持します。 このため EAR ファイルを再

度デプロイすると、OC4J は、名前の前にアンダースコア文字(_)を付けてファイル名を変更して、他のアプリケーションの EARファイルがオーバーライドされないようにします。 しかし、同一

アプリケーションの場合、applications/ディレクトリには、

デプロイメントごとに別の EAR ファイルが含まれます。 ターゲッ

ト・パスを指定すると、こうした問題は生じません。

追加情報 A-13

Page 125: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

OC4J コマンドライン・ツールのオプション

-bindWebApp <app_deploy_name> <web_app_name> <web_site_name> <context_root>

指定されたサイトおよびルートに、Web アプリケーションをバイ

ンドします。

� <app_deploy_name>はアプリケーション名で、-deployオプションの -deploymentNameで使用されている名前と同

じです。 また、これは、server.xmlファイルの

<application name=<app_name> >変数に保存されてい

る名前とも同じである点に注意してください。

� <web_app_name>は、EAR ファイルに含まれている WARファイルの名前(.WAR拡張子なし)。

� <web_site_name>は、<name>-web-site.xmlファイル

の名前。この Web サイト・アプリケーションのバインド先

の Web サイトを示します。 これは、Web アプリケーション

の定義を受け取るファイルです。

� <context_root>は、Web モジュールのルート・コンテキ

ストです。

このオプションは、<web_site_name>変数に示された OC4J <name>-web-site.xml構成ファイル内に、エントリを作成し

ます。

-application <name> <command>

アプリケーション固有のコマンドおよびサブコマンド。 次のサブ

スイッチにより、詳細を指定します。

-dataSourceInfo: インストール済の DataSourceオブジェク

トに関する情報を取得します。

-restart: アプリケーションを再起動します。 オート・デプロイ

が使用可能になっていて、ファイルが変更された場合、これによりオート・デプロイがトリガーされます。

-addUser <username> <password>: アプリケーションが、

OC4J サーバーから起動されていなかった場合に、クライアントか

ら再起動しようとしているアプリケーションにユーザーを追加します。

表表表表 A-2 admin.jar コマンドライン・ツールのオプション(コンソール)コマンドライン・ツールのオプション(コンソール)コマンドライン・ツールのオプション(コンソール)コマンドライン・ツールのオプション(コンソール) (続き)(続き)(続き)(続き)

オプションオプションオプションオプション 説明説明説明説明

A-14 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 126: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

構成およびデプロイメントの例

構成およびデプロイメントの例構成およびデプロイメントの例構成およびデプロイメントの例構成およびデプロイメントの例次の例で、OC4J における J2EE アプリケーションの構成およびデプロイ方法を示します。

� J2EE アプリケーションの XML 構成例

� デプロイの例

J2EE アプリケーションのアプリケーションのアプリケーションのアプリケーションの XML 構成例構成例構成例構成例この例では、myappアプリケーションには、Java クライアント、JAR ファイルにアセンブルされた EJB、WAR ファイルにアセンブルされたサーブレットと JSP、EJB の JAR ファイルと Web アプリケーションの WAR ファイルの両方が入っている EAR ファイルが含まれています。 すべての XML 構成ファイルの場所、Java クライアント・ファイル、および JSP ファイルを表すツリー構造を、次の図 8–2 に示します。 すべての構成ファイルを、アプリケーション・ディレクトリ内の論理ディレクトリに分けることができる点に注意してください。

図図図図 8–2 アプリケーションアプリケーションアプリケーションアプリケーション EAR の構造の構造の構造の構造

myapp.EAR|-------META-INF| `-------application.xml||-------client.JAR| |-------META-INF| | |-------application-client.xml| | `-------orion-application-client.xml| `-------TemplateClient.class|-------ejb.JAR| |-------META-INF| | `-------ejb-jar.xml| |-------Template.class| |-------TemplateBean.class| `-------TemplateHome.class`-------web.JAR |-------WEB-INF | |-------web.xml | `-------classes | `-------TemplateServlet.class |-------add.jsp |-------delete.jsp |-------edit.jsp |-------index.html |-------list.jsp `-------serv.jsp

追加情報 A-15

Page 127: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

構成およびデプロイメントの例

application.xml の例の例の例の例myapp/META-INF/application.xmlファイルには、<module>要素の EAR ファイルに含まれる、EJB JAR および Web アプリケーション WAR ファイルがリストされています。

<?xml version="1.0"?><!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN" "http://java.sun.com/j2ee/dtds/application_1_2.dtd"><application> <display-name>myapp j2ee application</display-name> <description> A sample J2EE application that uses a Container Managed Entity Bean and JSPs for a client. </description> <module> <ejb>myapp-ejb.jar</ejb> </module> <module> <web> <web-uri>myapp-web.war</web-uri> <context-root>/myapp</context-root> </web> </module></application>

web.xml の例の例の例の例myapp/web/WEB-INF/web.xmlファイルには、EJB のクラス定義、サーブレット、およびWeb サイト内で実行される JSP が含まれます。 myappという Web モジュールは、ディスクリプタで次のようなものを指定します。

� 場所とルート・コンテキスト(Web サーバー + /myapp)を bindコマンドで指定したときに表示するデフォルトのページ

� EJB ホームおよびリモート・インタフェースのスタブを検索する場所

� EJB の JNDI 名

� インクルードされたサーブレット、および各サーブレット・クラスの検索場所

� アプリケーションの場所とルート・コンテキスト(Web サーバー + /myapp)から<servlet-mapping>要素(/template)を切り離して使用し、サーブレットをサブコンテキストにマップする方法

Web サーバーは次を検索します。

� WEB-INF/classes/<package>.<class>の下にある全サーブレット・クラス。

� web-site.xml(デプロイ済の対応アプリケーション EAR ファイルにパッケージされている)の <web-app name="<warfile.extension>">で指定されている WARファイルのルートにある全 HTML および JSP。

A-16 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 128: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

構成およびデプロイメントの例

� OC4J は、 初に使用したときに、各 JSP を .javaから .classにコンパイルして、次回から使用できるようにキャッシュします。

<?xml version="1.0"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app> <display-name>myapp web application</display-name> <description> Web module that contains an HTML welcome page, and 4 JSP's. </description> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <ejb-ref> <ejb-ref-name>myapp/ejb/TemplateBean</ejb-ref-name> <ejb-ref-type>Entity</ejb-ref-type> <home>myapp.ejb.TemplateHome</home> <remote>myapp.ejb.Template</remote> </ejb-ref> <servlet> <servlet-name>template</servlet-name> <servlet-class>myapp.web.TemplateServlet</servlet-class> <init-param> <param-name>param1</param-name> <param-value>1</param-value> </init-param> </servlet></web-app>

ejb-jar.xml の例の例の例の例myapp/ejb/META-INF/ejb-jar.xmlファイルには、コンテナ管理による永続的な EJB の定義が含まれています。 myappの EJB デプロイメント・ディスクリプタには、次のものが含まれます。

� Entity Bean は、コンテナ管理の永続性を使用します。

� 主キーは、テーブルに格納されます。 このディスクリプタは、主キーのタイプおよびフィールドを定義します。

� 永続テーブルは、すでに存在するか、または application.xmlのautocreate-tablesが FALSEに設定されている場合を除き、自動的に作成されます。

� テーブル名は beannameで、列の名前は、ejb-jar.xmlディスクリプタのフィールド、および database-schemas/oracle.xmlのタイプ・マッピングに基づいて付けられます。

追加情報 A-17

Page 129: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

構成およびデプロイメントの例

� Bean は、orion-application.xmlの ejb-locationまたはdefault-data-sourceにより data-source.xmlに指定されているとおり、JDBCを使用してデータベースにアクセスします。

<?xml version="1.0"?><!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd">

<ejb-jar> <display-name>myapp</display-name> <description> An EJB app containing only one Container Managed Persistence Entity Bean </description> <enterprise-beans> <entity> <description> template bean populates a generic template table. </description> <display-name>TemplateBean</display-name> <ejb-name>TemplateBean</ejb-name> <home>myapp.ejb.TemplateHome</home> <remote>myapp.ejb.Template</remote> <ejb-class>myapp.ejb.TemplateBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>java.lang.Integer</prim-key-class> <reentrant>False</reentrant> <cmp-field><field-name>empNo</field-name></cmp-field> <cmp-field><field-name>empName</field-name></cmp-field> <cmp-field><field-name>salary</field-name></cmp-field> <primkey-field>empNo</primkey-field> </entity> </enterprise-beans> <assembly-descriptor> <container-transaction> <method> <ejb-name>TemplateBean</ejb-name> <method-name>*</method-name> </method> <trans-attribute>NotSupported</trans-attribute> </container-transaction> <security-role> <description>Users</description> <role-name>users</role-name> </security-role> </assembly-descriptor></ejb-jar>

A-18 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 130: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

構成およびデプロイメントの例

server.xml の追加の追加の追加の追加admin.jarコマンドライン・ツールを使用してアプリケーションをデプロイする際に、コマンドライン・ツールで、アプリケーションの EAR ファイルの場所を server.xmlファイルに追加します。 これにより、OC4J が再起動するたびにアプリケーションが再起動されます。 OC4J でアプリケーションが再起動されないようにするには、auto-start変数をFALSEに変更します。

<application name="myapp" path="../myapp/lib/myapp.ear" auto-start="true" ">

各項目の説明 :

� name変数は、アプリケーションの名前です。

� pathは、EAR ファイルのディレクトリおよびファイル名を示します。

� auto-start変数は、OC4J が再起動されるごとに、このアプリケーションを自動的に再起動するかどうかを示します。

default-web-site.xml の追加の追加の追加の追加WAR ファイル名を指定するとともに、WAR ファイル内でデプロイされている Web アプリケーションのルート・コンテキストを定義してください。 default-web-site.xmlを編集し、次を追加します。

<web-app application="myapp" name="myapp-web" root="/myapp" />

� name変数は、.WAR拡張子を持たない WAR ファイルの名前です。

� root変数は、Web サイト外のアプリケーションのルート・コンテキストを定義します。 たとえば、Web サイトを "http://<apache_host>:7777/j2ee"と定義する場合、アプリケーションを起動するには、ブラウザで"http://<apache_host>:7777/j2ee/myapp"を指定します。

クライアントの例クライアントの例クライアントの例クライアントの例myappアプリケーションにアクセスするアプリケーション・クライアントはディスクリプタを持っており、これが EJB スタブ(ホームおよびリモート・インタフェース)および JNDI名のルックアップを行う場所を示します。

クライアント XML 構成は、application-client.xmlおよびorion-application-client.xmlという 2 つのファイルに含まれています。

注意注意注意注意 : auto-startを FALSEに設定すると、admin.jarコマンドライン・ツールを使用して手動でアプリケーションを起動することができます。設定しない場合は、Web ブラウザがアプリケーションを要求したときに自動的に起動されます。

追加情報 A-19

Page 131: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

構成およびデプロイメントの例

application-client.xmlファイルには、次のような、EJB 参照が含まれています。

<?xml version="1.0"?><!DOCTYPE application-client PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application Client 1.2//EN" "http://java.sun.com/j2ee/dtds/application-client_1_2.dtd">

<application-client><display-name>TemplateBean</display-name><ejb-ref>

<ejb-ref-name>TemplateBean</ejb-ref-name><ejb-ref-type>Entity</ejb-ref-type><home>myapp.ejb.TemplateHome</home><remote>myapp.ejb.Template</remote>

</ejb-ref></application-client>

orion-application-client.xmlファイルは、EJB 参照の論理名を、EJB の JNDI 名にマップします。 たとえば、このファイルは、application-client.xmlに定義されている"TemplateBean,"という <ejb-ref-name>要素を、次のように、"myapp/ejb/TemplateBean" という JNDI 名にマップします。

<?xml version="1.0"?><!DOCTYPE orion-application-client PUBLIC "-//Evermind//DTD J2EE Application-client runtime 1.2//EN" "http://xmlns.oracle.com/ias/dtds/orion-application-client.dtd">

<orion-application-client><ejb-ref-mapping name="TemplateBean" location="myapp/ejb/TemplateBean" />

</orion-application-client>

クライアントのクライアントのクライアントのクライアントの JNDI プロパティプロパティプロパティプロパティ 初期 JNDI コンテキスト・ファクトリを検索するように、通常のクライアント用の JNDI プロパティを設定します。

1. ハッシュテーブル内の JNDI プロパティを設定します。

2. そのプロパティを、javax.naming.InitialContextまたは jndi.propertiesファイルに渡します。

3. jndi.propertiesファイルに JNDI プロパティを指定する場合、プロパティをmyapp-client.jarにパッケージして、必ず CLASSPATH内に置くようにしてください。

jndi.properties:---------------java.naming.factory.initial=com.evermind.server.ApplicationClientInitialContextFactoryjava.naming.provider.url=ormi://<apache_host>:7777/j2ee/myappjava.naming.security.principal=adminjava.naming.security.credentials=welcome

A-20 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 132: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

構成およびデプロイメントの例

デプロイの例デプロイの例デプロイの例デプロイの例J2EE アプリケーションを開発した後、J2EE アプリケーションの異なるモジュール(EJB、Web およびクライアント)を EAR ファイルにアセンブルします。 この項では、EJB、Webおよびクライアント・セクションを持つ J2EE アプリケーションの例を説明します。

次の記述子(META-INF/application.xml)は、J2EE アプリケーションに、WAR、EJB JAR およびクライアント JAR ファイルを含める方法を示しています。

<?xml version="1.0"?><!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN" "http://java.sun.com/j2ee/dtds/application_1_2.dtd"><application> <display-name>myapp j2ee application</display-name> <description> A sample J2EE application that uses a Container Managed Entity Bean and JSP's for a client. </description> <module> <ejb>myapp-ejb.jar</ejb> </module> <module> <web> <web-uri>myapp-web.war</web-uri> <context-root>/myapp</context-root> </web> </module> <module> <java>myapp-client.jar</java> </module></application>

admin.jarコマンドライン・ツールを使用してクライアントからこのアプリケーションをデプロイするには、myappディレクトリから次のように実行します。 これは、-fileオプションの EAR ファイルを定義し、その EAR ファイルを -targetPathオプションにコピーするためのターゲット・パスを定義している点に注意してください。 EAR が存在するパスとターゲット・パスが同じであるため、コピーはされません。

% java -jar $J2EE_HOME/admin.jar ormi://oc4j_host admin welcome -deploy -file ./lib/myapp.ear -deploymentName myapp -targetPath ./lib

Auto-deploying myapp (New server version detected)...Auto-deploying myapp-ejb.jar (ejb-jar.xml had been touched since the previous deployment)... done.Auto-deploying myapp web application (New server version detected)...

追加情報 A-21

Page 133: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

構成およびデプロイメントの例

これは、次の内容を server.xmlに追加します。

<application name="myapp" path="/private/myapp/lib/myapp.ear" auto-start="true" />

各項目の説明 :

� name変数は、アプリケーションの名前です。

� pathは、EAR ファイルの絶対ディレクトリおよびファイル名を示します。

� auto-start変数は、OC4J が再起動されるたびに、このアプリケーションを自動的に再起動するかどうかを示します。

これらを追加することにより、デフォルトで、OC4J サーバーとともにアプリケーションを自動的に起動することができ、myapp.ear内のコンポーネントにアクセスするたびに、後続のホット・デプロイを使用できるようにします。 しかし、auto-startを FALSEに設定すると、アプリケーションは、使用時または手動で起動されたときに開始されます。 次のコマンドは、myappアプリケーションを手動で起動する方法を示しています。

% java -jar admin.jar ormi://oc4j_host admin welcome -application myapp -restart

EJB モジュールモジュールモジュールモジュールホーム・インタフェース、リモート・インタフェース、Bean クラスおよび XML ディスクリプタ(META-INF/ejb-jar.xml)を持つ EJB モジュールを、EJB JAR ファイルにパッケージします。

EJB モジュールは、J2EE アプリケーションの EAR ファイルの一部としてデプロイされます。

% java -jar admin.jar ormi://oc4j_host admin welcome -deploy -file ./lib/myapp.ear -deploymentName myapp -targetPath ./lib

Auto-deploying myapp (New server version detected)...Auto-creating table: create table TemplateBean (col_1 NUMBER not null primary key, col_2 VARCHAR2(255) null, col_3 FLOAT null)Auto-deploying myapp-ejb.jar (Class 'myapp.ejb.Template' had been updated)... done.

datasource.xmlを編集して、適切なデータ・ソースを設定します。

注意注意注意注意 : EJB JAR ファイルはすぐに解凍され、WAR ファイルは、Web ブラウザで /myappに移動したときに解凍されます。

A-22 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 134: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

構成およびデプロイメントの例

Web モジュールモジュールモジュールモジュール — EJB をコールするサーブレットおよびをコールするサーブレットおよびをコールするサーブレットおよびをコールするサーブレットおよび JSPHTML ページ、JSP およびサーブレットを持つ Web モジュールは、WEB-INF/web.xmlディスクリプタを持つ WAR ファイルにパッケージします。

J2EE アプリケーション(EAR ファイル)の Web コンポーネント(WAR ファイル)を Webサイトにバインドするには、次のようにします。

% java -jar admin.jar ormi://oc4j_host admin welcome -bindWebApp myapp myapp-web default-web-site /myapp

次の内容を default-web-site.xmlに追加します。

<web-app application="myapp" name="myapp-web" root="/myapp" />

クライアント・モジュールクライアント・モジュールクライアント・モジュールクライアント・モジュール — EJB を起動するスタンドアロンのを起動するスタンドアロンのを起動するスタンドアロンのを起動するスタンドアロンのJava クライアントクライアントクライアントクライアントクライアント・モジュールは、META-INF/application-client.xmlディスクリプタを持つ JAR ファイルにパッケージします。

クライアントのマニフェスト・ファイルクライアントのマニフェスト・ファイルクライアントのマニフェスト・ファイルクライアントのマニフェスト・ファイル 次に示すとおり、クライアントを、実行用のメイン・クラスおよび必要な CLASSPATHを持ったマニフェストを持つ実行可能な JAR ファイルにパッケージします。 このファイルの相対パスが正しいことを確認してください。

manifest.mf-----------Manifest-Version: 1.0Main-Class: myapp.client.TemplateClientName: "TemplateClient"Created-By: 1.2 (Sun Microsystems Inc.)Implementation-Vendor: "Oracle"Class-Path: ../../../j2ee/home/orion.jar ../../../j2ee/home/jndi.jar ../../../j2ee/home/ejb.jar ../lib/myapp-ejb.jar

クライアントの実行クライアントの実行クライアントの実行クライアントの実行 クライアントを実行するには次のようにします。

% java -jar lib/myapp-client.jar TemplateClient.main(): startEnter integer value for col_1: 1Enter string value for col_2: BuyMEEnter float value for col_3: 99.9Record added through bean

追加情報 A-23

Page 135: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

構成およびデプロイメントの例

A-24 Oracle9iAS Containers for J2EE ユーザーズ・ガイド

Page 136: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

索引索引索引索引

記号記号記号記号<application> 要素,7-12<ejb> 要素,7-10<java> 要素,7-10<module> 要素,7-10<web> 要素,7-10$J2EE_HOME,2-4%J2EE_HOME%,2-4

AACL

定義,1-15admin.jar

server.xml,7-11Web コンテキストのバインド,2-9

admin.jar コマンド,7-11admin.jar ツール

アンデプロイ,2-10管理,2-5再起動,2-5シャットダウン,2-6デプロイ,2-9デプロイに使用,2-3

AJP,1-16Apache

Oracle HTTP Server,2-2Apache JServ Protocol(AJP),1-16Apache Server,1-1Apache コンソーシアム,1-5application.xml ファイル,7-10

概要,7-10例,7-10

BBean

削除,7-6作成,7-3実装,7-5

CCGI,5-3CLASSPATH,2-2Connection Pooling,1-12CreateException,7-4create メソッド,7-6

EJBHome インタフェース,7-3

DDB/2 UDB,1-12default-web-app ディレクトリ

オート・デプロイ,2-3destroy(),5-10Document Type Definition(DTD),A-3DTD,A-3DTD ファイル,7-8

EEAR ファイル,7-1

構造,2-8作成,2-8,7-11デプロイでの使用,2-8

EJB,6-2Entity Bean,1-9Session Bean,1-9

索引索引索引索引 -1

Page 137: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

アーカイブ,7-9開発の提案,7-2作成,7-2,7-3,7-5定義,1-8デプロイ,2-8,7-11

コマンドライン・ツール,7-11手動,7-12

デプロイメント・ディスクリプタ,7-8ホーム・インタフェース,7-3リモート・インタフェース,7-4

ejbCreate メソッド,7-3EJBException,7-4,7-5EJBHome インタフェース,7-3,7-4ejb-jar.xml ファイル,7-8EJBObject インタフェース,7-3,7-4EJB のアーカイブ,7-9Enterprise Archive ファイル「EAR ファイル」を参照

Enterprise JavaBeans「EJB」を参照

Enterprise JavaBeans(EJB),6-2EntityBean インタフェース,7-3

HHTTP トンネリング,1-16

IInformix,1-12

JJ2EE

機能,1-2定義,1-1バージョン,1-2

J2EE_HOME 環境変数,2-4JAR

アーカイブのコマンド,7-9jar コマンド,7-9JAR ファイル

EJB,7-9Java Message Service(JMS),1-16Java Messaging Service(JMS),A-4Java Transaction API(JTA),1-14Java Transaction Service(JTS),1-14

JavaBeansBean の OC4J ディレクトリ構造への配置,6-10JavaBean をコールする JSP コード,6-8

JDBC指定ドライバ,1-12定義,1-12

JDBC 2.0,1-14JDBC-OCI ドライバ,1-12JDBC 接続,4-4JDK

定義,1-1Jikes,A-11JMS,1-16,A-4

定義,1-14JNDI

定義,1-13ルックアップ,7-6

JSPキャッシング・タグ,1-8定義,1-6デフォルトのデプロイ,2-3デプロイ,2-8

JSP ページJavaBean をコールするコード,6-8OC4J ディレクトリ構造への配置,6-6OC4J での実行,6-6Oracle 追加機能の概要,6-16概要,6-2タグ・ライブラリの使用手順,6-12タグ・ライブラリ・ファイルの OC4J ディレクトリ

構造への配置,6-14タグ・ライブラリを使用するためのコード,6-13単純なサンプル・コード,6-2

JTA,1-14定義,1-13

JTS,1-14JVM

定義,1-1

LLoadBalancer

定義,1-17

MMDB

索引索引索引索引 -2

Page 138: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

定義,1-10Merant JDBC ドライバ,1-12Message-Driven Bean「MDB」を参照

Microsoft SQL Server,1-12mod_proxy モジュール,2-2

OObject Management Group(OMG),1-14Object Transaction Service(OTS),1-14OC4J,A-12

管理,2-5起動,2-4再起動,2-5シャットダウン,2-6セットアップ,2-2

OC4J Remote Method Invocation(ORMI),2-5OC4J の SQLJ,2-3OCI ドライバ,1-12ODBC,1-12OJSP,1-7OMG,1-14Open Database Connectivity(ODBC),1-12Oracle HTTP Server,1-1

フロントエンド・リスナー,2-2Oracle JDBC-OCI ドライバ,1-12Oracle JSP Translator(OJSP),1-7Oracle Net Services プロトコル,1-12Oracle Thin JDBC ドライバ,1-12Oracle8,1-12Oracle8i,1-12Oracle9i,1-12orion-application.xml,8-3orion.jar ツール

起動,2-4ORMI,2-5OTS,1-14

PPortableRemoteObject

narrow メソッド,7-6principals.xml ファイル,2-5

RRAR ファイル,3-10Remote Method Invocation(RMI),A-4RemoteException,7-4,7-5remove メソッド,7-6Resource Adapter Achieve(RAR)ファイル,3-10RMI,3-8,A-4

SSecure Sockets Layer(SSL),1-15server.xml 構成ファイル,2-5server.xml ファイル,2-9,7-12Session Bean

ホーム・インタフェース,7-4SessionBean インタフェース

EJB,7-3SSL,1-15,8-4Sybase,1-12

TThin JDBC ドライバ,1-12Tomcat,1-5

WWAR

定義,1-5Web

サーバー,1-1Web Application Archive(WAR)ファイル,1-5Web アプリケーション

デプロイ,2-8Web コンテキスト

バインド,2-9

ああああアーカイブ

EAR ファイル,7-11手順,7-9

アプリケーションアンデプロイ,2-10デプロイ,2-8バインド,2-9

索引索引索引索引 -3

Page 139: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

アンデプロイ,2-10

かかかか開発

推奨事項,2-7概要

JSP テクノロジ,6-2管理,2-5

きききき起動,2-4

くくくくクラスタ

定義,1-17

ここここ構成

server.xml,2-5,2-9デフォルト,2-2

ささささサーブレット

エンジンのサポート,1-4定義,1-4デフォルトのデプロイ,2-3デプロイ,2-8フィルタ,1-5フェイルオーバー,1-6

再起動,2-5

しししし私有鍵ペア,8-4

せせせせセキュリティ

定義,1-15接続コンテキスト,4-4

たたたたタグ・ライブラリ

JSP ページでの使用手順,6-12サポート・ファイルの OC4J ディレクトリ構造への

配置,6-14使用する JSP コード,6-13

ててててデータベース

DB/2 UDB,1-12Informix,1-12Microsoft SQL Server,1-12Oracle8,1-12Oracle8i,1-12Oracle9i,1-12Sybase,1-12

デプロイ,2-8検証,2-10コマンドライン・ツール,7-11自動,2-3

デプロイメント・ディスクリプタ,7-8

とととと問合せ文字列,5-6

ななななナローイング,7-6

ははははハッシュテーブル,A-20

ふふふふフィルタ,1-5フェイルオーバー

定義,1-17フォルト・トレランス

定義,1-17フロントエンド・リスナー

Oracle HTTP Server,2-2

索引索引索引索引 -4

Page 140: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

ほほほほホーム・インタフェース

Bean インスタンスの作成,7-6作成,7-3ルックアップ,7-6例,7-4

ホット・デプロイ,3-9

ままままマニフェスト・ファイル,2-8

りりりりリモート・インタフェース

作成,7-3,7-4ビジネス・メソッド,7-6例,7-5

索引索引索引索引 -5

Page 141: Oracle9iAS Containers for J2EE ユーザーズ・ガイドotndnld.oracle.co.jp/products/oc4j/pdf/1022/ug.pdf · 2002-09-06 · v はじめに 「はじめに」では、『Oracle9iAS

索引索引索引索引 -6