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