@ledsun blog

無味の味は佳境に入らざればすなわち知れず

IBM WebSphereエンタープライズJavaプログラミング

WebSphereIBMアプリケーションサーバ)に関する本。 原著は2001年5月に出版。 この本の一番のポイントは、マーチンファウラーがエンタープライズ アプリケーションアーキテクチャパターンの中で言及していること。

IBM WebSphereエンタープライズJavaプログラミング

本書の扱うテーマ

概要

目次を見ると、半分以上はWebSphereとVisualAge for Javaの話。 サーブレットJSPJava Beanを使ったJ2EEアプリケーションという点は共通しているので TomcatstrutsでWebアプリケーションを設計する人にも参考になる点は多い。 今でも、一つのアプリケーションサーバで機能ごとに違うプロセスをバンバン立てたいときは、一通りの道具が揃っていて設計や管理のしやすいためJ2EEアプリケーションを使う人もいるでしょう。 ただ、そういうプロセス間連携の話はあんまり載っていない。

目次

  1. インターネット・ビジネス環境
  2. Webベースのクライアント/サーバー・ソリューション
  3. MVCと階層化アーキテクチャ
  4. サーブレットの紹介
  5. VisualAge for Javaによるサーブレット開発
  6. IBM WebSphereアプリケーション・サーバー(アドバンスド版)の使用
  7. IBM WebSphere Studioの使用
  8. セッション管理
  9. サーブレット設計の考慮点
  10. JavaServer Pageの概念〔ほか〕
  11. JSPアクション、MVC、およびツール
  12. サーブレットJSPのケース・スタディー
  13. エンタープライズJavaBeanアーキテクチャ
  14. VisualAge for Javaでの基本的なEJBの構築
  15. VisualAge for JavaでのEJBのテストおよびデバッグ
  16. 簡単なEJBクライアントのコーディング
  17. 簡単なコンテナー管理 パーシスタンス・エンティティーBean
  18. EJBトランザクション
  19. VisualAge for JavaWebSphereを使用したエンティティーBeanの構築
  20. 拡張CMPマッピング
  21. Bean管理パーシスタンス
  22. EJBシステムでの階層化アーキテクチャの構築
  23. WebSphereへのEJBの配置
  24. 最後に

マーチンファウラーの言及

マーチンファウラーが言及しているのは9章。

引用

エンタープライズ アプリケーションアーキテクチャパターンの4章より

Web サーバ技術に関する書籍のほとんどは、優れたサーバ設計の解説に1、2 章を割いている。
とは言っても、技術的な説明に埋没しがちなものが多い。[Brown et al.]の第9章には、Java
Web デザインに関する素晴らしい解説がある。

[Brown et al.]が本書のこと。

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented Selection)

第9章 サーブレット設計の考慮点 の目次

9章の目次は次の通り

  1. サーブレットの数
  2. 状態パターン
  3. 例外処理
  4. サーブレットの連携とフィルター
  5. XMLの使用
  6. まとめ

第9章の内容

内容と感想など

9-1 サーブレットの数

一番おもしろい章。 当時*1サーブレットの設計に関する次の二つの方針に対して

  • 機能ごとにサーブレットを用意
  • 一つのサーブレッドで機能ごとに作った(MVCの)コントローラにディスパッチ

本書は「一つのサーブレット」推し。利点と作り方をサンプルソースコードを使って説明している。 (本書の主張が正しかったことはその後のstrutsの興隆を見れば明らか。)

実装方法

実装方法はAbstract Factory パターン*2を使って、リクエストのパラメータに応じて必要なControllerを生成して、処理を委譲。 strutsの設計と一緒なのでstrutsのActionServletのソースコードを読むときの手引きとして使うのも面白そう。

利点

利点は次の引用を

従来の方法では、(中略)、ログイン要求とユーザー・プロファイル要求を処理できるようにした
ければ、機能ごとにサーブレットを実装し、アプリケーション・サーバーを構成して二つのサーブ
レットを認識させるようにしなければなりません。ここで取り上げた、解決策では、アプリケーシ
ョン機能をコントローラーとして分類し、そのコントローラーを作成し、抽象的に処理することが
できる抽象サーブレットを用意します。これにより、管理者はサーバー自身を構成しなくとも、ア
プリケーション・サーバーに機能を追加、変更、削除することができるようになります。

デザインパターンを適用してあらかじめ変更できる箇所を用意するところが、オブジェクト指向的な設計でとても面白い。

9-2 状態パターン

Stateパターン*3を使えと書いてあるだけで方法を書いてない。

9-3 例外処理

サーブレットでグローバル例外ハンドラーを作る方法。StrutsではExcetpionHandlerを使うので設計方針が違う。

9-4 サーブレットの連携とフィルター

WebSphereの機能、サーブレット連鎖とMIMEタイプ・フィルターを使って複数のサーブレットを連携させる方法。

9-5 XMLの使用

XMLのSAXとDOMの二つのAPIの使い分けについて

データが Java ドメイン・オブジェクトとそのプロパティーを表現していれば、SAX が選択さ
れます。(中略) 反対に、DOM を使って最終的にアプリケーションにデータを収容するのであ
れば、SAX は必要ありません

まとめ

やはりWebアプリケーションの世界にMVCパターンを持ち込んだstrutsは偉大*4。 本書自体は歴史的な資料として面白いけど「9-1 サーブレットの数」の11p半のために1000円以上出す価値は無いかなぁ。

*1:原著が出たので2001年5月でstrutsのV1.0が公開されたのが2001年6月。

*2:本書では抽象ファクトリー・パターンと訳している

*3:本書では状態パターン

*4:元のMVCパターンとは実装が違いすぎて多くの人を混乱に陥れた話は、ここでは見なかったことにする。