第6回 最適な設計はホスト時代の流儀に同じ?



eビジネス・アプリケーションは
お作法を守って記述されないといけない

 さていままで仕組みの解説ばかりしてきましたので、少し接続マネージャを使ったプログラムについてもお話ししておきましょう。接続マネージャの仕組みを有効に活用するには、プログラム自身もお作法にのっとって記述されていなければいけません。それは何かというと、サーバ・サイドJavaのプログラムで守るべき以下の約束です。

  • 極力、直接ミドルソフトへのアクセスを避ける
  • アクセスには、必ず接続マネージャを経由させる
  • 使い終わった接続は、必ず接続マネージャに戻す

 忘れがちなのは、上記の3つ目です。使っている接続を接続マネージャに戻さないと、そのプログラムが継続して接続を使っていると判断されるので、いつまでたっても、待ちになっているプログラムに接続が渡されません。

 クライアント・サーバとは違ってホスト側で集中的に動くサーバ・サイドJavaプログラムは、この厳格な作法を守って作成されている必要があります。そうでないとシステム全体のパフォーマンスを悪くしてしまいます。またすべてのプログラムをうまく動かすことができなくなってしまいます。

悪いサーブレットを改善しましょう

 先ほど記事の初めに接続マネージャの考え方が標準化されている、とお話ししましたが、その最も分かりやすい例がリレーショナルDBに対する接続マネージャです。これはJ2EEの世界では、データソースという仕様で決められています。

 この連載は、第4回に出てきたプログラムの問題のある個所を改造しながら話を進めていますが、この第4回のプログラムでは、DBへのアクセスを接続マネージャを使わずに、直接リレーショナルDBにアクセスしています。

 ということは、このままではこのサーブレットは、多くのユーザーからアクセスされると、システム全体のパフォーマンスを悪化させる可能性が出てきます。そこで、このプログラムをリレーショナルDBの接続マネージャである、データソースを使った処理に変更して、より効率的に動くスマートなサーバ・サイドJavaプログラムに改造することにしましょう。

 以下のコードを見てください。この部分が、プログラムの中から直接リレーショナルDBにアクセスしている記述です。このプログラムの3行目と4行目の個所を接続マネージャのデータソースを使った記述に書き換えてみましょう

1 import java.sql.*;
2 /* JDBCドライバからDB接続オブジェクトを獲得する */
3 Class.forName(RDBDRIVER).newInstance();
4 Connection dbConn=DriverManager.getConnection("jdbc:db2:"+inDs,USERID,PASSWORD);

 以下のコードを見てください。これが書き換え後のコードになります。データソースを経由してDB接続を行うには専用のプログラムが必要になります。それを表す記述が2行目と3行目に記述されているJavaパッケージ(ライブラリですね)に含まれています。

1 import java.sql.*;
2 import javax.sql.*;
3 import javax.naming.*;
4 /* データソースからDBを検索する */
5 InitialContext initCtx=new InitialContext();
6 DataSource ds=(DataSource)initCtx.lookup(DATASOURCENAME);
7 Connection dbConn=ds.getConnection(USERID,PASSWORD);

 プログラムの5行目と6行目では、データソースを探す準備をして、実際のデータソースを見つけ出す作業です。データソースを見つけ出すというのは、ちょっと奇妙ないい方かもしれませんが、この説明は後ほどします。

 データソースが発見できたら、7行目でデータソースを経由してDB接続を行います。このDB接続がうまくいけば、データソースを経由してDBアクセスしたことと同様の効果が得られることになります。この後のコードの書き方に全く変更はありません

5/6

 INDEX

第6回 最適な設計はホスト時代の流儀に同じ?
  今回の目的は? 
  eビジネス・アプリケーションは基幹連携の方法に違いがある
プログラムが他の機能の恩恵を受ける、それは相手の資源を使うこと
システム連携処理には、ミドルソフトの存在が欠かせない
クラサバの基幹連携をサーブレットに置き換えてみると
  システム連携を集中管理する接続マネージャの考え方
  接続マネージャは、誰が用意するのか
Webアプリケーションサーバを使った接続マネージャの作成
eビジネス・アプリケーションは、お作法を守って記述されないといけない
悪いサーブレットを改善しましょう
  もっとパフォーマンスUPを狙った改造をする
まとめ


連載記事一覧




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

注目のテーマ

Java Agile 記事ランキング

本日 月間