147

・CORBAクライアントアプケーション(Java)の作成方法を理 …...CORBAオブジェクト CORBAオブジェクトとは、ネットワーク上のどこにでも存在することができる1つのインテリジェントなカプセ

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

最近の基幹システムの場合、Web技術、柔軟性の高いJavaでフロントシステムを利用し、ビジネスロジックの生産性、実行性能の高いCOBOLを、ミドル・バックシステムに利用することが多くなってきています。これは、言語特性を利用し、拡張性の高い基幹システム構築を目指し、さらにフロント、ミドル・バックシステムの間に、富士通のアプリケーションサーバ「Interstage」を配置することにより、堅牢なトランザクションシステムを構築できます。

本書では、このJavaとCOBOLの連携を実現する「CORBA」の概要と「Interstage」を利用したCORBAアプリケーション(サーバ、クライアント)の作成方法を学習するためのテキストです。

このテキストによる学習を終えた後、次に示す事項を習得することを目標としています。

・ CORBAの概要を理解する

・ Interstageを用いたCORBAアプリケーションの概要を理解する

・ CORBAサーバアプリケ-ション(COBOL)の作成方法を理解する

・ CORBAクライアントアプケーション(Java)の作成方法を理解する

このテキストは、これからCORBAを利用したJava-COBOL連携アプリケーションの開発をされる方を対象に説明しています。

このテキストの説明では、次に示す製品を使用しています。

Interstage Studio Enterprise Edition V9.0

NetCOBOL Standard Edition 開発パッケージ V9.0

Microsoft® Windows® XP Professional

なお、このテキストでは、

NetCOBOL が「C:¥Program Files¥NetCOBOL」にインストール

Interstage Studioが「C:¥ Interstage」にインストール

されているものとして説明しています。

はじめに

このテキストの目的

このテキストの対象者

このテキストの対象者

1. CORBA概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1

1.1 CORBA連携 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 2

1.2 CORBA構成要素 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 5

1.3 InterstageにおけるCORBA・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 12

1.4 本章のポイント・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 15

2. CORBAアプリケーション ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 17

2.1 CORBAアプリケーションの概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 18

2.2 IDL・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 25

2.3 CORBAサーバアプリケーション ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 30

2.4 本章のポイント・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 37

3. ワークユニット・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 39

3.1 ワークユニットの概要・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 40

3.2 ワークユニットの作成・配備・実行・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 43

3.3 本章のポイント・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 49

4. クライアントアプリケーション・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 51

4.1 バックエンド連携サービスライブラリ ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 52

4.2 本章のポイント・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 59

5. 実習(アプリケーション開発) ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 61

5.1 CORBAサーバアプリケーションの開発(COBOL編)・・・・・・・・・・・・・ 62

Step1. クライアント・サーバアプリケーションの設計 ・・・・・・・・・・・・・・・ 63

Step2. サーバアプリケーションの作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 70

Step3. サーバアプリケーションのビルド・・・・・・・・・・・・・・・・・・・・・・・・・・ 84

Step4. ワークユニットの登録 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 89

5.2 クライアントアプリケーションの開発(Java編) ・・・・・・・・・・・・・・・・・・ 101

Step1. Webアプリケーションの設計 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 102

Step2. Webアプリケーションの作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 104

Step3. Webアプリケーションのビルド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 120

Step4. Webアプリケーションの配備 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 124

Step5. システムの実行例 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 136

【目次】

Interstage、Symfoware、NetCOBOLおよび、ObjectDirectorは、富士通株式会社の登録商標です。

Microsoft、Windowsは、米国Microsoft Corporationの米国およびそのほかの国における登録商標です。

JavaおよびすべてのJava関連の商標、およびロゴは、米国およびそのほかの国における米国Sun Microsystems, Inc.の商標または登録商標です。

CORBA、Object Management Group、OMG、OMG IDL、IIOP、Object Request

BrokerおよびORBは、Object Management Group の米国およびそのほかの国における商標または登録商標です。

そのほかの各製品名については、各社の商標または登録商標です。

なお本文中では、必ずしもRおよびTMは、付記しておりません。

商標

11

1. CORBA概要1. CORBA概要

22

1.1 COBOL連携1.1 COBOL連携

ここでは、InterstageとCOBOLとの連携について説明します。

33

CO

RB

A

サービス

CO

RB

Aサービス

COBOLで作成したCORBAアプリケーション

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

CORBACORBAクライアントクライアント CORBACORBAサーバサーバ

Interstage と COBOLの連携Interstage と COBOLの連携

InterstageとCOBOLとの連携は、CORBAサービスを利用することで実現できます。

44

CORBAとはCORBAとはOMGによって標準化されているORBの仕様

◆ORB(Object Request Broker)分散環境でオブジェクトへのアクセスを支援するミドルウェア

CORBA(Common Object Request Broker

Architecture)

開発言語・プラットフォームに

依存しない

コンポーネント同士の連携

オブジェクト間の通信はORBが仲介

既存アプリ資産も

コンポーネントとして

オープンな環境へ分散オブジェクト技術

CORBAとは、1991年に提唱された規格であり、OMG(Object Management Group)という標準化団体がORBを標準化した仕様のことを指します。

CORBAはあくまでも仕様であり、その実装方法は各ORBベンダーに任されています。

ORB(Object Request Broker)は、分散環境でオブジェクトへのアクセスを支援するミドルウェアです。

ORBは、ミドルウェア製品として各ORBベンダーが製品化しています。

CORBAを使用することにより、言語やOSに依存しないオープンな分散環境が実現できます。

55

1.2 CORBAの構成要素1.2 CORBAの構成要素

ここでは、CORBAの構成要素について説明します。

66

CORBA通信の流れCORBA通信の流れ

問い合わせ

Client Server

ネーミング

サービス

インターフェース

リポジトリ

サーバアプリケーション

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

ORB ORB

オブジェクトリファレンス

問い合わせ

インターフェース公開

オブジェクト呼び出し

結果の送信

スタブ・スケルトンを

使用する場合は、

使用しない

サーバオブジェクト呼び

出し時にアプリケーション

情報を取得

インプリメンテーション

リポジトリ

クライアント/サーバアプリケーションは、ORB間で「ネーミングサービス」、「インターフェースリポジトリ」、「インプリメンテーションリポジトリ」を利用しています。

「インターフェースリポジトリ」は、IDLコンパイラにより作成されます。

それでは、「ORB」、「IDL」、「インターフェースリポジトリ」、「インプリメンテーションリポジトリ」、「ネーミングサービス」について説明します。

77

ORB(Object Request Broker)ORB(Object Request Broker)ORB-オブジェクト間の通信における仲介役・通信プロトコルは、IIOP を使用

クライアント

オブジェクト

ORB

サーバ

オブジェクト

ORB

サーバ

オブジェクト

クライアントは、通信相手がローカルオブジェクトであるか

リモートオブジェクトであるかを意識する必要がない

◆ORB

ORBは、クライアントオブジェクトからのリクエストを適切なサーバオブジェクトに伝える仲介役です。

また、クライアントオブジェクトとサーバオブジェクトは、常にORBを仲介してのみ会話をすることになるので、直接にはORBしか見えません。そのORBの先がどうなっているのかはすべてORBに任されており、アプリケーションレベルでは、相手がローカルに存在するか、リモートに存在するかを意識する必要がありません。

ORBは、クライアントからのオブジェクト呼び出しの要求を受け取ると、IIOP(Internet Inter-ORB Protocol)などの通信プロトコルを使用して、サーバ側のORBに要求を伝えます。

◆CORBAオブジェクト

CORBAオブジェクトとは、ネットワーク上のどこにでも存在することができる1つのインテリジェントなカプセル化されたオブジェクトを指します。クライアントが、このCORBAオブジェクトにアクセスする場合は、IDLインターフェース(→後述)として定義されているメソッドを呼び出すことでアクセスします。

88

IDL スタブ・スケルトンIDL スタブ・スケルトン

IDL(Interface Definition Language)・サーバオブジェクトが実装しているメソッドインターフェースを定義

スタブ・スケルトン・IDLコンパイラによって作成される。IDLインターフェース情報を保持

サーバ

オブジェクト

ORB

クライアント

オブジェクト

ORB

スタブ スケルトン

IDLファイル

クライアント サーバ

IDLコンパイラ

◆IDLIDLとは、言語やOSに依存しない中立な言語であり、インターフェースのみを定義します。インターフェースを定義したIDLファイルは、拡張子idlを付けられ保存します。IDLファイルは、IDLコンパイラによってコンパイルされ、スタブやスケルトンなどがソースコードとして生成されます。

(IDLの書式・定義例については、後述)

◆スタブ

クライアントアプリケーションから見た場合、サーバ側のオブジェクトをローカルマシン上にあるように見立ててくれるプロキシオブジェクト(代理オブジェクト)です。

クライアントアプリケーションとともにコンパイル・結合され、静的なインターフェースを提供します。

◆スケルトン

サーバ側のオブジェクトのメソッドをインターフェースとしてクライアントから利用できるように公開したものです。

サーバアプリケーションとともにコンパイル・結合され、静的なインターフェースを提供します。

99

インターフェースリポジトリインターフェースリポジトリ・IDLで定義したサーバオブジェクトのインターフェース情報を一括管理しているデータベース

・クライアントが動的起動インターフェースでサーバオブジェクトにリクエストを

送信する場合に利用される

連携に必要な

各種ファイル

IDLファイル

IDLコンパイラ

スタブ

スケルトン

インターフェース

リポジトリ

静的にインターフェース情報を提供 動的にインターフェース情報を提供

登録

◆インターフェースリポジトリ

インターフェースリポジトリとは、 IDLソースファイルをコンパイルして生成されたオブジェクト定義情報(IDLで定義したModule・Interface・Operation情報やリポジトリIDなど)を格納しているデータベースです。

通常、IDLコンパイルと同時にインターフェースリポジトリに登録されます。

スタブ・スケルトンが静的にインターフェース情報を提供するのに対して、インターフェースリポジトリは、動的にインターフェースを提供します。(クライアントが動的起動インターフェースでサーバオブジェクトにリクエストを送信する時に利用されます。)

[参考] 静的インターフェースと動的インターフェース

CORBAアプリケーションは、以下のいずれかのインターフェース実装方法で作成します。

・静的インターフェース

スタブ・スケルトンによりインターフェースを公開。

IDL定義ファイルから生成されたスタブ・スケルトンとアプリケーションをコンパイル時にリンクすることにより、サーバオブジェクトとオペレーションを固定化します。

・動的インターフェース

スタブ・スケルトンを使用せず、インターフェースリポジトリに登録されているインターフェース情報をCORBAアプリケーションの中で、取得・サーバメソッドのパラメタを組み立てて利用する方法です。

※ ここでは、静的インターフェースを前提に紹介します。

1010

インプリメンテーションリポジトリインプリメンテーションリポジトリ

サーバアプリケーションのパス・開発言語・起動タイプなどの

実装に関する情報を管理

サーバ

オブジェクト

ORB

スケルトン

サーバ

インプリメンテーション

リポジトリ

②情報取得

①クライアントからリクエスト

◆インプリメンテーションリポジトリ

インターフェースリポジトリと同様に、サーバアプリケーションに関する情報を格納しているデータベースです。

ただし、インプリメンテーションリポジトリには、サーバアプリケーションの実装に関する情報(サーバアプリケーションが存在しているフォルダ位置やファイル名、実装言語、サーバタイプなど)が格納されています。

インプリメンテーションリポジトリによって、クライアントアプリケーションは、サーバアプリケーションが実行中かどうかを気にすることなく処理を依頼できます。

実行中でなかった場合、インプリメンテーションリポジトリに格納されているサーバアプリケーション情報をもとにサーバアプリケーションを自動的に起動することができます。

1111

ネーミングサービスネーミングサービス

(サーバ)オブジェクトを名前で管理するためのサービス

- オブジェクト同士を互いに名前で検索することが可能

オブジェクト名

“ABC”

クライアント ネーミングサービス

ABC

オブジェクト

リファレンス

オブジェクト名

サーバ

オブジェクトABCの検索

オブジェクトの

実際の位置情報オブジェクト名から

オブジェクトリファレンスを

取得

◆ネーミングサービス

分散環境内のオブジェクトを名前で管理するためのサービスです。

ネーミングサービスを利用することにより、ORB上に存在するオブジェクト同士が互いに名前で検索することができるようになります。

オブジェクト名は、オブジェクトを識別するためのもので、人間が目で見て理解しやすい識別子(通常、文字列)で表されます。

ネーミングサービスは、この名前とオブジェクトリファレンスをマッピングし、1つのレコードとするデータベースとも言えます。

◆オブジェクトリファレンス

CORBAでは、オブジェクトを一意に識別するためにオブジェクトリファレンスが用意されています。

オブジェクトリファレンスは、オブジェクトIDによって管理されています。

1212

1.3 Interstage におけるCORBA1.3 Interstage におけるCORBA

ここでは、Interstageが提供しているCOREコンポーネントである「ObjectDirector」のCORBAについて説明します。

1313

ObjectDirector 1ObjectDirector 1

InterstageのCORE コンポーネント

ObjectDirector ― CORBAサービス

・InterstageにおけるCORBAサービスを提供

・CORBA仕様(CORBA2.3)に完全準拠

1414

ObjectDirector 2ObjectDirector 2

クライアント

Interstage(クライアント環境)

ObjectDirector

CORBAアプリケーション

◆クライアント/サーバ構成

サーバ

Interstage(サーバ環境)

CORBAアプリケーション

ORBを実装

ObjectDirector

◆CORBAアプリケーション

ObjectDirector上で動作する、CORBA仕様に準拠したアプリケーションを指します。

クライアントアプリケーションとサーバアプリケーションがあります。

1515

1.4 本章のポイント1.4 本章のポイント

1616

本章のポイント本章のポイント

●InterstageとCOBOLとの連携は、CORBAサービスを利用することで実現できます。

●CORBAは以下の要素で構成されています。• ORB• IDL、スタブ・スケルトン• インターフェースリポジトリ• インプリメンテーションリポジトリ• ネーミングサービス

1717

2. CORBAアプリケーション2. CORBAアプリケーション

1818

2.1 CORBAアプリケーションの概要2.1 CORBAアプリケーションの概要

1919

CORBAアプリケーションCORBAアプリケーション〔CORBAアプリケーションの運用形態〕

(1) 動的スケルトンインターフェース(CORBAサーバアプリケーション)

(2) 静的スケルトンインターフェース(CORBAサーバアプリケーション)

(3) 各種サービスで、CORBAサービスが提供する情報を参照する

(4) 動的呼出しインターフェース(CORBAクライアントアプリケーション)

(5) 静的呼出しインターフェース(CORBAクライアントアプリケーション)

(6) OLE-CORBAゲートウェイ(CORBAクライアントアプリケーション)

2020

CORBAサーバアプリケーション(1)CORBAサーバアプリケーション(1)

CORBAサーバアプリケーションは、以下のタイプに分類されます。

++sharedサーバサーバアプリケーションは、クライアントアプリケーションから最初に呼び出されたとき、CORBAサービスにより起動されます。1つのサーバアプリケーションで複数のオブジェクトを処理することができます。

++persistentサーバサーバアプリケーションは、事前にユーザが起動しておきます。1つのサーバアプリケーションで複数のオブジェクトを処理することができます。

++unsharedサーバサーバアプリケーションは、クライアントアプリケーションから最初に呼び出されたとき、CORBAサービスにより起動されます。1つのサーバアプリケーションでは、1つのオブジェクトだけ処理できます。

◆サーバアプリケーションの起動タイプ

CORBAワークユニット

運用

複数オブジェクトの同時処理

自動起動

2121

CORBAサーバアプリケーション(2)CORBAサーバアプリケーション(2)

アプリケーションの実装方式に基づいた以下の分類があります。

++静的スケルトンインターフェースIDLファイルから生成されたスケルトンファイルをサーバアプリケーションにリンクする方法です。

++動的スケルトンインターフェーススケルトンファイルをリンクする代わりに、CORBAサービスが提供するAPIを使用して、インターフェース情報やクライアントからの情報を取り出します。

一般的に、静的スケルトンインターフェースの方が動的スケルトンインターフェースに比べて、リポジトリ情報へのアクセス回数が少ない分、性能が優れています。

2222

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

CORBAクライアントアプリケーションには、実装方式に基づいた以下の分類があります。

++静的起動インターフェースDLファイルから生成されたスタブファイルをクライアントアプリケーションにリンクする方法です。

++動的起動インターフェーススタブファイルをリンクする代わりに、CORBAサービスが提供するAPIを使用してインターフェース情報を取り出し、サーバオブジェクトを呼び出すためのインターフェースを組み立てます。

++OLE-CORBAゲートウェイクライアント上のCORBA製品が提供する、OLE-CORBAゲートウェイ機能を利用して、OLEサーバによりCORBAサーバアプリケーションを使用します。

一般的に、動的起動インターフェースは、サーバアプリケーションのインターフェースを動的に組み立てるため、簡単なインターフェースの変更に対して、自プログラムの変更を行う必要がない場合があり、その意味で保守性に優れています。反対に、静的起動インターフェースは、サーバプログラムと同様、サーバのリポジトリ情報にアクセスする回数が動的起動インターフェースに比べて少ないため、性能的に優れています。また、OLE-CORBAゲートウェイは、内部的に動的起動インターフェースと同様の処理を行っているため、性能的には動的起動インターフェースと同等ですが、記述量が非常に少なく、記述性に優れています。

2323

ApdesignerでサポートしているCORBAアプリケーションApdesignerでサポートしているCORBAアプリケーション

オブジェクト指向COBOL、COBOL静的起動インターフェースクライアントアプリケーション

オブジェクト指向COBOL静的スケルトンインターフェースサーバアプリケーション

言語種別実装方式アプリケーション

2424

CORBAアプリケーション開発の流れCORBAアプリケーション開発の流れClient Server

InterfaceRepository

登録

IDLファイル

IDLコンパイラ

業務ロジック スタブ スケルトン 業務ロジック

翻訳・リンク 翻訳・リンク

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

サーバアプリケーション

→詳細は後述

2525

2.2 IDL2.2 IDL

2626

サーバアプリケーションが提供するインターフェース情報を定義

IDLの作成IDLの作成

モジュール宣言

インターフェース宣言

オペレーション宣言

属性宣言

定数宣言

型宣言

必須

例外宣言

IDLの構文

IDLは、7つの宣言で構成されています。各宣言で使用する名前(識別子)は、先頭が英文字で、英文字、数字、およびアンダースコア(“_”)で指定します。英大文字と英小文字は同じものとして扱われます。 また、すべてのIDLファイル内に設定した識別子は一意でなければなりません。

◆モジュール宣言

モジュールは、IDLのメソッド名や型名などがほかのIDLと重複しないように、オブジェクトのグループ化宣言を行うものです。

◆インターフェース宣言

インターフェース宣言では、インターフェースの実体を定義します。C++言語のクラス宣言と同様にほかのインターフェース宣言を継承して、新しいインターフェース宣言を行うこともできます。

◆インターフェース宣言

インターフェース宣言では、インターフェースの実体を定義します。C++言語のクラス宣言と同様にほかのインターフェース宣言を継承して、新しいインターフェース宣言を行うこともできます。

module モジュール名 {

};

interface インターフェース名 ; // フォワード宣言

interface インターフェース名 [:継承するインターフェース] { // ヘッダオペレーション宣言 ; // 本体属性宣言 ;定数宣言 ;型宣言 ;例外宣言 ;

};

2727

module ModuleNAME { // モジュール宣言const string MSG1 = "balance is zero" ; // 定数宣言struct Structure1 { // 型宣言(構造体宣言)

long pay;long balance;long expectation;

};exception CDException{ // 例外宣言

string CDExceptionMsg;long CDExceptionCode;

};

interface InterfaceNAME { // インターフェース宣言void subbal(inout Structure1 param1) // オペレーション宣言

raises (CDException);};

};

例.IDL定義例.IDL定義

2828

オペレーション宣言のパラメタタイプオペレーション宣言のパラメタタイプ

in

クライアント側から値を設定して、サーバに渡す時に使用

out

サーバ側で値を設定して、クライアントがその値を利用する時に使用

inout

上記2つの特徴を持つ

module ODsample{interface stringtest{

string op1(in string str1, out string str2, inout string str3); };

};

IDL例

2929

IDLのコンパイルIDLのコンパイル

IDLファイルをコンパイル→ スタブ・スケルトンの生成、インターフェースリポジトリへ

インターフェース情報の登録を行います。

IDLファイルのコンパイル方法以下の2種類の方法があります。

• Interstage StudioのGUI環境においてのコンパイル• IDLcコマンドによるコンパイル

3030

2.3 CORBAサーバアプリケーション2.3 CORBAサーバアプリケーション

3131

サーバアプリケーションオブジェクトを管理する機能(Object Adapter、 OA)には、次の2つの種類があります。

Basic Object Adaptor(BOA)

Portable Object Adaptor(POA)

サーバアプリケーションサーバアプリケーション

BOA : CORBA2.1までの仕様で定義されていた基本的なサーバアプリケーションのインターフェースです。Interstageでは、C、C++、 Java、 オブジェクト指向COBOLでBOAを使用することができます。

POA : CORBA2.2で定義された仕様であり、特にインスタンスの管理面で標準のインターフェースが規定されています。

Interstageでは、C++、 JavaでPOAを使用することができます。

3232

CORBAサーバアプリケーションの構成CORBAサーバアプリケーションの構成

ORB初期化初期化処理部

BOA初期化

インプリメンテーションリポジトリのオブジェクトリファレンスを獲得

ImplementationDefオブジェクトのオブジェクトリファレンスを検索

サーバの活性化

インターフェース実装部(ビジネスロジック)

BOAの場合

3333

POAの構造

3434

CORBAオブジェクトとサーバントの関係

3535

POAのポリシー太字はデフォルト値

POAポリシ 意味 Value Valueの説明 備考RETAIN ActiveObjectMapにActiveなServantオブ

ジェクトを憶えます。

NON_RETAIN ActiveObjectMapを使いません。

USE_ACTIVE_OBJECT_MAP_ONLY

リクエスト処理にActiveObjectMapだけ使用します。

USE_DEFAULT_SERVANT リクエストの処理をDefault Servantオブジェクトに任せます。

USE_SERVANT_MANAGER ServantManagerオブジェクトによって目的のServantオブジェクトを見つけます。必要であればactivateも行われます。

IMPLICIT_ACTIVATION 自動的にServantオブジェクトがactivateされます。

NO_IMPLICIT_ACTIVATION 自動的にServantオブジェクトがactivateされません(サーバアプリケーションが明示的にServantオブジェクトを生成して、POAオブジェクトに登録します)。

SYSTEM_ID POAオブジェクトがオブジェクトIDを付けます。

USER_ID ユーザがオブジェクトIDを付けます。

UNIQUE_ID (注1) ServantオブジェクトにユニークなIDを付けます。

MULTIPLE_ID Servantオブジェクトに重複したIDを許します。

TRANSIENT トランジェントタイプのオブジェクトを扱います(サーバlifespan = オブジェクトlifespan)。

PERSISTENT パーシステントタイプのオブジェクトを扱います(サーバlifespan < オブジェクトlifespan)。

ORB_CTRL_MODEL スレッド処理をORBに任せます。 このPOAポリシの設定値は無効

SINGLE_THREAD_MODEL シングルスレッドで動作させます。

ServantRetention:Servant関連付けポリシ

AOMテーブルをPOAオブジェクト内で持つか持たないかを指定します。つまり、POAオブジェクト内でインスタンス管理を行うかどうかを指定できます。

RequestProcessing:リクエスト処理ポリシ

リクエスト受信時に対象インスタンスをAOM内に持ってない、もしくはAOM自身を保持しないときの振る舞いを規定するポリシです。

PERSISTENTは指定不可

ImplicitActivation:暗黙的活性化ポリシ

Servantの活性化のモードを以下のように指定可能です。 ・自動的にServantがactivateされます。 ・自動的にServantがactivateされません(アプリケーションが明示的にServantをPOAに登録します)。

Lifespan: 生存期間ポリシ

Thread: スレッドポリシ

スレッド処理をORBに任せるかシングルスレッドで動作させるかを指定できます。

オブジェクトIDをシステム(POAオブジェクト)が自動設定するか、ユーザが設定するかを指定できます。USER_IDはアプリケーションでオブジェクトIDに固有の意味を持たせたいときに有効です。

ServantにユニークなIDを付けるか、重複したIDを許すかの指定ができます。

IdUniqueness: オブジェクトID一意性ポリシ

IdAssignment:ID割り当てポリシ

トランジェントタイプのオブジェクトを扱うかパーシステントタイプのオブジェクトを扱うかを指定可能です。

3636

CORBAサーバアプリケーションの構成CORBAサーバアプリケーションの構成

POAの場合

ORB初期化

初期化処理部

RootPOAのオブジェクトリファレンスを獲得

ネーミングサービスへの登録

オブジェクトリファレンスの事前生成/登録

POAManagerの活性化と終了待機

インターフェース実装部(サーバント)

サーバントのAOMへの登録(活性化)

子孫POAの作成

3737

2.4 本章のポイント2.4 本章のポイント

3838

本章のポイント本章のポイント

CORBAアプリケーションサーバアプリケーションと、クライアントアプリケーションがあります。[サーバアプリ]

インターフェースには、静的スケルトンインターフェースと、動的ス

ケルトンインターフェースがあります。OAは、BOAとPOAがあります。

[クライアントアプリ]

インターフェースには、静的起動インターフェース、動的起動インターフェースおよびOLE-CORBAインターフェースがあります。

Apdesignerでサポートしている言語[サーバアプリ]

オブジェクト指向COBOL[クライアントアプリ]

オブジェクト指向COBOLCOBOL

3939

3. ワークユニット3. ワークユニット

4040

3.1 ワークユニットの概要3.1 ワークユニットの概要

4141

ワークユニットとはワークユニットとは

業務アプリケーションDB DB

業務単位の起動・停止

業務単位の運用

プロセスの多重制御

キュー制御

スナップショット/ログ機能

タイムアウト監視

異常終了時の自動再起動

滞留キュー数の監視機能

予兆監視

アプリケーション管理機能

ORB機能

運用管理機能

高信頼化

スケーラビリティ

業務管理機能(ワークユニット)

業務アプリケーションの運用性向上・高信頼化・スケーラビリティ強化

業務アプリケーション

ワークユニットの主な機能

◆業務単位の運用(起動停止)

ワークユニットは、アプリケーションの運用の単位となります。そのため、1つのワークユニットには、同時に起動、停止を行うアプリケーションを設定します。

◆プロセスの多重制御

複数のクライアントから、1つのアプリケーションに同時に要求が出された場合に、実行単位(プロセス)を複数にして、同時に処理できるプロセス多重度を設定することができます。スレッド多重度のみのチューニングと比較して、より高い効果が得られます。

◆キュー制御

複数クライアントから同一アプリケーション(オブジェクト)に対して要求が出された場合に、サーバの負荷が大きくなってしまいます。このような場合に、キュー制御で負荷を平準化させることができます。

また、以下の機能もサポートしています。

・キューの閉塞、閉塞解除を行い、クライアントからの要求を一時的に受け付けない状態にしたり、要求の受け付けを再開したりすることができます。

・キューイングされる要求の最大数が指定できます。これにより、サーバアプリケーションに一定以上の負荷がかかった場合に、クライアントからの要求を制限することができます。

◆実行時のスナップショット/ログ機能

クライアントからの要求に対する入出力情報のログが採取できます。CORBAワークユニットの起動から停止までのログ情報を、CORBAワークユニット単位にファイルに取得できます。ログ情報は、CORBAワークユニット定義に指定されたスナップショット出力パスに出力されます。

◆アプリケーションのタイムアウト監視

アプリケーションの無限ループへの対応などのために、最大処理時間(タイムアウト)を指定できます。

4242

サーバアプリケーション登録・起動の流れサーバアプリケーション登録・起動の流れ

ワークユニットの作成・配備

ワークユニットの起動

Interstage管理コンソールによる登録

Interstage管理コンソールによるサーバアプリケーション登録・起動の流れを、実際の操作例で説明します。

4343

3.2 ワークユニットの作成・配備・実行3.2 ワークユニットの作成・配備・実行

4444

①「IJServerビュー」の「localhost」を右クリックし、[Interstage管理コンソール]を選択

②[ユーザ名]と[パスワード]を指定し、[ログイン]ボタンをクリック

ワークユニットの作成・配備(1)ワークユニットの作成・配備(1)

IJServerビューが表示されていない場合は、[ウィンドウ]-[ビューの表示]-[IJServer]を選択して表示させます。

4545

ワークユニットの作成・配備(2)ワークユニットの作成・配備(2)

③ワークユニット[新規作成]を選択

④[ワークユニット名]を入力、[ワークユニットタイプ]に[CORBA]を指定し、[作成]ボタンをクリック

4646

ワークユニットの作成・配備(3)ワークユニットの作成・配備(3)

⑤作成したワークユニット[配備]を選択

⑥[インプリメンテーションリポジトリID]、[実行プログラムファイル]を入力

※配備前に、実行プログラムファイル・ライブラリファイルをプロジェクトフォルダから、アプリケーション実行フォルダにコピーする必要があります。

・プロジェクトフォルダ: C:¥Interstage¥APW¥eclipse¥workspace¥プロジェクト名・アプリケーション実行フォルダ(デフォルト):C:¥Interstage¥VAR¥CORBA_WU¥ワークユニット名

4747

ワークユニットの作成・配備(4)ワークユニットの作成・配備(4)

⑦[詳細設定]の[表示]をクリック[CORBAアプリケーション]、[インターフェース定義]の各[表示]をクリックすると、それぞれの設定入力欄が表示される

⑧詳細設定後、[配備]ボタンをクリック

4848

ワークユニットの起動ワークユニットの起動

①起動したいワークユニットを選択

②[起動]ボタンをクリック

※配備時において[配備完了後、ワークユニットを起動する]にチェックが入っていた場合、ワークユニットは配備完了後、起動しています。 その場合、本処理を実行する必要はありません。

4949

3.3 本章のポイント3.3 本章のポイント

5050

本章のポイント本章のポイント

サーバアプリケーションの登録は、以下の手順で実行します。

①ワークユニットの作成・配備

②ワークユニットの起動

5151

4. クライアントアプリケーション

4. クライアントアプリケーション

5252

4.1 バックエンド連携サービスライブラリ4.1 バックエンド連携サービスライブラリ

Apcoordinatorでは、バックエンドシステムと連携するためのサービスライブラリを提供しています。

バックエンド連携サービスライブラリは、Interstage Business Application Server Standard Edition、Enterprise Edition で提供される機能です。

CORBAサーバアプリケーションを呼び出す方法として、このサービスライブラリの「CORBAサービスアダプタ」を使用する方法を紹介します。

5353

Apcoordinatorフレームワーク

バックエンド連携サービスライブラリバックエンド連携サービスライブラリ

バックエンドシステム

COBOLで作成したCORBAアプリ

バックエンド連携サービスライブラリ

Apcoordinatorアプリケーション

バックエンド連携サービスライブラリでは、共通インターフェースによるバックシステムとの連携を行うライブラリを提供します。

バックエンド連携サービスライブラリでは、以下のサービス連携を実現します。

CORBAを呼び出す、CORBAサービスアダプタ

メッセージを送信する、メッセージ送信サービスアダプタ

コマンドの実行を行う、コマンド実行サービスアダプタ

利用者が作成する、利用者作成サービスアダプタ

COBOLとの連携を実現する場合、CORBAサービスアダプタもしくは、コマンド実行サービスアダプタを利用することになります。一般的なCORBAアプリケーション呼び出しも可能ですが、CORBAサービスアダプタを介することにより、同期、非同期処理が実現できます。

ただし、コマンド実行サービスアダプタの場合、同期(コマンドの終了を待ち合わせる直接呼出し)、非同期(突き放し実行)のみのサポートとなります。

5454

バックエンド連携サービスライブラリの構成バックエンド連携サービスライブラリの構成

Apcoordinatorフレームワーク

Apcoordinatorアプリケーション

バックエンドシステム

アダプタ

サービスアダプタ

asyncマップ

イベントサービス

イベント処理Bean

サービスアダプタ

以下にバックエンド連携サービスライブラリの構成要素を説明します。

●アダプタ

CORBAアプリケーションや、利用者が作成したアプリケーションを呼び出す連携サービスにおける共通なインターフェース(AsyncServiceAdapterインターフェース)です。

Apcoordinatorアプリケーションのビジネスクラスから、このインターフェースを実装した各種サービスアダプタを利用することにより、同一インターフェースでバックエンド連携サービスライブラリの利用が行えます。

AsyncServiceAdapterインターフェースを実装した各種サービスアダプタは、AsyncServiceFactoryインターフェースにより取得します。

●サービスアダプタ

AsyncServiceAdapterインターフェースを実装したサービスを実行するクラスです。

サービスアダプタには、CORBAアプリケーションを呼び出すCORBAサービスアダプタや、利用者がインターフェースを実装したサービスアダプタなどがあります。

●イベント処理 Bean

イベントサービスを利用した同期呼び出しおよび、非同期呼び出しを行う場合に、サービスアダプタの呼び出し制御を行うEJB(AsyncServiceMessageDrivenBeanクラス)です。 Apcoordinatorアプリケーションのビジネスクラスにて、アダプタを利用し、アプリケーションの呼び出し要求を行うと、イベントサービスを経由し、イベント処理Beanへ呼び出し要求が通知されます。イベント処理Beanでは、呼び出し要求に従い処理を行います。

●asyncマップ

利用するサービスアダプタやイベントサービス、およびサービスの呼び出し方法といったバックエンド連携サービスライブラリの定義ファイルです。定義ファイルは、asyncmap.xmlというファイル名で、所定の場所へ格納します。

●イベントサービス

バックエンド連携サービスライブラリでは、J2EEで規定されたJMS APIを使用してイベントサービスを利用しています。

JMSについての詳細は、Interstageオンラインマニュアルの J2EE ユーザーズガイド を参照してください。

5555

アプリケーションの呼び出しアプリケーションの呼び出し

Apcoordinatorアプリケーション

バックエンドシステム

アダプタ

Apcoordinatorアプリケーション アダプタ

Apcoordinatorアプリケーション アダプタ

Apcoordinatorアプリケーション アダプタ

イベントサービス

イベントサービス

イベントサービス

イベント処理Bean

イベント処理Bean

イベント処理Bean

直接呼出し

同期変換

突き放し

突き合わせ

バックエンドシステムの処理完了まで待ち合わせます。

要求は、処理結果を待たずに復帰します。処理結果は通知されません。

要求は、処理結果を待たずに復帰します。処理結果は問い合わせ可能です。

バックエンドシステムの処理完了まで待ち合わせます。

アプリケーションの呼び出し方法には、大きく分けて同期呼び出しと非同期呼び出しの2つの方法があります。

同期呼び出し:直接呼び出し、同期変換

非同期呼び出し:突き放し、突き合わせ

直接呼び出しは、イベントBeanを介さずに実行します。

同期変換は、イベントBeanを介し、イベントBeanから復帰するまで待ち合わせます。

突き放しは、イベントBeanへ処理依頼をした時点で処理が完了します。処理結果は参照できません。

突き合わせは、イベントBeanへ処理依頼をした後、復帰しますが、結果を問い合わせることができます。

5656

クライアントアプリケーション実行クライアントアプリケーション実行

ネーミングサービスのホスト情報の設定(inithostの設定)

アプリケーション実行

クライアントアプリケーションの実行モジュールを実行します。

以下の場合は不要

・クライアントとネーミングサービスの存在するホストが同一の場合・CORBAサーバとネーミングサービスの存在するホストが同一の場合

◆ネーミングサービスのホスト情報の設定(inithostの設定)

クライアントアプリケーションが、サーバアプリケーションのオブジェクトリファレンスを獲得するためには、ネーミングサービスにアクセスします。Interstageのクライアント環境から、ネーミングサービスにアクセスするには、ネーミングサービスがネットワーク上のどのホストに存在するかを指定する必要があります。

5757

inithostの設定(1)inithostの設定(1)

inithostはInterstage管理コンソール上で設定することが可能です※OD(ObjectDirector)サーバとネーミングサービスが異なるホストの場合

① “システム”-[環境設定]を選択し、[詳細設定]の[表示]をクリック

※Interstageクライアントパッケージ場合は、ノート記載の方法で設定ください。

【参考】 inithostの手動設定方法

◆INITHOSTファイルの格納場所(Windows)

X:¥Interstage¥ODWIN¥etc

◆ホストの指定方法

ファイルに以下の書式で指定

hostname CORBAサービスのport番号

※自ホスト側/サーバ側(サービスが動作しているホスト)のホスト名定義と統一させて指定する必要があります。

(例)ネーミングサービスが、hostAに存在していて、CORBAサービスのポート番号が8002を使用している場合

hostA 8002

5858

inithostの設定(2)inithostの設定(2)

③詳細を設定し、[適用]をクリック

②[ネーミングサービス詳細設定]の[表示]をクリック

5959

4.2 本章のポイント4.2 本章のポイント

6060

本章のポイント本章のポイント

Interstageにおいて、CORBAサーバアプリケーションを呼び出すには、「バックエンド連携サービスライブラリ」を用いる方法があります。

クライアントアプリケーションは以下の手順で実行します。

①inithostの設定②アプリケーション実行モジュールの実行

6161

5. 実習(アプリケーション開発)5. 実習(アプリケーション開発)

それでは、実際にCORBAアプリケーションを作成してみましょう。

作成方法については、以下の2つに分けて説明します。

• サーバアプリケーションの開発 (COBOL編)

• クライアントアプリケーションの開発(Java編)

6262

5.1 サーバアプリケーションの開発(COBOL編)

5.1 サーバアプリケーションの開発(COBOL編)

6363

Step1. クライアント・サーバアプリケーションの設計

Step2. サーバアプリケーションの作成

Step3. サーバアプリケーションのビルド

Step4. ワークユニットの登録

ここ

●実習の流れ●実習の流れ

本章では、Webアプリケーションを作成します。

作成するアプリケーションは簡単な住所録です。

まず、作成する住所録アプリケーションについて説明します。

その後、実際にInterstage Studioを使用してアプリケーションを作成します。

6464

画面遷移画面遷移

住所録     2004.xx.xx

住所録     2004.xx.xx

従業員番号:000000名前 xxxxxx電話番号 xxx-xxx-xxxx住所 XXXXXXXXXXXX

住所録     2004.xx.xx

従業員番号:000000名前 xxxxxx電話番号 

住所 

参照更新

戻る

反映/取消

初期画面

更新画面 参照画面

000000 参照 更新

XXX-XXX-XXXX

XXXXXXXXXXX

反映 取消 戻る

一覧

  アプリ開始-13:31:00 要求回数 1  セション開始-14:02:00 要求回数 1

  アプリ開始-13:31:00 要求回数 1  セション開始-14:02:00 要求回数 1

  アプリ開始-13:31:00 要求回数 1  セション開始-14:02:00 要求回数 1

戻る

一覧

一覧画面

住所録 2004.xx.xx

戻る

アプリ開始-13:31:00 要求回数 1セション開始-14:02:00 要求回数 1

上記の図は、住所録アプリケーションの画面遷移図です。

図に示したように“初期画面”、“参照画面”、“更新画面”および“一覧画面”という4つの画面で構成されています。

これら4画面の詳細について説明します。

6565

住 所 録                           2 0 0 4 . x x . x x

従 業 員 番 号 を 入 力 し て くだ さ い

 

更 新参 照2 0 0 4 0 1

タ イ ト ル を 表 示 日 付 を 表 示

メ ッ セ ー ジ を 表 示

従 業 員 番 号 を 入 力 し た 後 、参 照 ボ タ ン の ク リ ッ ク で 参 照 画 面 へ 、

更 新 ボ タ ン の ク リ ッ ク で 更 新 画 面 へ 遷 移 。

一 覧一 覧 ボ タ ン の ク リ ック で 、 一 覧 画 面 に遷 移 し 、 住 所 録 内の す べ て の デ ー タを 一 覧 表 示 す る 。

ア フ ゚リ 、 セ シ ョン の各 開 始 時 間 ・要求 回 数 を 表 示

初期画面初期画面

従業員番号を入力し、[参照]ボタンで参照画面に遷移する。[更新]ボタンをクリックした場合は、更新画面に遷移する。[一覧]ボタンをクリックした場合は、一覧画面に遷移する。

参照画面(参照)

更新画面(更新)

一覧画面(一覧)

タイトル

日付

アプリ開始時間

要求回数(アプリ)

セション開始時間

要求回数(セション)

メッセージ

従業員番号

機能概要画面遷移(ボタン名)入出力項目

アプリ開始-13:31:00 要求回数 1

セション開始-14:02:00 要求回数 1

上記の図は、住所録アプリケーションの初期画面です。

画面の上部にタイトル、日付、アプリ開始時間・要求回数、セション開始時間・要求回数、さらに従業員番号の入力を促すメッセージを表示します。

その下には、従業員番号を入力するテキストフィールドと参照、更新、一覧処理を選択するボタンがあります。

6666

住 所 録                   2 0 0 4 . x x . x x  

従 業 員 番 号   2 0 0 4 0 1

名 前  佐 藤  一 郎 

電 話 番 号   0 5 6 9 - 0 0 0 - 1 1 1 1 

住 所  尾 張 県 愛 知 市 舟 船 町 5 9 6 3

戻 る

日 付 を表 示タ イ トル を 表 示

住 所 録 を 表 示

戻 るボ タン の ク リ ック で 初 期 画面 へ 遷移 す る 。

ア フ ゚リ 、 セ シ ョン の 各開 始 時 間 ・要 求 回 数 を 表示

参照画面参照画面

[戻る]ボタンのクリックで初期画面へ遷移する。初期画面(戻る)タイトル

日付

アプリ開始時間

要求回数(アプリ)

セション開始時間

要求回数(セション)

従業員番号

名前

電話番号

住所

機能概要画面遷移(ボタン名)入出力項目

アプリ開始-13:31:00 要求回数 1

セション開始-14:02:00 要求回数 1

上記の図は、住所録アプリケーションの参照画面です。

画面の上部にタイトルと日付、アプリ開始時間・要求回数、セション開始時間・要求回数が表示されます。

その下には、入力された従業員番号、対応する名前、電話番号および住所が表示されます。

一番下の[戻る]ボタンをクリックすると初期画面へ遷移します。

6767

住 所 録                     2 0 0 4 . x x . x x

情 報 を 更 新 し て く だ さ い

従 業 員 番 号   2 0 0 4 0 1

名 前   佐 藤   一 郎

電 話 番 号

住 所

0 5 6 9 - 0 0 0 - 1 1 1 1

尾 張 県 愛 知 市 舟 船 町 5 9 6 3

取 消反 映

タ イ ト ル を 表 示 日 付 を 表 示

反 映 → 情 報 を 反 映      初 期 画 面 へ 遷 移取 消 → 情 報 反 映 せ ず      初 期 画 面 へ 遷 移

電 話 番 号 と 住 所の み 修 正 が 可 能

メ ッ セ ー ジ を 表 示

ア フ ゚ リ 、 セ シ ョ ン の 各開 始 時 間 ・要 求 回 数 を 表 示

更新画面更新画面

電話番号と住所を入力して、[反映]ボタンをクリックすると、情報を反映して初期画面に遷移する。[取消]ボタンをクリックした場合は、情報反映せずに初期画面へ遷移する。

初期画面(反映)初期画面(取消)

タイトル

日付

アプリ開始時間

要求回数(アプリ)

セション開始時間

要求回数(セション)

メッセージ

従業員番号

名前

電話番号

住所

機能概要画面遷移(ボタン名)入出力項目

アプリ開始-13:31:00 要求回数 1

セション開始-14:02:00 要求回数 1

上記の図は、住所録アプリケーションの更新画面です。

画面の上部にタイトルと日付、アプリ開始時間・要求回数、セション開始時間・要求回数が表示されます。

その下には、入力された従業員番号、対応する名前、電話番号および住所が表示されます。

一番下の[反映]、または[取消し]ボタンをクリックすると初期画面へ遷移します。

6868

住所録           20 04 .xx.xx

一覧表 (10件 )  住所電話番号名前従業員番号

  .

  .

  .

200103

200102

200101

  .

  .

  .

  .

  .

  .

  .

  .

  .

和泉県泉市浜川550722-000 -3333田中信三郎

三河県三河市海池27270242-000 -2222鈴木次男

尾張県愛知市舟船町59630569-000 -1111佐藤一郎

戻る戻るボタンをクリックで、初期画面に遷移する。

タイトルを表示 日付を表示メッセージを表示

アプリ、セションの各開始時間 ・要求回数を表示

登録されている従業員の一覧を表示

一覧画面一覧画面

住所録データの一覧を表形式で表示する。初期画面(戻る)タイトル日付アプリ開始時間要求回数(アプリ)セション開始時間要求回数(セション)メッセージ一覧表(画面部品)従業員番号、名前、電話番号、住所

機能概要画面遷移(ボタン名)入出力項目

アプリ開始-13:31:00 要求回数 1

セション開始-14:02:00 要求回数 1

上記の図は、住所録アプリケーションの一覧画面です。

画面の上部にタイトルと日付、アプリ開始時間・要求回数、セション開始時間・要求回数が表示されます。

その下には、登録されている従業員の一覧が表示されます。

一番下の[戻る]ボタンをクリックすると初期画面へ遷移します。

6969

AddressBookHandler Address

HeadBeanBodyBean

BodyTableBean

データ設定

データ参照

CORBA

サーバ

初期画面

参照画面

更新画面

一覧画面

住所録システムの構成住所録システムの構成

ユーザは、Webクライアントから、住所録の参照や更新の操作を行います。

Webサーバでは、ユーザのリクエストをAddressBookHandlerが解釈します。

AddressBookHandlerは、表示データをJavaBean(HeadBean、BodyBean、BodyTableBean)を用いて獲得します。RecordManagerはCORBA経由でアプリケーションサーバとやりとりをし、データBeanの値を設定します。

今回の実習では、CORBAコーディングに関係する、斜線で示したクライアントのjavaBean 、AddressBookHandlerと、サーバ側であるAddressの3つのクラスを中心に、CORBAサービスを用いたWebアプリ、サーバアプリの開発方法について説明します。

7070

Step1. クライアント・サーバアプリケーションの設計

Step2. サーバアプリケーションの作成

Step3. サーバアプリケーションのビルド

Step4. ワークユニットの登録

ここ

●実習の流れ●実習の流れ

本章では、Webアプリケーションを作成します。

作成するアプリケーションは簡単な住所録です。

まず、作成する住所録アプリケーションについて説明します。

その後、実際にInterstage Studioを使用してアプリケーションを作成します。

7171

起動タイプ : persistent

多重度 : 1

インターフェース : 静的スケルトン

サーバアプリケーションの構成サーバアプリケーションの構成

•起動タイプはCORBAアプリケーションをワークユニット上で動作させるので、"persistent"にします。

•プロセス多重度は住所録データをCORBAアプリケーションのメモリ上に持つため、プロセス多重度は1にします。

•インタフェースは、IDLコンパイラにより生成したスケルトンソースを使用した静的スケルトンインタフェースを使用します。

7272

②[起動]をクリック

Interstage Studioの起動Interstage Studioの起動

①[Interstage Studio]アイコンをクリック

■Interstage Studioを起動して、CORBAサーバアプリケーションのCOBOLプロジェクトを新規作成します。

Interstage Studioの起動方法①デスクトップにある[Interstage Studio]アイコンをクリックします。または、メニューの[すべてのプログラム]-[Interstage]-[Studio] -[Interstage Studio]を選択します。② Interstage Studio起動画面の[起動]ボタンをクリックします。

7373

②“COBOL”を展開し、“CORBAサーバプロジェクト” を選択し、[次へ]をクリック

プロジェクトの作成 (1)プロジェクトの作成 (1)

①[ファイル]-[新規]-[プロジェクト]を選択

Interstage Studioで作成されるファイルの一覧を以下に表示します。一覧には、ウィザードで生成されるファイルとビルド時に生成されるターゲットファイルのみ記述しており、IDLファイルから生成されるスタブ、スケルトンファイルは含みません。

ADBKSV.exeUSADBKSV.dll

ターゲット

USADBKSV.idlIDLファイル

USINITADBKSV.cobサーバアプリケーション登録ソース(COBOL)

USADBKSV.cobビジネスメソッドソース(COBOL)

ADBKSV.cobメインソース(COBOL)

ファイル名説明

7474

③[プロジェクト名]に「ADBKSV」を指定し、[次へ]をクリック ④そのまま[次へ]をクリック

プロジェクトの作成 (2)プロジェクトの作成 (2)

7575

⑤そのまま[次へ]をクリック ⑥そのまま[終了]をクリック

プロジェクトの作成 (3)プロジェクトの作成 (3)

◆Unicodeを使用する

COBOLアプリケーションのコード系をUnicodeにする場合は、チェックしてください。

今回はコード系をShift_JISにするので、チェックしないで「次へ」をクリックしてください。

※以下のダイアログボックスが表示された場合、「はい」をクリックしてください。

7676

①[モジュール名]に「RECMOD」を入力、[例外の生成]のチェックを外し、[次へ]をクリック ②そのまま[次へ]をクリック

IDLの自動作成 (1)IDLの自動作成 (1)

プロジェクトの作成に続いて、IDLの自動作成処理が起動します。

上記手順に沿って、IDLを作成してください。

7777

③[追加]ボタンをクリックし、[型の定義]に下表の項目を入力

⑤[追加]ボタンをクリック

IDLの自動作成 (2)IDLの自動作成 (2)

④[次へ]をクリック

◆型の定義

以下の項目を入力してください。

10(空欄)(空欄)DLISTEMPLOYEE

繰返し数小数桁全体桁変数名型

7878

⑦[OK]ボタンをクリック

IDLの自動作成 (3)IDLの自動作成 (3)

⑥[構造体名]に「EMPLOYEE」を入力、[追加]ボタンをクリックし、[構成リスト]に下表の項目を入力

◆構成リスト

以下の項目を入力してください。

(空欄)-20日本語文字列ADDR

(空欄)-20英数文字列PHONE

(空欄)-10日本語文字列NAME

(空欄)-10英数文字列IDNUM

繰返し数小数桁全体桁型変数名

7979

⑧[構造体の定義]に「EMPLOYEE」が登録されていることを確認して、[次へ]をクリック

⑨[追加]をクリック

IDLの自動作成 (4)IDLの自動作成 (4)

8080

⑪ [追加]ボタンをクリック、[パラメタリスト]に下表の項目を入力し、[OK]ボタンをクリック

⑫ [利用者メソッドの定義]に「FINDEMP」が追加されていることを確認

⑬同様に、[利用者メソッドの定義]に「UPDEMP」、「GETALL」の登録を行う(下表の項目を入力)

IDLの自動作成 (5)IDLの自動作成 (5)

⑩ [メソッド名]に「FINDEMP」[戻り値の型]に「4バイト整数」を入力

◆利用者メソッドの定義

【 FINDEMP】

【 UPDEMP 】

【 GETALL 】

inout

パラメタタイプ

(空欄)

小数桁

param1

変数名

(空欄)

全体桁

EMPLOYEE

4バイト整数

FINDEMP

パラメタリスト

戻り値の型

メソッド名

in

パラメタタイプ

(空欄)

小数桁

param1

変数名

(空欄)

全体桁

EMPLOYEE

4バイト整数

UPDEMP

パラメタリスト

戻り値の型

メソッド名

out

パラメタタイプ

(空欄)

小数桁

param1

変数名

(空欄)

全体桁

DLIST

4バイト整数

GETALL

パラメタリスト

戻り値の型

メソッド名

8181

⑭ [終了]をクリック⑮IDLコンパイルエラーが発生、[OK]をクリック

IDLの自動作成 (6)IDLの自動作成 (6)

このサンプルの場合、IDLコンパイルエラーが発生しますが、[OK]をクリックし処理を続けます。

※Interstageが停止状態の場合は、IDLの自動作成処理の際に自動的に起動されます。

8282

②IDLを修正

「COBOL」パースペクティブ

IDLの編集IDLの編集

③修正後、保存

①「その他のファイル」から“USADBKSV.idl”をクリックして開く

◆IDLの編集

COBOLのIDLウィザードで構造体シーケンスを作成した場合、構造体定義と型宣言の順番が逆になるため、手動で修正を行う必要があります。

以下を参照して“USADBKSV.idl”を修正してください。

※IDLコンパイルエラーが発生しない場合、IDLファイルやCOBOLファイルはプロジェクトのソースファイルフォルダ配下に配置されます。

【修正前】

// モジュール宣言

module RECMOD {

// 定数宣言

// 型宣言

typedef sequence<EMPLOYEE,10> DLIST;

// 構造体宣言

struct EMPLOYEE {

string<10> IDNUM;

wstring<10> NAME;

string<20> PHONE;

wstring<20> ADDR;

};

// ユーザインターフェース宣言

interface ADBKSV {

long FINDEMP(inout EMPLOYEE param1);

long UPDEMP(in EMPLOYEE param1);

long GETALL(out DLIST param1);

};

【修正後】

// モジュール宣言

module RECMOD {

// 定数宣言

// 構造体宣言

struct EMPLOYEE {

string<10> IDNUM;

wstring<10> NAME;

string<20> PHONE;

wstring<20> ADDR;

};

// 型宣言

typedef sequence<EMPLOYEE,10> DLIST;

// ユーザインターフェース宣言

interface ADBKSV {

long FINDEMP(inout EMPLOYEE param1);

long UPDEMP(in EMPLOYEE param1);

long GETALL(out DLIST param1);

};

8383

②ビジネスメソッドソースを、以下の指示通りに修正

ビジネスメソッドソースの編集ビジネスメソッドソースの編集

③修正後、保存

①「その他のファイル」から“USADBKSV.cob”をクリックして開く

CORBAサーバアプリケーションをApdesignerによって自動作成した場合に作成されるソースは、オブジェクト指向COBOL(OOCOBOL)となります。

◆ビジネスメソッドソースの編集

次のファイルを参照し、USADBKSV.cob を修正してください。

C:¥MyApplication¥COBOL¥Source¥server

注意:

COBOLエディタでCOBOLソースプログラムを作成、または変更する際、正書法で指定された規則に従います。

従わない場合、以下のようなエラーが問題ビューに表示されます。

【参考:正書法】

COBOLエディタでサポートする正書法には以下の2つの形式があります。

・固定長形式

・可変長形式

8484

Step1. クライアント・サーバアプリケーションの設計

Step2. サーバアプリケーションの作成

Step3. サーバアプリケーションのビルド

Step4. ワークユニットの登録

ここ

●実習の流れ●実習の流れ

本章では、Webアプリケーションを作成します。

作成するアプリケーションは簡単な住所録です。

まず、作成する住所録アプリケーションについて説明します。

その後、実際にInterstage Studioを使用してアプリケーションを作成します。

8585

①“USADBKSV.idl”を右クリックし、メニューから“ソースファイルへの追加”を実行

サーバーアプリケーションのビルド(1)サーバーアプリケーションのビルド(1)

②自動的にIDLの翻訳が実行され、「その他のファイル」にスケルトンファイルが生成される

注意事項

※メニューの「プロジェクト」-「自動的にビルド」がチェックされていない場合、IDLファイルをソースフォルダへ追加してもIDLの翻訳は実行されません。

【対処】

IDLファイルをソースフォルダに追加した後、IDLファイルを右クリックし、メニューから「ファイルの翻訳」を実行してください。

※Interstage Application Serverが起動していない場合にCORBAサーバプロジェクトのビルドを行うと、ビルドに失敗する場合があります。

具体的には、ログコンソールビューに以下のエラーが表示されています。

OD: エラー: od51401:IDLparser:CORBA_Container_lookup関数で例外情報にIDL:CORBA/StExcep/COMM_FAILURE:1.0が発生しました。マイナーコードは0x464a010aです。

OD: エラー: od51221:IDLc:IDLparserコマンドエラー. エラーコード=4

【対処】

IDLファイルを更新している場合、Interstage Application Serverが強制停止状態の時にはIDLコンパイラの実行がエラーとなるため、ビルドに失敗します。このような場合には、Interstage管理コンソールを用いてInterstage Application Serverを起動してから、再度ビルドを実行してください。

Interstage管理コンソールを用いてのInterstage Application Serverの起動は、P92の「管理コンソールの起動」を参照してください。

8686

③「その他のファイル」を展開し、スケルトンファイルを右クリック、「ソースファイルへ追加」を選択

この操作を行うCOBOLファイル、スケルトンファイル一覧は下記の表を参照

サーバーアプリケーションのビルド(2)サーバーアプリケーションのビルド(2)

④“ADBKSV.cob” を右クリックし、「主プログラム」を選択

※メニューの「プロジェクト」-「自動的にビルド」がチェックされている場合、上記の操作で自動的にビルドが実行されます。

※スタブファイルは「ソースファイルへ追加」の操作を行わないようにしてください。

◆COBOLファイル、スケルトンファイル一覧

ADBKSV.cobメインソースCOBOLファイル

USADBKSV.cobビジネスメソッドソース

USINITADBKSV.cobサーバアプリケーション登録ソース

データ型Helperファイル(データ型名--helper.cob)

データ型クラスファイル

(データ型名.cob)

インプリメンテーション登録ファイル(モジュール名-インタフェース名--NEW.cob)

tieクラスファイル(モジュール名-インタフェース名--tie.cob)

Narrowスケルトンファイル(モジュール名-インタフェース名--Narrow.cob)

Helperクラスファイル(モジュール名-インタフェース名--helper.cob)

インタフェースファイル(モジュール名-インタフェース名.cob)

SEQUENCE-RECMOD-EMPLOYEE-10--HELPER.cob

スケルトンファイル

RECMOD-EMPLOYEE--HELPER.cob

RECMOD-DLIST--HELPER.cob

CORBA-WSTRING-20--HELPER.cob

CORBA-STRING-10--HELPER.cob

SEQUENCE-RECMOD-EMPLOYEE-10.cob

CORBA-STRING-20--HELPER.cob

RECMOD-ADBKSV--NEW.cob

CORBA-WSTRING-10--HELPER.cob

RECMOD-ADBKSV--TIE.cob

RECMOD-ADBKSV--Narrow.cob

RECMOD-ADBKSV--HELPER.cob

RECMOD-ADBKSV.cob

8787

サーバーアプリケーションのビルド(3)サーバーアプリケーションのビルド(3)

⑥「ADBKSV」プロジェクトを右クリックし、「プロジェクトのビルド」を実行

⑤「ADBKSV」プロジェクトを右クリックし、「依存関係の解析」-「すべて」を選択

※メニューの「プロジェクト」-「自動的にビルド」がチェックされていない場合、上記の操作でビルドを実行します。

◆スケルトンファイルの自動追加

通常ウィザードが生成したIDLファイルに対しては、スケルトンファイルの追加が自動的に行われます。

しかし、ウィザードが生成していないIDLファイルに対しては、スケルトンファイルの追加は自動的には行われません。

ユーザが手動で追加する必要があります。

たとえば、プロジェクト生成後にモジュール名を変更した場合、型を追加した場合、プロジェクト生成後に既存のIDLファイルを持ってきてプロジェクトにコピーして使った場合などがこのケースにあたります。

この実習のADBKSVのように、構造体の繰返しを型として定義している場合もこのケースにあたります(ウィザードでは構造体の繰返しは型として定義できないためです)。

◆依存関係の解析

プロジェクトのビルド時に翻訳順番を正しくさせるために解析を実行します。

8888

「問題」ビューに何も表示されていないことを確認し、ビルド完了

サーバーアプリケーションのビルド(4)サーバーアプリケーションのビルド(4)

8989

Step1. クライアント・サーバアプリケーションの設計

Step2. サーバアプリケーションの作成

Step3. サーバアプリケーションのビルド

Step4. ワークユニットの登録ここ

●実習の流れ●実習の流れ

本章では、Webアプリケーションを作成します。

作成するアプリケーションは簡単な住所録です。

まず、作成する住所録アプリケーションについて説明します。

その後、実際にInterstage Studioを使用してアプリケーションを作成します。

9090

アプリケーション格納フォルダ プロジェクトフォルダ

アプリケーション実行ファイル・ライブラリファイルの格納アプリケーション実行ファイル・ライブラリファイルの格納

①エクスプローラを開く

③プロジェクトフォルダの実行ファイル、ライブラリファイルを、格納フォルダにコピー

②アプリケーション格納フォルダ・アプリケーションカレント動作ディレクトリを作成

◆実行ファイル・ライブラリファイルをアプリケーション格納フォルダに格納

アプリケーション格納フォルダにプロジェクトフォルダを指定することも可能ですが、配備後不用意にアプリケーションのビルドを行ってしまった場合、すでに配備されている実行ファイル・ライブラリファイルが更新されてしまいます。

これを防ぐために、プロジェクトフォルダとは異なる場所にアプリケーション格納フォルダを作成し、実行ファイル・ライブラリファイルを格納します。

・アプリケーション格納フォルダ・アプリケーションカレント動作ディレクトリを作成

・プロジェクトフォルダの実行ファイル・ライブラリファイルをアプリケーション格納フォルダへコピー

アプリケーション格納フォルダ :C:¥Interstage¥VAR¥CORBA_WU¥ADBKSV-WUアプリケーションカレント動作ディレクトリ:C:¥Interstage¥VAR¥CORBA_WU¥ADBKSV-WU¥work

プロジェクトフォルダ:

C:¥Documents and Settings¥インストールユーザ名¥My Documents¥Interstage Studio¥workspace¥ADBKSV実行ファイル :ADBKSV.exeライブラリファイル :USADBKSV.dll

アプリケーション格納フォルダ:C:¥Interstage¥VAR¥CORBA_WU¥ADBKSV-WU

9191

①[ウィンドウ]-[ビューの表示]-

[その他]を選択

②“IJServer”を展開し、“IJServer”を選択、

[OK]ボタンをクリック

管理コンソールの起動(1)管理コンソールの起動(1)

9292

管理コンソールの起動(2)管理コンソールの起動(2)

③“IJServerビュー”が表示されるので、“localhost”を右クリックし、[Interstage管理コンソール]を選択

④[管理コンソール]が表示される

[ユーザ名]、[パスワード]を入力し、

[ログイン]ボタンをクリック

注意事項

「管理コンソール」の「ユーザ名」「パスワード」は、localhostへアクセスする時の「ユーザ名」「パスワード」を指定してください。

9393

①“システム”をクリックし、[Interstage]の状態を確認「停止」の場合は、[起動]ボタンをクリックし、Interstageを起動

②“ワークユニット”-[新規作成]をクリック

実行環境の作成(1)実行環境の作成(1)

9494

③[ワークユニット名]に「ADBKSV-WU」、[ワークユニットタイプ]に「CORBA」を設定し、[詳細設定]の[表示]ボタンをクリック

実行環境の作成(2)実行環境の作成(2)

9595

実行環境の作成(3)実行環境の作成(3)

④[アプリケーション格納フォルダ]、[アプリケーション動作カレントディレクトリ]を入力し、[作成]ボタンをクリック

◆ ワークユニット設定

以下の項目を入力してください。

C:¥Interstage¥var¥CORBA_WU¥ADBKSV-WU¥workアプリケーション動作カレントディレクトリ

C:¥Interstage¥var¥CORBA_WU¥ADBKSV-WUアプリケーション格納フォルダ

値項目名

9696

ワークユニット作成の正常終了メッセージが表示される

“ワークユニット”を展開し、“ADBKSV-WU”が作成されていることを確認

実行環境の作成(4)実行環境の作成(4)

9797

⑤“ワークユニット”-“ADBKSV-WU”を選択、[配備]をクリック

⑥[インプリメンテーションリポジトリID]に「IDL:RECMOD/ADBKSV:1.0」[実行プログラムファイル]に「ADBKSV.exe」を入力し、[詳細設定]の[表示]をクリック

実行環境の作成(5)実行環境の作成(5)

◆ 配備設定

以下の項目を入力してください。

※インプリメンテーションリポジトリIDに指定する値は、

ADBKSV.cob(メインソース)に指定したREP-IDを指定する必要があります。

ADBKSV.cob(抜粋)

ADBKSV.exe実行プログラムファイル

IDL:RECMOD/ADBKSV:1.0インプリメンテーションリポジトリID

値項目名

WORKING-STORAGE SECTION.

COPY CORBA--COPY.

COPY USADBKSV--COPY.

01 API-NAME PIC X(50).

01 APL-NAME PIC X(64) VALUE "ADBKSV".

01 ORB USAGE OBJECT REFERENCE CORBA-ORB.

01 BOA USAGE OBJECT REFERENCE CORBA-BOA.

01 IMPL-REP USAGE OBJECT REFERENCE FJ-IMPLEMENTATIONREP.

01 IMPL USAGE OBJECT REFERENCE CORBA-IMPLEMENTATIONDEF.

01 REP-ID PIC X(128) VALUE "IDL:RECMOD/ADBKSV:1.0".

01 OBJ USAGE OBJECT REFERENCE CORBA-OBJECT.

01 EXCEPT-ID USAGE OBJECT REFERENCE CORBA-STRING.

01 EXCEPT-ID-VALUE PIC X(50).

LINKAGE SECTION.

9898

⑧[動作モード]に「SYNC_END」を指定

⑦[CORBAアプリケーション]の[表示]をクリックし、[ロケール]に「Shift JIS」を指定

実行環境の作成(6)実行環境の作成(6)

◆ CORBAアプリケーション

以下の項目を入力してください。

・ロケール

CORBAサーバアプリケーションのコード系を指定します。

CORBAサービスでコード変換を行う際に参照される値であるため、Shift_JISを指定します。

それにより、UnicodeのWebアプリケーションとShift_JISのCOBOLアプリケーション間で文字データを連携することができます。

正しく指定しないと文字化けが発生するので注意してください。

・動作モード

COBOLの場合はSYNC_ENDを指定する必要があります。

SYNC_END:

サーバアプリケーションを活性化しても、活性化メソッド(IMPL_IS_READY)は復帰しません。

サーバアプリケーションの停止時に活性化メソッドは復帰します。

COMPATIBLE:

サーバアプリケーション活性化後、活性化メソッド(IMPL_IS_READY)は復帰します。

Shift JISロケール

SYNC_END動作モード

値項目名

9999

⑨[インターフェース定義]の[表示]をクリックし、[追加]ボタンをクリック

実行環境の作成(7)実行環境の作成(7)

⑩[インターフェース定義]に下表の項目を入力し、[一覧へ反映]ボタンをクリック

◆インターフェース定義

以下の項目を入力してください。

※インターフェースリポジトリIDはIDL定義に設定したモジュール名、インタフェース名 に一致させて指定してください。

USADBKSV.dll(抜粋)

RECMOD::ADBKSVネーミングサービス登録名

0優先度

USADBKSV.dllライブラリパス名

使用しないCOBOLの動的スケルトンインターフェース

登録するネーミングサービスへの登録

IDL:RECMOD/ADBKSV:1.0インターフェースリポジトリID

値項目名

// モジュール宣言

module RECMOD {

.......

// ユーザインタフェース宣言

interface ADBKSV {

long FINDEMP(inout EMPLOYEE param1);

long UPDEMP(in EMPLOYEE param1);

long GETALL(out DLIST param1);

};

};

インターフェースリポジトリIDIDL:RECMOD/ADBKSV:1.0

100100

⑪[配備]ボタンをクリック

実行環境の作成(8)実行環境の作成(8)

アプリケーションの配備成功のメッセージが表示される

101101

5.2 クライアントアプリケーションの開発(Java編)

5.2 クライアントアプリケーションの開発(Java編)

102102

Step1. Webアプリケーションの設計

Step2. Webアプリケーションの作成

Step3. Webアプリケーションのビルド

Step4. Webアプリケーションの配備

ここ

●実習の流れ●実習の流れ

Step5. システムの実行例

本章では、Webアプリケーションを作成します。

作成するアプリケーションは簡単な住所録です。

まず、作成する住所録アプリケーションについて説明します。

その後、実際にInterstage Studioを使用してアプリケーションを作成します。

103103

クライアントの実装クライアントの実装

住所録アプリケーションのクライアント構成

CORBAクライアント処理の実装クラス

本実習で作成する部分

サーバアプリケーション

ブラウザ各出力画面用

JSPファイル群

各クラス・JSPから利用するクラス群(JavaBean)

※本実習では、CORBAクライアント処理を実装したクラスのみを作成し、そのほかのJSPなどは作成済みのものを使用します。

◆CORBAクライアント処理の実装クラス概要

RecordManager.java

CORBAクライアントとしての処理(ORB初期化~サーバアプリケーションのオブジェクト取得、サーバアプリケーションのメソッド呼び出しなど)を実装します。

サーバアプリケーションから取得したデータについては、データ保持のためのクラス(EmployeeRecord)へ設定します。

◆RecordManager.java のメソッド

・ initialData :CORBAアプリケーションを呼び出し、サーバアプリケーションから住所録データを取得するメソッド

・ getEmployeeRecord :引数に指定された従業員番号のレコードを返すメソッド

・ isSuccessUpdateRecord :住所録データを更新するメソッド

・ isSuccessReferenceRecord :住所録データを参照するメソッド

・ copyAllRecord :住所録データの複製を取得するメソッド

104104

Step1. Webアプリケーションの設計

Step2. Webアプリケーションの作成

Step3. Webアプリケーションのビルド

Step4. Webアプリケーションの配備

ここ

●実習の流れ●実習の流れ

Step5. システムの実行例

本章では、Webアプリケーションを作成します。

作成するアプリケーションは簡単な住所録です。

まず、作成する住所録アプリケーションについて説明します。

その後、実際にInterstage Studioを使用してアプリケーションを作成します。

105105

プロジェクトの作成(1)プロジェクトの作成(1)

①エクスプローラを開く

②“addressBook”を選択し、右メニューから[コピー]を実行

③“workspace”を選択し、

右メニューから[貼り付け]を実行

この実習では、Webアプリケーションのプロジェクトをあらかじめ準備してあります。(RecordManager.javaなどの一部を除く)。ここでは、このプロジェクトをApcoordinatorにインポートし、CORBAクライアントアプリケーションを作成します。

あらかじめ作成したプロジェクトは次の場所にあります。

このプロジェクトを以下の場所にコピーします。

注意:Apdesignerにて既存プロジェクトをインポートする場合、ワークスペースのサブフォルダにあるプロジェクトしかインポートできません。

C:¥MyApplication¥COBOL¥addressBook

C:¥Documents and Settings¥インストールユーザ名¥My Documents¥Interstage Studio¥workspace¥

106106

プロジェクトの作成(2)プロジェクトの作成(2)

④[パースペクティブを開く]-[その他]を選択

⑤ “Apcoordinator” を選択

⑥[OK]をクリック

◆「Apcoordinator」パースペクティブにして、クライアントアプリケーションのJavaプロジェクトを作成します。作成済みのaddressBookプロジェクトをインポートします。

「Apcoordinator」パースペクティブする手順① Interstage Studioの[ウィンドウ]メニューの[パースペクティブを開く] -[その他]を選択します。②[Apcoordinator]を選択します。

107107

プロジェクトの作成(3)プロジェクトの作成(3)

①[ファイル]-[インポート]を実行

② “一般”- “既存プロジェクトをワークスペースへ” を選択

③[次へ]をクリック

◆作成済みのaddressBookプロジェクトをインポートします。

108108

プロジェクトの作成(4)プロジェクトの作成(4)

④[参照]をクリックすると、[フォルダの参照]画面(右)が表示される

⑤“addressBook”を選択し、[OK]をクリック

フォルダの参照は次の場所を指定します。C:¥Documents and Settings¥インストールユーザ名¥My Documents¥Interstage Studio¥workspace¥addressBook

109109

⑦“addressBook”プロジェクトが登録されていることを確認

「Apcoordinator」パースペクティブ

プロジェクトの作成(5)プロジェクトの作成(5)

⑥[プロジェクト名]、[チェックボックスにチェックが付いている」ことを確認し、[終了]をクリック

110110

ビルドを行うために必要なクラスパスを事前定義ライブラリを用いて、プロジェクトに追加する

ビルドパスの追加(1)ビルドパスの追加(1)

①“addressBook”プロジェクトを

右クリックし、

メニューから[プロパティ]を選択

クラスパスコンテナ一覧(「Interstage Studio V9.0 プログラマーズガイド」より抜粋)

ujief.jarENTエンタープライズアプリケーション拡張機能を使う

ODjava4.jaresnotifyjava4.jarfjmsprovider.jar

JMSJ2EEアプリケーションクライアントからJMSのメッセージを送信する

ujijsf.jarjsf-api.jar

JSFJavaServer Facesを使う

ujiasync.jarASYNCバックエンド連携機能を使う

ujiformc.jarf3hksjsv.jarujicobol.jar

EFORM_CBL電子フォーム連携(COBOL)機能を使う

ujiformc.jarf3hksjsv.jar

EFORM電子フォーム連携機能を使う

ujiejb.jarEJBEJB連携機能を使う

ujidb.jarDBデータベース連携機能を使う

uji.jarBASE基本機能

Apcoordinator

isws-lib.jarWEBSERVCLJ2EEアプリケーションクライアントからWebサービスを呼ぶ

ODjava4.jarfjcontainer94.jarクライアント配布物

EJBCLJ2EEアプリケーションクライアントからEJBアプリケーションを呼ぶ

isj2ee.jarisws.jarjsp-api.jarservlet-api.jar

BASE基本機能

Interstage J2EE

設定されるクラスパスJRE1.4/JRE5.0の場合

選択機能識別子

選択機能ライブラリ種別

111111

ビルドパスの追加(2)ビルドパスの追加(2)

②“Javaのビルドパス”[ライブラリ]タブを選択

③ “Interstage J2EE[BASE]”を選択し、[編集]をクリック

◆事前定義ライブラリ

プロジェクトのビルド、実行に必要なクラスパスを設定することができます。

事前定義ライブラリの利点は、環境が変更されても柔軟に開発環境(IDE)が対応できることです。

たとえば、JDKのバージョンをJDK1.3.1から1.4.1に変更したとき、ObjectDirectorのJARは、ODJava2.jarからODJava4.jarに変更する必要がありますが、クラスパスコンテナ機能が自動的に判断して適切なJARを利用するようになります。つまり、利用者はJDKごとのJARを覚えておく必要がありません。また変更忘れの防止といったメリットもあります。

事前定義ライブラリを利用して、以下のパスを設定します。

ujiasync.jarASYNCバックエンド連携機能を使うApcoordinator

ODjava2.jarEJBCLJ2EEアプリケーションクライアントからEJBアプリケーションを呼び出す

Interstage J2EE

設定したいクラスパス識別子選択機能選択機能ライブラリ種別

112112

⑤ 「Interstage J2EE[BASE、EJBCL]」に変更されていることを確認

④ [J2EEアプリケーションクライアントからEJBアプリケーションを呼び出す]をチェックし、[終了] をクリック

ビルドパスの追加(3)ビルドパスの追加(3)

113113

⑥ “ Apcoordinator[BASE、DB] ”を選択し、[編集]をクリック

ビルドパスの追加(4)ビルドパスの追加(4)

114114

ビルドパスの追加(5)ビルドパスの追加(5)

⑦[バックエンド連携機能を使うをチェックし、[終了]をクリック

⑧“Apcoordinator[BASE、DB、ASYNC]”に変更されていることを確認し、[OK]をクリック

115115

② コマンドプロンプトを起動する。

CDコマンドにて、スタブを格納したいディレクトリに移動し、IDLコマンドにて、IDL手動コンパイルを行う。

③ スタブフォルダ“RECMOD”が作成されていることを確認

スタブパッケージフォルダの追加(1)スタブパッケージフォルダの追加(1)

①USADBKSV.idlをコピーする。

CORBAサーバアプリケーション作成時に生成したIDLファイルをCORBAクライアントアプリケーション作成時でも使用する。

◆USADBKSV.idlをコピー

コピー元:C:¥Documents and Settings¥インストールユーザ名¥My Documents¥Interstage Studio¥workspace¥ADBKSV¥

コピー先:C:¥Documents and Settings¥インストールユーザ名¥My Documents¥Interstage Studio¥workspace¥addressBook¥src

IDLの手動コンパイル

クライアントアプリケーションへ組み込むためのスタブフォルダを、IDL手動コンパイルにて作成します。

・ディレクトリの移動

CDコマンドにて、スタブ格納を格納したいディレクトリに、カレントディレクトリを移動します。

・IDL手動コンパイル

注意:Interstageが起動していない状態で、IDLcコマンドを実行するとエラーが発生します。

Interstage起動後に実行してください。

【参考】

[IDLc コマンド書式] 注意: コマンドオプションは主要なもののみ掲載

IDLc 言語オプション [-m言語オプション] ‒a|-R ‒create|-update|delete IDL_FILE_NAME

cd C:¥Documents and Settings¥インストールユーザ名¥My Documents¥Interstage Studio¥workspace¥addressBook¥src

IDLc -java USADBKSV.idl

116116

スタブパッケージフォルダの追加(2)スタブパッケージフォルダの追加(2)

③“src”フォルダを右クリックし、[更新]を選択

“RECMOD”フォルダが表示される

117117

asyncマップの作成(1)asyncマップの作成(1)

①“addressBook”を選択し、右ボタンメニューから[新規]-[その他]を選ぶ

②”Apcoordinator”- “asyncマップ”を選択[次へ]をクリック

バックエンド連携機能を利用する場合、asyncマップを作成する必要があります。

118118

asyncマップの作成(2)asyncマップの作成(2)

④[ファイル名]に「asyncmap」を確認し、[終了]をクリック

“asyncmap.xml”が追加されていることを確認する

⑤自動生成された“asyncmap.xml”をダブルクリックで開き、修正する

次のファイルを参照し、asyncmap.xmlを修正してください。

C:¥MyApplication¥COBOL¥Source¥client¥asyncmap.txt

119119

RecordManager.java にフレームワークのバックエンド連携を用いたCORBAクライアントアブリケーションとして、必要な処理を記載する

RecordManager.javaの作成RecordManager.javaの作成

RecordManager.javaに記述を追加する

⑥“src”-”addressBook”の”RecordManager.java”をダブルクリック

次のファイルを参照し、 RecordManager.javaを修正してください。

C:¥MyApplication¥COBOL¥Source¥client¥RecordManager.txt

120120

Step1. Webアプリケーションの設計

Step2. Webアプリケーションの作成

Step3. Webアプリケーションのビルド

Step4. Webアプリケーションの配備

ここ

●実習の流れ●実習の流れ

Step5. システムの実行例

本章では、Webアプリケーションを作成します。

作成するアプリケーションは簡単な住所録です。

まず、作成する住所録アプリケーションについて説明します。

その後、実際にInterstage Studioを使用してアプリケーションを作成します。

121121

アプリケーションのビルド(1)アプリケーションのビルド(1)

①“addressBook”プロジェクトを右クリックし、

メニューから[プロジェクトのビルド]を選択

※プロジェクトを選択し、ツールバーのビルドアイコンをクリックする方法でもビルドの実行が可能です。

◆ビルド時に以下の警告メッセージが出力されますが、問題ありません。そのまま続行してください。

ビルドアイコン

122122

②“warbuld.xml”を選択し、右ボタンメニューから[実行]- [2. Antビルド]を選ぶ

③[war-rebuild]にチェックが

ついているかを確認し、

[実行]をクリック

アプリケーションのビルド(2)アプリケーションのビルド(2)

123123

[ログコンソール]に“addressBook.war”が

作成された旨のメッセージが表示される

アプリケーションのビルド(3)アプリケーションのビルド(3)

124124

Step1. Webアプリケーションの設計

Step2. Webアプリケーションの作成

Step3. Webアプリケーションのビルド

Step4. Webアプリケーションの配備ここ

●実習の流れ●実習の流れ

Step5. システムの実行例

本章では、Webアプリケーションを作成します。

作成するアプリケーションは簡単な住所録です。

まず、作成する住所録アプリケーションについて説明します。

その後、実際にInterstage Studioを使用してアプリケーションを作成します。

125125

①“IJServerビュー”の“localhost”を右クリックし、

[Interstage管理コンソール]を選択

②[ユーザ名]と[パスワード]を指定し、

[ログイン]ボタンをクリック

Interstage管理コンソールの起動Interstage管理コンソールの起動

126126

①“ワークユニット”-[新規作成]を

選択

IJServerの作成(1)IJServerの作成(1)

注意:IJServer新規作成時には、Interstageが起動している必要があります。

Interstageが停止している場合、[Interstage管理コンソール]-[システム]画面にて起動してください。

127127

②[ワークユニット名]に

「addressBook」を設定し、

[詳細設定]の[表示]をクリック

IJServerの作成(2)IJServerの作成(2)

128128

③[ワークユニット設定]の[表示]を

クリックし、クラスパスに

「C:¥Interstage¥ODWIN¥etc¥Class¥ODjava2.jar」「C:¥Interstage¥APC¥lib¥ujiasync.jar」「C:¥Interstage¥APC¥lib¥uji.jar」「C:¥Documents and Settings¥インストールユーザ名¥My Documents¥Interstage Studio¥workspace¥addressBook¥ContextRoot¥WEB-INF」

を入力

④[作成]ボタンをクリック

IJServerの作成(3)IJServerの作成(3)

◆クラスパスの設定

・Apcoordinatorバックエンド連携機能をWebから利用する場合、サーブレットで設定されるアプリケーションの位置

(WEB-INF/classesやWEB-INF/lib)は使用されません。

EJBから利用の場合はjarに固めたものが使用可能になります。

・バックエンド連携をWebで利用する場合の推奨パターンは、以下になります。

- 適当なフォルダ(webの外部)にIDLから生成されたクラスを配置し、そのフォルダをCLASSPATHに設定します。

・ODjava2.jarはCORBAクライアントアプリケーションに必要なjarファイルです。

・uji.jarはフレームワークアプリケーションに必要なjarファイルです。

・ujiasync.jarはフレームワークのバックエンド連携サービスライブラリを使用する際に必要なjarファイルです。

C:¥Interstage¥ODWIN¥etc¥Class¥ODjava2.jarC:¥Interstage¥APC¥lib¥ujiasync.jarC:¥Interstage¥APC¥lib¥uji.jarC:¥Documents and Settings¥インストールユーザ名¥My Documents¥Interstage Studio ¥workspace¥addressBook¥ContextRoot¥WEB-INF

129129

“ワークユニット”を展開し、

“addressBook”が追加されていることを確認

正常に作成されたことを示す

メッセージが表示される

IJServerの作成(4)IJServerの作成(4)

130130

warファイルの配備(1)warファイルの配備(1)

①“addressBook.war”を右クリックし、

[プロパティ]を選択

131131

③[配備先]に「addressBook」を指定し、

[OK]をクリック

②[配備]をクリック

warファイルの配備(2)warファイルの配備(2)

※配備先は、 IJServerビューで「デフォルト配備先」を指定することでも設定可能です。

IJServer内の「addressbook」を右クリックし、[デフォルト配備先]をクリック

132132

④“addressBook”プロジェクトを

右クリックし、[配備]を選択

warファイルの配備(3)warファイルの配備(3)

133133

配備終了の

メッセージが表示される

⑤IJServer”addressBook”を展開し、Webアプリケーション“addressBook”が配備されていることを確認

warファイルの配備(4)warファイルの配備(4)

134134

IJServerの起動(1)IJServerの起動(1)

①IJServer“addressBook”を右クリックし、

[起動]を選択

◆配備時、「配備後のIJServer起動」を“起動する”に設定した場合、すでにIJServerが起動しているので、本処理は実行する必要がありません。

※IJServerビューで、起動したいIJServerを選択し、起動アイコンをクリックする方法でも起動できます。

起動アイコン

135135

IJServerの起動(2)IJServerの起動(2)

起動終了の

メッセージが表示される

136136

Step1. Webアプリケーションの設計

Step2. Webアプリケーションの作成

Step3. Webアプリケーションのビルド

Step4. Webアプリケーションの配備

ここ

●実習の流れ●実習の流れ

Step5. システムの実行例

本章では、Webアプリケーションを作成します。

作成するアプリケーションは簡単な住所録です。

まず、作成する住所録アプリケーションについて説明します。

その後、実際にInterstage Studioを使用してアプリケーションを作成します。

137137

アプリケーションの実行(1)アプリケーションの実行(1)

①IEなどのブラウザを起動し、[アドレス]に「http://localhost/addressBook/main.jsp」を入力すると、初期画面が表示される

注意:アプリケーションを実行する前に以下を確認してください。

・サーバアプリケーションが起動している・WWWサーバが起動している

確認方法は、「Interstage管理コンソール」の「サービス」「Webサーバ」を選択してください。「状態」が「起動」になっているかを確認してください。

また、「環境設定」タブを選択して、ポート番号が「80」以外の場合(例:「81」の場合)、上記のアドレスは、「 http://localhost:81/addressBook/main.jsp 」となります。

138138

②[従業員番号]を入力し、[参照]ボタンをクリック

参照画面が表示される

アプリケーションの実行(2)アプリケーションの実行(2)

③[戻る]ボタンをクリック

139139

更新画面が表示される

アプリケーションの実行(3)アプリケーションの実行(3)

⑤[電話番号]、[住所]を変更し、[反映]ボタンをクリック

④[従業員番号]を入力し、[更新]ボタンをクリック

140140

アプリケーションの実行(4)アプリケーションの実行(4)

⑦[戻る]ボタンをクリック

⑥そのまま[参照]ボタンをクリックし、アドレスが更新されたことを確認

141141

⑧[一覧]ボタンをクリック

一覧画面が表示される

アプリケーションの実行(5)アプリケーションの実行(5)

■ NetCOBOL for Windowsの体験版について

NetCOBOLホームページ

http://software.fujitsu.com/jp/cobol/

「体験版」より、お申し込みください。

■ Interstage Studioの体験版について

富士通営業、SEにお申し付けください。

■ 本書に関するお問い合わせ先

NetCOBOLホームページ

http://software.fujitsu.com/jp/cobol/

Interstageホームページ

http://interstage.fujitsu.com/jp/studio/

「本製品のお問い合わせ」より、お願いします。

ご質問に関しては、記述箇所のページ、内容を明示してください。

ご質問の内容によっては、回答に数日またはそれ以上の期間を

要する場合があります。

N e t C O B O L