39
Oracle Forms Services R6i クライアントとの対話の実現 Creation Date: Jul 04, 2001 Last Update: Jul 31, 2001 Version: 1.0

Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Embed Size (px)

Citation preview

Page 1: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i クライアントとの対話の実現

Creation Date: Jul 04, 2001

Last Update: Jul 31, 2001

Version: 1.0

Page 2: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

1

0 目次

0 目次................................................................................................. 1

1 はじめに ........................................................................................... 3

1.1 目的.................................................................................................................. 3

1.2 対象読者........................................................................................................... 3

1.3 動作確認環境.................................................................................................... 3

2 アーキテクチャ................................................................................... 4

2.1 C/S でのアプリケーション実行 ........................................................................ 4

2.2 WEB でのアプリケーション実行....................................................................... 5

2.3 WEB における制限............................................................................................ 5

2.4 JAVABEAN ........................................................................................................ 6

3 JAVABEAN の作成 ............................................................................. 7

3.1 必要な機能 ....................................................................................................... 7

3.2 JDEVELOPER による作成 .................................................................................. 7

3.3 JDK による作成............................................................................................. 18

4 FORMS への組み込み ........................................................................ 19

4.1 モジュール作成 .............................................................................................. 19

4.2 プログラム単位の作成.................................................................................... 19

4.3 項目作成......................................................................................................... 20

4.4 トリガー作成.................................................................................................. 22

4.5 モジュールの確認........................................................................................... 23

4.6 テスト実行 ..................................................................................................... 24

5 WEB 環境への配置 ............................................................................ 26

5.1 製品インストール........................................................................................... 26

5.2 JAR ファイルの作成 ...................................................................................... 26

5.3 JAR のデジタル署名 ...................................................................................... 27

5.4 FORMS SERVICES の設定 ................................................................................ 31

5.5 クライアントの設定 ....................................................................................... 31

6 アプリケーション実行 ........................................................................ 33

6.1 実行................................................................................................................ 33

7 トラブル・シューティング................................................................... 34

Page 3: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

2

7.1 実行環境の確認 .............................................................................................. 34

7.2 開発時の確認.................................................................................................. 36

7.3 その他 ............................................................................................................ 36

Page 4: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

3

1 はじめに

1.1 目的 Oracle Forms Developer は、クライアント・サーバー(以下 C/S)環境および Web

環境で同一のモジュールを実行可能です。これはつまり、C/S を対象に構築された

アプリケーションを Web アプリケーションとして容易に展開し直すことが可能で

あることを意味します。

しかし、C/S 環境で実現していたクライアント・マシンのリソースへのアクセス

は、Web 環境ではセキュリティの観点から Java により制限されており、そのまま

では動作できません。

本ドキュメントでは、Oracle Forms Developer アプリケーションを Web 環境で実

行する際にクライアント・マシンのリソースへのアクセスを実現する方法を、実

際の例を用いて説明しています。

1.2 対象読者

本ドキュメントは、Oracle Forms Developer による開発方法を理解している方を

対象に作成されています。Oracle Forms Developer の操作方法等に関しては言及し

ていませんのでご注意下さい。

Oracle Forms Developer によるアプリケーション開発方法に関しては、製品付属

のオンライン・ドキュメント等を参照して下さい。

1.3 動作確認環境 本ドキュメント作成にあたり使用した製品のバージョンは以下の通りです。

製品 バージョン

Oracle Forms Developer Release 6i Patch5 (Forms 6.0.8.13.0)

Oracle JInitiator 1.1.8.7 および 1.1.8.10

Oracle JDeveloper 3.2.3

Oracle9i Application Server R1.0.2.1 for Windows NT/2000

Netscape Communicator 4.73

Internet Explorer 5.0

Page 5: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

4

2 アーキテクチャ この章では、C/S と Web での Forms アプリケーション実行の仕組みの違いを簡単に説明

します。Web 環境でのアプリケーション実行の詳細に関しては、製品付属の「Forms アプ

リケーション Web 利用ガイド」を参照して下さい。

2.1 C/S でのアプリケーション実行 クライアント・サーバー環境で Forms アプリケーションを実行する場合、シス

テムは下図の通り構成されます。

図 1 C/S での Forms アプリケーション実行の様子

すべてのクライアントに Forms ランタイム・エンジンがインストールされ、モ

ジュール(.fmx ファイル、.plx ファイルなど)もクライアント側に格納されます。

アプリケーション実行時にはクライアント上で Forms ランタイムが起動し、

SQL*Net または Net8 を使用してリモート・データベースに接続しています。デー

タベースに存在するのはデータとロジックの一部(ストアド・プロシージャ)だ

けです。それ以外のロジックはすべてクライアントのランタイム上で実行されま

す。

Page 6: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

5

2.2 Webでのアプリケーション実行

Web 環境で Forms アプリケーションを実行する場合、システムは下図の通り構

成されます。

図 2 Webでの Forms アプリケーション実行の様子

クライアントとデータベースの間に、新たにアプリケーション・サーバーと呼

ばれる層を配置し、アプリケーション・サーバー上に Web リスナー(HTTP サー

バー)と共に Forms Services を搭載します。

C/S ではクライアント側に置かれていた Forms ランタイム、アプリケーション・

モジュール等は全てアプリケーション・サーバー上に置かれ、アプリケーション

実行はすべてアプリケーション・サーバー上で行われます。

クライアント側には、ブラウザと、Forms アプリケーションを実行するために必

要な Java Virtual Machine(JVM)があり、Forms アプリケーションのユーザー・イ

ンターフェースを表示します。

クライアントとアプリケーション・サーバー間のデータ通信は TCP/IP のソケッ

ト通信、または HTTP、HTTPS で行われます。

2.3 Webにおける制限 Web 環境で Forms アプリケーションを実行する場合、Forms アプリケーション

はアプリケーション・サーバー上で実行されます。そのため、C/S 形式で実現して

いたいくつかの機能が、そのままでは動作しない場合があります。その代表例が、

Page 7: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

6

クライアント・マシンのアプリケーション起動や、ファイルのやりとりです。

WebFormsアプリケーションでHOSTコマンド等を使用してアプリケーションを

実行すると、起動するのはアプリケーション・サーバー上のアプリケーションで

す。例えば、テキスト・エディタを起動させた場合、エディタはアプリケーショ

ン・サーバー上に起動してしまいます。

この現象を回避するには、該当の機能を一部作り替える必要があります。その

際に使用するのが JavaBean という Java テクノロジです。

2.4 JavaBean

Web 環境で Forms アプリケーションを実行する場合、クライアントのブラウザ

には Oracle JInitiator などの JVM が搭載されている必要があります。この JVM は、

アプリケーション・サーバー上で実行された Forms アプリケーションの UI 部分を

クライアント側に提供するだけでなく、アプリケーションに組み込まれた Java で

構築されたコンポーネントをも実行可能です。このコンポーネントが JavaBean で

す。JavaBean は Forms 独自の機能ではなく、Java 一般のテクノロジです。あるビ

ジネス・ロジックを提供する機能を1つのコンポーネントとしてまとめ、様々な

Java 実行形態で利用することができます。

Forms には JavaBean をモジュールに組み込み、Web アプリケーションで実行さ

せるための Bean 項目が搭載されています。Bean項目に組み込まれた JavaBean は、

Web ブラウザを通してクライアントにダウンロードされ、クライアントの JVM 上

で動作します。

Page 8: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

7

3 JavaBeanの作成

3.1 必要な機能 クライアントのリソースにアクセスする機能としてよく使用されるのが、

Developer ビルトイン・パッケージ「TEXT_IO」によるファイル入出力です。この

ファイル入出力機能に注目して、クライアントのリソース・アクセスの実現方法

を説明します。

アプリケーションにTEXT_IOパッケージによるファイル入出力機能が組み込ま

れている場合、デフォルトではアプリケーション・サーバー側のファイルが使用

されます。この動作を、アプリケーションを実行しているクライアントのファイ

ルを使用するように変更します。

今回は TEXT_IO パッケージ内の以下のプログラムを JavaBean で置き換える例

を紹介します。

プログラム 内容

FOPEN 指定したクライアント側のファイルを開く

GET_LINE ファイルから1行データを読み込む

FCLOSE ファイルを閉じる

3.2 JDeveloperによる作成 本ドキュメントでは、オラクル社 Java 開発ツール「Oracle JDeveloper」を用いて

JavaBean を作成する方法を紹介します。JDeveloper には Oracle Forms 用の Pluggable

Java Component(PJC)を作成するためのウィザードが搭載されており、Forms ア

プリケーションに組み込む JavaBean のスケルトンをウィザードで簡単に作成する

ことが可能です。

今回使用するのは Oracle JDeveloper バージョン 3.2.3 です。ご利用のバージョン

により若干インタフェースが異なる場合がありますが、適宜置き換えてご利用下

さい。なお、Oracle JDeveloper のインストールに関してはインストレーション・ガ

イド等を参照して下さい。

① JDeveloper の起動

スタートメニュー→プログラム→Oracle JDeveloper 3.2.3→JDeveloper を選択し、

Oracle JDeveloper を起動します。

Page 9: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

8

② 新規プロジェクトの作成

JavaBean 作成用の新規プロジェクトを作成します。

メニューから「ファイル→新規プロジェクト」を選択し、「プロジェクト・ウィ

ザード」を起動します。「初期画面」では「次へ」をクリックします。

Page 10: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

9

③ 「プロジェクト・タイプ」

プロジェクトの種類を設定します。以下の通り設定して下さい。

設定項目 設定内容および設定値

プロジェクトの内容を格納するファイルを指定 プロジェクト・ファイル名

を指定 Text_IO.jpr (パスはそのまま)

プロジェクトで扱うものを指定 作成するプロジェクトの

タイプ 「次の新規オブジェクトを含むプロジェクト」を選択

し、リストボックスから「Oracle Forms プラグ可能

Java コンポーネント」を選択

Page 11: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

10

④ 「プロジェクト・オプション」

プロジェクトのパス等の設定を行います。以下の通り設定します。

設定項目 設定値

デフォルト・パッケージ名 oracle.forms.demos

Page 12: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

11

⑤ 「プロジェクト情報」

必要であれば、その他のプロジェクト情報を記述します。

⑥ 「完了」

設定内容を確認し、「完了」をクリックします。

Page 13: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

12

⑦ PJC ウィザード

続いて PJC ウィザードが起動します。以下を設定します。

設定項目 設定内容および設定値

作成するクラスのクラス名 クラス

Text_IO

作成する JavaBean のスーパークラス 拡張対象

oracle.forms.ui.VtextField

⑧ Text_IO.java ファイルの確認

Text_IO プロジェクトに、Text_IO.java ファイルが作成されました。このファイ

ルにコードを追加することにより、JavaBean を作成します。以下は、作成された

コードです。 // Copyright (c) 2001 Oracle Japan package oracle.forms.demos; import oracle.forms.ui.*; /** * PJCクラス * <P>

Page 14: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

13

* @author Oracle Taro */ public class Text_IO extends VTextField { /** * 新規インスタンスを構築 */ public Text_IO() { super(); try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } /** * このインスタンスの状態を初期化 */ private void jbInit() throws Exception { } }

⑨ プロパティを設定

JavaBean と Forms との通信は、JavaBean 側に設定されたプロパティを通じて行

われます。Forms 側からプロパティおよびそれに付随する値を指定することにより、

JavaBean 内の該当するロジックが動作します。

今回設定するのは以下の 3 種のプロパティです。

プロパティ 搭載する機能

fopen ファイルを開く

get_line ファイルから1行データを読み込む

fclose ファイルを閉じる

// JavaBeanと Forms の通信を行うプロパティを設定 // ファイルを開く fopen private static final ID FOPEN = ID.registerProperty("fopen" ); // ファイルから1行データを取得する get_line private static final ID GET_LINE = ID.registerProperty("get_line"); // ファイルを閉じる fclose private static final ID FCLOSE = ID.registerProperty("fclose" );

プロパティの設定

Page 15: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

14

⑩ setPropertyメソッドへの機能の組み込み

setProperty メソッドを作成し、前ステップで作成したプロパティ毎にロジックを

組み込みます。

setProperty メソッドは次の形を取ります。 public boolean setProperty(ID pid, Object value) { if (pid == <プロパティ名>) { try { <実際のロジック> } catch (Exception e) { <エラー制御> e.printStackTrace(); } return true; } ・・・ return super.setProperty(pid, value); } }

setProperty メソッド

⑪ fopen ロジック

ファイルを開くロジックを、以下の通り組み込みます。

値として渡されたファイル名(value)をもとにファイルを開き、ファイルのデ

ータを buffer に格納します。また、buffer に格納されたデータを1行分ずつ取得可

能なよう、StringTokenizer を使用して改行コード(¥n)毎に区切れるよう設定しま

す。 if (pid == FOPEN) { try { File fileName = new File((String)value); inFile = new FileInputStream(fileName); byte[] buffer = new byte[inFile.available()]; inFile.read(buffer); st = new StringTokenizer(new String(buffer), "¥n"); } catch (Exception e) { System.out.println("Error at FOPEN"); e.printStackTrace(); } return true; }

fopenロジック

Page 16: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

15

⑫ get_line ロジック

ファイルから1行データを取得するロジックを、以下の通り組み込みます。

データが存在する場合は lineData にそのデータを格納し、ファイルの終わりの

場合は文字列として「<<EOF>>」を格納します。 if (pid == GET_LINE) { try { if (st.hasMoreTokens()) { lineData = st.nextToken(); } else { lineData = "<<EOF>>"; } this.setText(lineData); } catch (Exception e) { System.out.println("Error at GET_LINE"); e.printStackTrace(); } return true; }

get_line ロジック

⑬ fclose ロジック

ファイルを閉じるロジックを、以下の通り組み込みます。 if (pid == FCLOSE) { try { inFile.close(); lineData = null; this.setText(lineData); } catch (Exception e) { System.out.println("Error at FCLOSE"); e.printStackTrace(); } }

fclose ロジック

⑭ Text_IO.java ファイルの完成

以上の機能を盛り込み、Text_IO.java を以下の通り完成させます。 package oracle.forms.demos; import oracle.forms.ui.*; import oracle.forms.properties.ID; import java.awt.*; import java.io.*; import java.io.File; import java.io.FileInputStream; import java.util.StringTokenizer;

Page 17: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

16

/** * PJCクラス * <P> * @author Oracle Taro * * このクラスは、TEXT_IOパッケージ中の以下を実現します。 * 1. FOPEN -- ファイルを開く * 2. GET_LINE -- ファイルから1行データを取得 * 3. FCLOSE -- ファイルを閉じる */ public class Text_IO extends VTextField { // JavaBeanと Formsの通信を行うプロパティを設定 // ファイルを開く fopen private static final ID FOPEN = ID.registerProperty("fopen" ); // ファイルから1行データを取得する get_line private static final ID GET_LINE = ID.registerProperty("get_line"); // ファイルを閉じる fclose private static final ID FCLOSE = ID.registerProperty("fclose" ); FileInputStream inFile; // 操作するファイル String lineData; // ファイルから読み込んだデータを格納 StringTokenizer st; // 1行分のデータの判別 /** * 新規インスタンスを構築 */ public Text_IO() { super(); try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } /** * このインスタンスの状態を初期化 */ private void jbInit() throws Exception { } public boolean setProperty(ID pid, Object value) { // ファイルを開き、buffer に全データを格納 if (pid == FOPEN) { try { File fileName = new File((String)value); inFile = new FileInputStream(fileName); byte[] buffer = new byte[inFile.available()]; inFile.read(buffer); st = new StringTokenizer(new String(buffer), "¥n"); }

Page 18: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

17

catch (Exception e) { System.out.println("Error at FOPEN"); e.printStackTrace(); } return true; } // bufferから次の1行をlineDataに返す。 // ファイルの終わりの場合「<<EOF>>」を返す if (pid == GET_LINE) { try { if (st.hasMoreTokens()) { lineData = st.nextToken(); } else { lineData = "<<EOF>>"; } this.setText(lineData); } catch (Exception e) { System.out.println("Error at GET_LINE"); e.printStackTrace(); } return true; } // lineDataの内容をクリアし、inFile ファイルを閉じる if (pid == FCLOSE) { try { inFile.close(); lineData = null; this.setText(lineData); } catch (Exception e) { System.out.println("Error at FCLOSE"); e.printStackTrace(); } } return super.setProperty(pid, value); } }

Text_IO.java ファイル

⑮ クラス・ファイルの生成

JDeveloper のナビゲータ・ペインで Text_IO.java ファイルを選択し、右クリック・

メニューから「ビルド(または再ビルド)」を選択します。エラーが発生しなけれ

ばクラス・ファイルの生成は完了です。

Page 19: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

18

3.3 JDK による作成

JDeveloper ではなく JDK を使用して作成する場合、前述の Text_IO.java ファイ

ルを作成し、以下のコマンドでクラス・ファイルを作成します。事前に使用する

JDK への PATH、CLASSPATH等の設定を行う必要があります。

次の例では、Text_IO.class ファイルが「c:¥Text_IO¥oracle¥forms¥demos」ディレ

クトリに格納されていることを想定しています。

> cd c:¥Text_IO¥oracle¥forms¥demos > javac Text_IO.java

Page 20: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

19

4 Forms への組み込み 前章で作成した JavaBean を Forms に組み込み、Web 環境でのファイル読み込みを実現

する方法を紹介します。

ここでは例として、ユーザーが指定したファイルのデータを1行ずつ読み込み、テキス

ト項目に挿入するアプリケーションを作成します。

4.1 モジュール作成 Form Builder で新規モジュールを作成し、「C:¥Text_IO¥Text_IO.fmb」として保存

します。また、項目を配置するキャンバスを作成し、名前を「 FILE_IO」とします。

4.2 プログラム単位の作成

作成したモジュールに、TEXT_IO パッケージの該当プログラム単位と同等の動

作を実現する MY_TEXT_IO パッケージを作成します。

① パッケージ仕様部の作成

PACKAGE MY_TEXT_IO IS -- ファイルを開く -- my_text_io.fopen(‘Bean項目名’ , ‘ファイル名’) PROCEDURE FOPEN (item_name IN VARCHAR2, in_file_name IN VARCHAR2); -- ファイルから1行データを取得 -- my_text_io.get_line(‘Bean項目名’); FUNCTION GET_LINE (item_name IN VARCHAR2) RETURN VARCHAR2; -- ファイルを閉じる -- my_text_io.fclose(‘Bean項目名’); PROCEDURE FCLOSE (item_name IN VARCHAR2); END;

MY_TEXT_IO パッケージ仕様部

② パッケージ本体の作成

PACKAGE BODY MY_TEXT_IO IS -- in_file_nameに指定されているファイルを開く PROCEDURE FOPEN (item_name IN VARCHAR2, in_file_name IN VARCHAR2) IS BEGIN SET_CUSTOM_PROPERTY(item_name, 1, 'fopen', in_file_name); END;

Page 21: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

20

-- ファイルの次の行内容または「<<EOF>>」を返すファンクション FUNCTION GET_LINE (item_name IN VARCHAR2) RETURN VARCHAR2 IS read_data VARCHAR2(2000); -- ファイルから取得した1行分のデータ BEGIN SET_CUSTOM_PROPERTY(item_name, 1, 'get_line', 'VALUE'); read_data := GET_CUSTOM_PROPERTY(item_name, 1, 'VALUE'); SYNCHRONIZE; RETURN(read_data); END; -- ファイルを閉じる PROCEDURE FCLOSE (item_name IN VARCHAR2) IS BEGIN SET_CUSTOM_PROPERTY(item_name, 1, 'fclose', 'VALUE'); END; END;

MY_TEXT_IO パッケージ本体

4.3 項目作成 アプリケーションに必要な項目を作成します。 ① CONTROL ブロック

CONTROL ブロックを作成します。このブロックには Bean 領域、ファイル名を

指定するテキスト項目、ファイル読み込みを実行する押しボタンを作成します。

Bean 領域

Text_IO クラスを配置する Bean 領域を作成します。以下のプロパティを設定し

て下さい。「インプリメンテーション・クラス」には使用する JavaBean のクラス・

ファイル名を指定します。

プロパティ 値

名前 FILE_BEAN

項目タイプ Bean 領域

インプリメンテーション・クラス oracle.forms.demos.Text_IO

キャンバス FILE_IO

X 位置、Y 位置 0、0

幅、高さ 1、1

作成した「Text_IO」JavaBean をインプリメンテーション・クラスに指定するこ

とにより、JavaBean が Form に組み込まれます。

Page 22: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

21

テキスト項目

ファイル名を指定するためのテキスト項目を作成します。以下のプロパティを

設定して下さい。

プロパティ 値

名前 FILE_NAME

項目タイプ テキスト項目

データ型 Char

最大長 100

キャンバス FILE_IO

プロンプト ファイル名を指定して下さい:

押しボタン

FILE_NAME テキスト項目に指定したファイル名をもとに、ファイルからのデー

タの読み込みを実行する押しボタンを作成します。以下のプロパティを設定して

下さい。

プロパティ 値

名前 READ

項目タイプ 押しボタン

ラベル 読み込み開始

キャンバス FILE_IO

幅、高さ 70、20

② DATA ブロック

ファイルから読み込んだデータを表示するためのDATAブロックを作成します。

このブロックにはデータを表示するテキスト項目を作成します。

ブロックに以下のプロパティを設定して下さい。

プロパティ 値

名前 DATA

表示レコード数 15

スクロール・バー表示 はい

スクロール・バー・キャンバス FILE_IO

スクロール・バー方向 垂直

テキスト項目

ファイルから読み込んだデータを表示するためのテキスト項目を作成します。

以下のプロパティを設定して下さい。

Page 23: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

22

プロパティ 値

名前 TEXT_DATA

項目タイプ テキスト項目

データ型 Char

最大長 2000

キャンバス FILE_IO

4.4 トリガー作成 必要なトリガーをアプリケーションに組み込みます。

① ON-LOGON トリガー

フォーム・レベルの ON-LOGON トリガーを作成し、以下のコードを記述します。 NULL;

② ボタン・トリガー

CONTROL ブロックの READ 押しボタンに、WHEN-BUTTON-PRESSED トリガ

ーを記述します。このトリガーは、FILE_NAME テキスト項目に記載されたファイ

ルからデータを取得し、DATAブロックの TEXT_DATA 項目に値を格納します。

DECLARE fname TEXT_IO.FILE_TYPE; linebuf varchar2(2000); BEGIN -- ファイル名が指定されていることを確認 IF (:CONTROL.FILE_NAME is NULL) THEN MESSAGE('ファイル名を指定して下さい。'); GO_ITEM('CONTROL.FILE_NAME'); RAISE Form_Trigger_Failure; END IF; GO_BLOCK('DATA'); CLEAR_BLOCK(NO_VALIDATE); -- Webの場合 JavaBean で実行 IF (GET_APPLICATION_PROPERTY(USER_INTERFACE) = 'WEB') THEN -- 該当ファイルを開く my_text_io.fopen('CONTROL.FILE_BEAN', :control.file_name); --ファイルからデータを取得し項目に代入 linebuf := my_text_io.get_line('CONTROL.FILE_BEAN'); WHILE linebuf != '<<EOF>>' LOOP :data.text_data := linebuf; NEXT_RECORD;

Page 24: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

23

linebuf := my_text_io.get_line('CONTROL.FILE_BEAN'); END LOOP; -- ファイルを閉じる my_text_io.fclose('CONTROL.FILE_BEAN'); -- C/Sの場合 TEXT_IO で実行 ELSE fname := TEXT_IO.FOPEN(:control.file_name, 'r'); BEGIN LOOP TEXT_IO.GET_LINE(fname, linebuf); :data.text_data := linebuf; NEXT_RECORD; END LOOP; EXCEPTION WHEN NO_DATA_FOUND THEN TEXT_IO.FCLOSE(fname); END; END IF; FIRST_RECORD; END;

上記コードには、同機能を C/S で実現するコードも記載されています。

4.5 モジュールの確認 必要な作業は終了です。レイアウト・エディタで項目配置を調整して下さい。

レイアウトの例およびオブジェクト・ナビゲータの様子を以下に掲載します。

レイアウト例

Page 25: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

24

オブジェクト・ナビゲータ

4.6 テスト実行 Form Builder では、クライアント開発環境に設定された Java VM を使用して、ア

プリケーションを疑似 Web 環境でテスト実行可能です。このテスト実行機能を使

用すると、Web サーバーや Forms Services の設定を行うことなく、アプリケーショ

ン実行をテストすることが可能です。

作成したアプリケーションをテスト実行してみましょう。

① アプリケーション実行

Form Builder で Text_IO.fmb を選択し、ツールバーの「Web でフォーム実行」ボ

タン をクリック、またはメニューから「プログラム→フォーム実行→Web」を

選択し、アプリケーションをテスト実行します。

② ファイルの読み込み

ファイル名を指定し、「読み込み開始」ボタンをクリックします。ファイルから

Page 26: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

25

データが読み込まれ、1行ずつテキスト項目に書き込まれます。

テスト実行例

Page 27: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

26

5 Web環境への配置 テスト実行で問題ないことが確認されたアプリケーションを、Web 環境に配置します。

ここでは、先に作成した Text_IO モジュールを使用して、Web 環境への配置方法を紹介

します。

5.1 製品インストール Web サーバーおよび Oracle Forms Services をアプリケーション・サーバーにイン

ストールおよび設定します。インストールおよび設定方法に関しては、各製品の

インストレーション・ガイド等を参照して下さい。

本ドキュメントではOracle Forms Services をインストールした$ORACLE_HOME

を「c:¥oracle¥806」として説明します。

5.2 JAR ファイルの作成

作成した「Text_IO」JavaBean を JAR ファイルにします。以下のコマンドで JAR

ファイルを生成して下さい。

下の例は Text_IO.class ファイルが「c:¥Text_IO¥oracle¥forms¥demos」ディレクト

リに格納されていることを想定しています。

> path=c:¥oracle¥806¥jdk¥bin;%PATH% > cd c:¥Text_IO > jar –cfv Text_IO.jar oracle¥forms¥demos¥Text_IO.class

正常に JAR ファイルが生成されると、以下のようなメッセージが表示されます。 adding: oracle/forms/demos/Text_IO.class (in=2046) (out=1157) (deflated 43%)

JAR ファイルには以下のファイルが含まれます。

ファイル名 内容

Text_IO.class 作成したクラス・ファイル

Manifest.mf JAR ファイルのメタ情報を格納

Manifest.mf ファイルの内容は以下の通りです。

Page 28: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

27

Manifest.mf ファイル

5.3 JAR のデジタル署名 今回作成した JavaBean は、クライアントのリソース(ファイル)にアクセスし

ます。Java のセキュリティ機能により、安全性の保証されない JAR ファイル内の

クラスはクライアントで実行できません。そのため、JAR ファイルが安全である

ことを保証するために、JAR ファイルにデジタル署名する必要があります。

ここでは、JDK1.1 を使用して先に作成した Text_IO.jar ファイルにデジタル署名

する方法を紹介します。作業は作成した Text_IO.jar ファイルの存在するディレク

トリで行います。

① 署名データベースへの署名者の登録

JDK の署名データベースに、署名者を登録します。

> javakey –cs <署名者> true 例:SCOTTさんを登録 > javakey –cs scott true

正常に登録されると、以下のメッセージが出力されます。 Created identity [Signer]scott[identitydb.obj][trusted]

ここで、指定した署名者が既に署名データベースに存在する場合、以下のメッ

セージが出力されます。 Name conflict. Please remove the identity named scott before adding a new identity with that name.

この場合、署名者を変更するか、署名者を署名データベースから削除してから

作業を行って下さい。署名者を署名データベースから削除するには以下のコマン

ドを使用します。

> javakey –r <署名者> 例:

Page 29: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

28

> javakey –r scott Removed scott.

② 署名者の鍵を生成

署名者用の鍵のペア(公開鍵および秘密鍵)を作成します。ここで生成された

鍵は JDK のデータベースに登録されます。

> javakey –gk <署名者> <アルゴリズム> <キー長> 例:SCOTTさんの鍵を、DSA アルゴリズムで 512 ビットの長さで作成 > javakey –gk scott DSA 512

正常に生成されると、以下のメッセージが出力されます。 Generated DSA keys for scott (strength: 512).

③ 署名者の証明書を作成

署名者情報ファイルの作成

署名者の情報および作成する証明書の情報を指定したファイルを作成し、cert.txt

として保存します。

# 証明書発行者 issuer.name=scott issuer.cert=0 # 署名者 subject.name=scott # 署名者の名前 subject.real.name=Scott Tiger # 署名者の所属部署 subject.org.unit=Development # 署名者の会社 subject.org=Oracle Japan # 署名者の国 subject.country=Japan # 証明開始日 start.date=11 Jul 2001 # 証明終了日 end.date=10 Jul 2005 # シリアル番号 serial.number=1001 # 証明書名 out.file=Text_IO.x509

証明書の作成

cert.txt ファイルを使用して、証明書を作成します。 > javakey –gc cert.txt

Page 30: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

29

正常に作成されると以下のメッセージが出力され、.x509 証明書ファイル(今回

は Text_IO.x509)が生成されます。 Generated certificate from directive file cert.txt.

④ JAR のデジタル署名

署名情報ファイルの作成

デジタル署名をどのように行うかを指定したファイルを作成し、sign.txt として

保存します。

# 署名者 signer=scott cert=1 chain=0 # 8文字以内の任意の文字列 signature.file=tiger

署名の実行

sign.txt ファイルを使用して、JAR をデジタル署名します。 > javakey –gs sign.txt Text_IO.jar

正常に署名されると、以下のメッセージが出力され、Text_IO.jar.sig ファイルが

生成されます。このファイルがデジタル署名された JAR ファイルです。

Adding entry: META-INF/MANIFEST.MF Creating entry: META-INF/TIGER.SF Creating entry: META-INF/TIGER.DSA Adding entry: oracle/forms/demos/Text_IO.class Signed JAR file Text_IO.jar using directive file sign.txt.

ファイル名の変更

作成された署名済み JAR ファイルの名前を変更します。

未署名 JAR ファイル「Text_IO.jar」ファイルを削除し、「Text_IO.jar.sig」ファイ

ルの名称を「Text_IO.jar」に変更して下さい。

含まれるファイル

署名済みの JAR ファイルには、以下のファイルが追加されます。

ファイル名 内容

xxx.sf 署名ファイル

Page 31: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

30

ファイル名、使用アルゴリズム、ダイジェスト値

が格納される

ファイル名には署名情報ファイル( sign.txt)で指定した

「sigunature.file」の値が使用される

xxx.dsa 実際の署名が格納される

ファイル名には署名情報ファイル( sign.txt)で指定した

「sigunature.file」の値が使用される

.sf ファイル

.dsaファイル

Page 32: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

31

5.4 Forms Services の設定

アプリケーション実行のために Forms Services の各種設定を行います。ここでは

JavaBean を使用するために追加で行う設定のみ説明し、Forms Services 自体の設定

に関する説明は省略します。設定方法に関する詳細は、製品付属ドキュメント

「Forms アプリケーション Web 利用ガイド」を参照して下さい。

① JAR の配置

デジタル署名した JAR ファイルを Forms Services 環境に配置します。

「$ORACLE_HOME¥FORMS60¥java」ディレクトリに Text_IO.jar ファイルをコ

ピーして下さい。

② ベース HTMLファイルの編集

Forms アプリケーション起動のためのベース HTML ファイル、または Forms

Services 設定ファイル「formsweb.cfg」に、使用するモジュール、JAR ファイルを

指定します。

今回は「formsweb.cfg」ファイルを編集する方法を紹介します。

「$ORACLE_HOME¥FORMS60¥server¥formsweb.cfg」ファイルをテキスト・エディ

タで開きます。

ファイルの最後に以下を追加します。これにより、実行時に「config=Text_IO」

と指定してアプリケーションの実行が可能になります。 [Text_IO] form=Text_IO.fmx archive=f60web.jar,Text_IO.jar ;R6i Patch2以降を使用している場合 archive_jini=f60all_jinit.jar,Text_IO.jar

5.5 クライアントの設定 デジタル署名された JAR ファイルを使用するために、クライアントに証明書

(.x509 ファイル)をインストールします。この作業を行う前に、クライアント・

マシンに Oracle JInitiator がインストールされている必要があります。

なお、この作業はすべてのクライアントに対して行って下さい。

① .x509 ファイルのコピー

.x509 ファイルをクライアントにコピーします。

「 <JInitiator イ ン ス ト ー ル ・ デ ィ レ ク ト リ >¥bin ( 例 : C:¥Program

Files¥Oracle¥JInitiator 1.1.8.10¥bin)」ディレクトリに「Text_IO.x509」ファイルをコ

ピーして下さい。

Page 33: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

32

② 証明書のインストール

以下のコマンドを実行し、証明書をクライアント・マシンにインストールしま

す。

> cd <JInitiatorインストール・ディレクトリ>¥bin > javakey –c <証明書名> true > javakey –ic <証明書名> <ファイル名> 例: > cd C:¥Program Files¥JInitiator 1.1.8.10¥bin > javakey –c Text_IO true Created identity Text_IO[identitydb.obj][trusted] > javakey –ic Text_IO Text_IO.x509 Imported certificate from Text_IO.x509 for Text_IO.

ここで、指定した証明書が既に署名データベースに存在する場合、以下のよう

なメッセージが出力されます。 An error occured trying to add Text_IO to sun.security.provider.IdentityDatabase , source file: C:¥Program Files¥Oracle¥JInitiator 1.1.8.10¥..¥identitydb.obj[name conflict]

この場合証明署名を変更するか、証明書を署名データベースから削除してから

作業を行って下さい。証明書を署名データベースから削除するには以下のコマン

ドを使用します。

> javakey –r <証明書> 例: > javakey –r Text_IO Removed Text_IO.

Page 34: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

33

6 アプリケーション実行 すべての準備が整いました。アプリケーションを実行してみましょう。

6.1 実行 ① ブラウザの起動

「5.5 クライアントの設定」で証明書をインストールしたマシン上で、ブラウザ

を起動します。

② URL の指定

アプリケーション実行のための URLを指定し、アプリケーションを実行します。

・ベース HTMLファイルを指定して実行する場合 http://<アプリケーション・サーバー名>/<仮想パス>/<ベース HTMLファイル名> 例: http://myserver/dev60html/Text_IO.htm ・Forms Services設定ファイルを編集し、CGIで実行する場合 (5.4 Forms Servicesの設定で説明) http://<アプリケーション・サーバー名>/<仮想パス>/ifcgi60.exe?config=Text_IO 例: http://myserver/dev60cgi/ifcgi60.exe?config=Text_IO

③ ファイル読み込み開始

アプリケーションが起動します。ファイル名入力フィールドにクライアントに

存在するファイルのファイル名をフルパスで指定し、読み込みボタンをクリック

して下さい。

④ 動作確認

指定したファイルの内容が、アプリケーション上に表示されました。

Page 35: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

34

7 トラブル・シューティング 何らかの理由によりアプリケーションが正常に実行されない場合、原因を特定する必要

があります。通常のアプリケーションでは Form モジュール内またはデータベース側のロ

ジックを追うことになりますが、JavaBean を組み込んだ場合はその元となる Java ソース

コードもチェックします。

正常に動作しない場合、以下の点などに注目して問題箇所を特定して下さい。

7.1 実行環境の確認 ① JAR ファイルの署名

JavaBean として組み込む Java のクラス・ファイルは JAR としてまとめ、安全で

あることを保障するために署名を行う必要があります。

「5.3 JAR のデジタル署名」を参考に、JAR ファイルが正しく署名されているか

どうか確認して下さい。

② クライアントへの証明書のインストール

JAR ファイルが安全であることをクライアントが認識するためには、JAR ファ

イルの証明書が各クライアント・マシンにインストールされている必要がありま

す。

「5.5 クライアントの設定」を参考に、クライアントに JAR ファイルの証明書

をインストールして下さい。

③ Java コンソールでの確認

JavaBean 内でエラーが発生した場合、実行時に Java コンソールにエラーの内容

が表示されます。どこでエラーが発生しているのか確認して下さい。

以下の方法で Java コンソールを表示します。

1. スタートメニュー→「プログラム」→「JInitiator Control Panel 1.1.x.x(バー

ジョン番号)」を選択し、「Oracle JInitiator Properties」を表示

2. 「Basic」タブで「Show Java Console」をチェック

Page 36: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

35

3. 「Apply」をクリックし、Oracle JInitiator Properties を閉じる

この状態でアプリケーションを実行すると、実行時に下図のような Java コンソ

ールが表示されます。Java エラーが発生している場合はこのウィンドウに表示さ

れますので、エラー内容を確認して下さい。

下図は Text_IO.class 内の fopen をコールした際にセキュリティ・エラーが発生し

ていることを表しています。この場合、JAR ファイルの署名に失敗している可能

性があります。

Page 37: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

36

7.2 開発時の確認 ① プレビュー・モードでの動作確認

Web アプリケーションとして展開する前に、プレビュー・モードで正常に実行

可能かどうかを確認します。

「4.6 テスト実行」を参考に、開発環境でのテスト実行で正常に動くことを充分

に確認します。

② 指定クラス・ファイルの確認

Bean 領域の「インプリメンテーション・クラス」プロパティに指定した値が有

効なクラス・ファイル名になっているか、CLASSPATHの値と合わせて確認して下

さい。

JAR ファイルには、クラス・ファイルへのパス情報が含まれており、インプリ

メンテーション・クラスに指定するのはこのパス情報を含めた値です。圧縮ツー

ル等で JAR ファイル内のクラス・ファイルへのパス情報を確認し、インプリメン

テーション・クラスで指定する値を決定して下さい。

下図は圧縮・解凍ツール「WinZip」を使用して Text_IO.jar ファイルを開いた例

です。「Text_IO.class」クラス・ファイルのパスが「oracle¥forms¥demos¥」に設定さ

れていることが確認できます。この場合インプリメンテーション・クラスには

「oracle.forms.demos.Text_IO」と指定します。

③ JDK のバージョン

Oracle JInitiator は現在 JDK1.1 ベースです。JavaBean を作成する際に JDK1.2 以

上の機能を使用している場合、正常に実行できない可能性があります。

クライアント実行環境を考慮して JavaBean を作成して下さい。

7.3 その他 ① 各種診断ツール

Oracle Forms Services では、実行時のエラーを解析するための手段を複数提供し

ています。これらを使用してエラー箇所の特定に役立てて下さい。

詳細は OTN-J(http://otn.oracle.co.jp)→「インターネット・開発ツール」→

Page 38: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

クライアントとの対話の実現

37

「Developer」掲載ドキュメント「Forms 診断テクニック」を参照して下さい。

② JavaBean 組み込みに関する詳細

Forms アプリケーションへの JavaBean 組み込み方法に関する詳細は、OTN-J の

同リンクに掲載されているドキュメント「Oracle Developer Application での Java コ

ンポーネントの利用」を参照して下さい。

③ JavaBean の例

OTN(http://otn.oracle.com)には JavaBean の例が複数掲載されています。Java

のソースコードも提供されていますので参考にして下さい。

「Sample Code」→「Forms Server」の「JavaBean Examples」を参照して下さい。

Page 39: Oracle Forms Services R6i - otndnld.oracle.co.jpotndnld.oracle.co.jp/products/itools/developer/pdf/Dev_6i_Text-IO... · Oracle Forms Developer ... Oracle Forms Services R6i 12 ⑦

Oracle Forms Services R6i

38

日本オラクル株式会社

Copyright(C) Oracle Corporation Japan. All Rights Reserved.

無断転載を禁ず

この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されるこ

とがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、

本書の内容に関連したいかなる損害についても責任を負いかねます。

Oracle は、オラクル社の登録商標です。Oracle8、Oracle8i、Net8 は、オラクル社の商

標または登録商標です。

他のすべての企業名と製品名は、識別のためにのみ掲載されており、それぞれの所有者

の商標の場合があります。