第2回 Beanをうまく作るコツ
――Beanはsetしてexecuteしてgetして活用する――



ローカルBeanとリモートBeanの配置の違い

  これまではローカルBeanとリモートBeanの異なる特徴を紹介してきました。しかしBeanというものがいろいろな外部プログラムから共有して使えるということは、実はこの2つのBeanで共通に持っている部分もあるということです。それはおのおののBeanの中のプログラムを見れば分かります。

 ローカルBeanとリモートBeanの決定的な違いは、外部プログラムとBeanという2つのプログラムの配置の違いにあります。ローカルBeanは、外部プログラムとBeanが同一のホストコンピュータ上のアプリケーションサーバに配置されて動きます。

 一方、リモートBeanというのは、外部プログラムとBeanは異なるホストコンピュータ上のアプリケーションサーバにそれぞれ配置されます。このことから外部プログラムとBeanとの間のデータのやりとりは、ローカルBeanでは1つのJVM上のメモリからメモリのコピー(実際にはメモリ上のどの位置にデータがあるのかを示す参照を渡しています)だけで済みますが、リモートBeanでは、2台のコンピュータをまたいだデータのやりとりに変化します。すなわちリモートBeanでは外部プログラムとBeanの間に必ずネットワーク処理が介在するということになるわけです。

図11 ローカルBeanとリモートBeanの配置

 JavaBeansとEJBを作成するとき、この外部プログラムとBeanの間にネットワークが存在するかしないかの違いが、実はJavaBeansとEJBを作るときに、業務メソッドとプロパティ以外に差異が出てくる部分でもあります。

JavaBeansにするための差分

 さてここで実際にJavaBeansとEJBでは、どのような差異があるのかということを、簡単なプログラムコードを見ながら確認していきましょう。まずローカルBeanとして動くJavaBeansですが、基本的にリスト1とリスト2の業務メソッドとアクセッサを変更することなく使うことができます。

 これをJavaBeansにするためには、まずこれにクラス定義を追加することと、アクセッサで使用する変数(インスタンス変数)を作成することです。この作業をする場合は、以下のリスト3のようなJavaBeans作成用のひな型を作成し、ここに業務メソッドとアクセッサを記述すれば簡単です。

図12 外部プログラムがJavaBeansをコールする様子

リスト3 JavaBeansの差分部分
 1 import java.io.*;
 2 import java.util.*;
 3 import java.sql.*;
 4
 5 public class TestBean implements Serializable {
 6 private String DB = new String();
 7 private String TABLE = new String();
 8 private String KEY = new String();
 9 private String[] RESULTS = null;
10
11 *************************
12 (1)業務ロジックの部分
13 *************************
14
15 *************************
16 (2)アクセッサの部分
17 *************************
18 }

5行目:このJavaBeansのクラス名をTestBeanとします。

6〜9行目:
この部分がプロパティとなるインスタンス変数を定義する部分です。9行目のRESULTSプロパティは配列として定義されます。privateと指定されることで、外部プロパティから直接アクセスできないインスタンス変数にすることができます。


4/5

 INDEX

第2回 Beanをうまく作るコツ
  今回の内容の目的  
  Beanはそれだけでは何の役にも立たない
外部プログラムとプロパティの重要な関係を知る
外部プログラムがBeanを活用する流れ
  外部プログラムとBeanのオブジェクト指向的な関係
業務処理は必ず失敗なく実行されないといけない
setterとgetterで作成される理由は?
ローカルBeanとリモートBeanの配置の違い
JavaBeansにするための差分
  EJBにするための差分
本当に業務ロジックがどこでも動くことができるのか
  


連載記事一覧




Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間