JBoss入門 オープンソースJavaEJB

[表紙]JBoss入門 オープンソースJava・EJB

紙版発売

B5変形判/464ページ/CD1枚

定価4,268円(本体3,880円+税10%)

ISBN 4-7741-1749-8

ただいま弊社在庫はございません。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

「オープンソース・Java・EJBソフトウェア開発の旗手JBoss」JBossはオープンソースのEJB(Enterprise Java Beans)サーバで,オープンソースの総本山SouceForge。Netで年間200万ダウンロードを超える人気のソフトの1つです(米JavaWorld誌で2002年ベストアプリケーションサーバ賞受賞)。JBossは高価なWebサーバを購入することなく,EJBを無料で学習できる定番Webサーバとなりました。本書はJavaプログラマ/開発者を対象とし,JBossの機能とEJBのプログラミング方法をやさしく解説しました。EJBのみならず,Jakartaプロジェクトのツール群の使い方からUMLを利用したオブジェクト指向開発までも統合的に学習できます。

こんな方におすすめ

  • EJBを使用して高度なサーバーサイドJavaプログラミングに挑戦したい方
  • オープンソース系のソフトウェア開発を知りたい方

著者の一言

JBossを使いこなせるようになるためには,J2EEの基本となる考え方やJBossの アーキテクチャを理解することが大事です。本書ではJ2EEプログラミングの題材を通して,「なぜそうなっているのか」ということを自分の頭で考えられるように努めました。本書によって,JBossの魅力が少しでもお伝えできたら幸いです。

目次

1章 JBossとJ2EE

  • 1.1 JBossは,もっとも人気のあるオープンソースJ2EEサーバ
    • 1.1.1 .JBossとはなにか「歴史と発展」
    • 1.1.2 .JBossの特徴「簡単・使いやすい・先進的」
    • 1.1.3 .JBoss 3.0の機能「EJB仕様への対応」
    • 1.1.4 .JBossの基盤としてのJMX「柔軟なサーバ構成を可能にする技術」
    • 1.1.5 .マイクロカーネルアーキテクチャ「サービスの登録を簡単にする秘密」
    • 1.1.6 .JBossの主なモジュール
    • 1.1.7 .JBoss使用上の注意「J2EEの認証について」
  • 1.2 J2EE多層モデル
    • 1.2.1 .J2EEプラットフォーム「多層モデルの役割を確認しよう」
    • 1.2.2 .J2EE開発のロールと作業「コンポーネントプロバイダ・アプリケーションアセンブラ・デプロイヤ」
  • 1.3 EJBの基礎知識を復習する
    • 1.3.1 .EJBの概念「必要とされるシステム要件とメリット」
    • 1.3.2 .EJBサーバ「分散オブジェクトと通信プロトコルAPI」
    • 1.3.3 .EJBコンテナ「構造と機能」
    • 1.3.4 .宣言型プログラミング「デプロイメント記述子の役割」
    • 1.3.5 .EJBのリソース管理「インスタンスとガーベッジコレクション」
    • 1.3.6 .EJBの規約「クライアント・コンポーネント・EJB-JARファイル」
    • 1.3.7 .EJBの種類「セッション・エンティティ・メッセージ駆動型Bean」
    • 1.3.8 .EJBの構成要素「必須インターフェース」
    • 1.3.9 .EJB-JARファイル「構造と機能」
    • 1.3.10 .EJBのインターフェース「リモートとローカル」
    • 1.3.11 .EJBクライアント「JNDIアクセスの仕組み」
    • 1.3.12 .JBossデプロイメント記述子「J2EE仕様とのすり合わせ」

2章 J2EEプログラミングの基礎

  • 2.1 JBossのインストールの方法
    • 2.1.1 .JDKとJBossの準備をしよう「環境の構築における注意点」
    • 2.1.2 .JBossのダウンロードと配布内容「適用バージョンに注意」
    • 2.1.3 .配布ファイルの展開「jarコマンド」
    • 2.1.4 .環境変数の設定「各種スクリプトファイルに適用」
    • 2.1.5 .設定セット「設定ファイルとライブラリ一式」
    • 2.1.6 .ディレクトリ構成「階層構造を確認」
  • 2.2 JBossの起動と停止
    • 2.2.1 .JBossの起動「バッチファイルやシェルスクリプトで行う」
    • 2.2.2 .JBossの停止「バッチファイルかCtrl+Cで行う」
    • 2.2.3 .JBossの起動オプション「目的別にオプションを変える」
    • 2.2.4 .Webコンテナの動作確認「JMXコンソール」
  • 2.3 JMXコンソールとはなにか
    • 2.3.1 .JMXコンソールの機能「MBeanをブラウズする」
    • 2.3.2 .JMXコンソールの使い方「コンソールの起動」
  • 2.4 サンプルEJBの説明「開発の手順とAntのインストール」
  • 2.5 STEP1 はじめてのEJBプログラミング
    • 2.5.1 .数値カウンタEJBを作ろう「インターフェース設計」
    • 2.5.2 .EJBのビルド手順「コンパイル→JARファイル作成,Antを活用」
    • 2.5.3 .クライアントの実行「動作確認テスト」
    • 2.5.4 .JMXコンソールによる確認「JNDIとデプロイメントの成功」
    • 2.5.5 .JNDIプロパティの設定「2つの方法」
  • 2.6 STEP2 Webアプリケーションを作ろう
    • 2.6.1 .Webコンテナ「アプリケーション実行エンジン」
    • 2.6.2 .Webアプリケーション「その定義とは」
    • 2.6.3 .WARファイルの作成方法「コンパイル後,jarコマンド実行」
    • 2.6.4 .数値カウンタのWeb表示「ブラウザで実行確認」
    • 2.6.5 .クライアントの実行「カウンタの動作確認」
    • 2.6.6 .STEP2の課題「改善方法を考える」
  • 2.7 STEP3 J2EEアプリケーションを作ろう
    • 2.7.1 .J2EEアプリケーション「本格的なJ2EE対応を目指す」
    • 2.7.2 .EARファイル「J2EE準拠ならばマルチベンダ対応」
    • 2.7.3 .数値カウンタアプリケーション「J2EE対応にするには」
    • 2.7.4 .クライアントの実行「動作確認」
  • 2.8 STEP4 J2EEアプリケーションの組立て
    • 2.8.1 .ENC「ローカルな名前空間とはなにか」
    • 2.8.2 .EJB参照の解決「問題点の明確化と対策」
    • 2.8.3 .依存ライブラリの指定「Java拡張機能機構」
    • 2.8.4 .クライアントの実行「動作確認テスト」

3章 オープンソースによるEJB開発

  • 3.1 J2EEアプリケーションの開発手順「AntとXDocletの活用」
  • 3.2 Antによるビルドの自動化「XMLファイルとビルド手順」
    • 3.2.1 .Antビルドファイルの構造「XMLファイルの構成要素」
    • 3.2.2 .EJBをビルドするために「build.xmlの例」
  • 3.3 XDocletを使ったコード生成
    • 3.3.1 .XDocletのインストール「Antが必須」
    • 3.3.2 .XDocletの概要「作業を効率化する魅力的な機能」
    • 3.3.3 .BeanクラスへのJavadocコメントの記述例「クラス・メソッド」
    • 3.3.4 .Javadocコメントから生成されたファイルの例「リモートインターフェースとCMPレイヤクラス」
    • 3.3.5 .AntにおけるEJBDocletの利用例「JBoss向けの設定方法」
  • 3.4 Java IDEを利用したXML編集とデバッグ
    • 3.4.1 .Java IDEの必要性「さらなる生産性の向上のために」
    • 3.4.2 .NetBeansのインストール「Sun Microsystemsの高機能IDE」
    • 3.4.3 .デプロイメント記述子の編集「NetBeansのXMLサポート機能」
    • 3.4.4 .リモートデバッグ「一連の手順を紹介」
  • 3.5 EclipseとJBossの使い方
    • 3.5.1 .Eclipseのインストール「プラグインで拡張可能な開発環境」
    • 3.5.2 .JBossIDEプラグインのインストール「2つの方法」
    • 3.5.3 .JBossサーバの起動と停止
    • 3.5.4 .XDocletタグ入力補完

4章 EJBプログラミングの実践

  • 4.1 サンプルプログラムの仕様解説
    • 4.1.1 .図書館システム作成シナリオ「なにを実現したいのか」
    • 4.1.2 .エンティティの確認「永続オブジェクト」
    • 4.1.3 .アプリケーションの構成「BluePrintsを下敷きに」
    • 4.1.4 .コンポーネントの配置「セッションEJBを中心に」
    • 4.1.5 .サンプルのビルドと実行「Antコマンドの使い方」
    • 4.1.6 .画面構成「一連の操作の画面遷移」
  • 4.2 CMPエンティティBean
    • 4.2.1 .エンティティBeanの概要「データベースのレコード」
    • 4.2.2 .CMPとBMPの違い「データベース処理をサーバにまかせるか」
    • 4.2.3 .エンティティBeanの構造
    • 4.2.4 .インスタンスの管理「活性化と非活性化」
    • 4.2.5 .オブジェクトの作成「インスタンスの初期化」
    • 4.2.6 .データベースとの同期「N+1問題の解決」
  • 4.3 CMPリレーションシップ
    • 4.3.1 .CMRの概要「リレーションシップの実現方法」
    • 4.3.2 .エンティティとリレーションシップ「宣言の方法」
    • 4.3.3 .CMRの機能と効能「簡素化.整合性の維持,カスケード削除」
    • 4.3.4 .JBossリレーションマッピング「外部キーとテーブル」
  • 4.4 CMP EJBクエリ言語とはなにか
    • 4.4.1 .EJB-QLの概要「SQLに似ているEJB問い合わせ言語」
    • 4.4.2 .JBoss-QLの紹介「EJB-QLをより便利に」
  • 4.5 セッションBean
    • 4.5.1 .セッションBeanの概要「手続き型のBean」
    • 4.5.2 .セッションBeanの構造「ホームとリモートインターフェース」
    • 4.5.3 .データ転送オブジェクト「エンティティの内容をC/S間で転送」
  • 4.6 メッセージ駆動型Bean
    • 4.6.1 .メッセージ駆動型Beanの概要「非同期とトランザクション」
    • 4.6.2 .メッセージの構造と種類「用途に応じたメッセージの選択」
    • 4.6.3 .JMSメッセージングモデル「パブリッシュ−サブスクライブとポイント−ポイントモデル」
    • 4.6.4 .メッセージ駆動型Bean「クラス構造とインターフェース」
    • 4.6.5 .JMSクライアントコード「キューを送る手順」
  • 4.7 図書館システムに催促メールサービスを加える
    • 4.7.1 .スケジューラMBean「cronに似た機能を作る」
    • 4.7.2 .スケジューラの属性「パラメータのXMLファイル指定」
    • 4.7.3 .スケジューラクラスの作成「催促メールの送信」
    • 4.7.4 .スケジューラのアーカイブ作成「<classpath>要素を忘れずに」
    • 4.7.5 .スケジューラMBeanの動作確認「JMXコンソールで制御」

5章 トランザクションの概要

  • 5.1 トランザクションの概要
    • 5.1.1トランザクションは商取引「まとめて1つとして扱う必要のある一連の仕事」
    • 5.1.2 .トランザクションの要件「ACID特性」
    • 5.1.3 .トランザクション処理の重要性「サーバによる並行制御と耐障害性」
  • 5.2トランザクション管理のコンポーネント
    • 5.2.1 .コミットとロールバック「EJBでのトランザクション処理」
    • 5.2.2トランザクションの伝播「トランザクションの構造化」
  • 5.3 宣言トランザクションとはなにか
    • 5.3.1 .トランザクション属性「スレッドとメソッド」
    • 5.3.2 .トランザクション属性の実装例「本の注文を例に」
    • 5.3.3 .トランザクション属性の設定方法「ejb-jar.xml」
  • 5.4 コミットオプションとはなにか
    • 5.4.1 .コミットオプションの種類「A,B,C,D」
    • 5.4.2 .キャッシュの制御「オプションの種類と性質」
    • 5.4.3 .Read-Onlyデータの扱い「各オプションの用途」
    • 5.4.4 .コミットオプションの設定方法「コンテナ設定」
    • 5.4.5 .EJBコールバックメソッドとの関係「呼ばれ方の変化を調べる」
  • 5.5 トランザクション独立性とはなにか
    • 5.5.1 .トランザクションとロックの関係「独立性の保持の仕組み」
    • 5.5.2ロックの種類「悲観的/楽観的ロック」
  • 5.6デッドロックとその回避策
    • 5.6.1 .デッドロック「排他的/悲観的ロック」
    • 5.6.2 .デッドロック例外「適切に使いこなすJBoss」
    • 5.6.3 .Read-Onlyフラグ「EJB 2.0にはない機能」
    • 5.6.4 .トランザクションと例外処理「EJBコンテナによるトランザクションロールバック処理」

6章 セキュリティ管理

  • 6.1 J2EEセキュリティの概要
    • 6.1.1 .J2EEにおける認証と認可「認証サービスの特徴」
    • 6.1.2 .プリンシパルとロール「認証情報とデータ」
    • 6.1.3 .ロールによるアクセス制御「ロールベースで手間を減らす」
  • 6.2 J2EEアクセス制御の2つの方法
    • 6.2.1 .ロールの参照「メソッドで記述する場合」
    • 6.2.2 .EJBにおける宣言セキュリティ「ロールとアクセス権」
    • 6.3 .Webの保護リソース
    • 6.4 .Webのログイン認証
  • 6.5 JBossセキュリティ管理の仕組み
    • 6.5.1 .セキュリティドメインを単位としたリソース管理「デプロイメント記述子で宣言する」
    • 6.5.2 .セキュリティドメインの指定「JNDI登録方法」
    • 6.5.3 .セキュリティドメインの設計「選択肢は3通り」
  • 6.6 JBossセキュリティマネージャ
    • 6.6.1 .セキュリティマネージャ「JASSフレームワーク」
  • 6.7 JBossログインモジュールの選択と設定
    • 6.7.1 .ログイン設定ファイル「login-config.xmlの構造」
    • 6.7.2 .UsersRolesLoginModule「プロパティから認証情報を取得」
    • 6.7.3 .DatabaseServerLoginModule「DBから認証情報を取得」
    • 6.7.4 .ClientLoginModule「クライアント側でのログイン」
    • 6.7.5 .パスワードの符号化「ハッシュアルゴリズム」
    • 6.7.6 .非認証コンポーネントからのアクセス「ロールベースでの認証をどのように実現するか」

7章 EJBデザインパターンの適用

  • 7.1 EJBデザインパターンとはなにか
  • 7.2 Session Facadeパターン
    • 7.2.1 .通信層としてのセッションBean「複数のインターフェースを1つにまとめる」
    • 7.2.2 .Session Facadeパターンによるパフォーマンス向上「効果覿面」
  • 7.3 Data Transfer Object Factoryパターン
    • 7.3.1 .DTOの役割「分散環境に有効」
    • 7.3.2 .カスタムDTO「エンティティBeanと対に」
    • 7.3.3 .DTO FactoryによるDTO作成の集約「コード修正を最小限にしたい」
  • 7.4 Business Delegateパターン
    • 7.4.1 .EJB APIを隠すBusiness Delegate「正しいコーディングを導くために」
    • 7.4.2 .Business Delegateの役割「コード変更の吸収のメリット」
    • 7.4.3 .Business Delegateによる例外の変換「間違いを減らす処理」
    • 7.4.4 .Business Delegateにおけるキャッシュの保持「高速化のために」
    • 7.4.5 .典型的なEJBアプリケーションの構成「様々なパターン」

8章 パフォーマンスの考察

  • 8.1 JBoss CMPの最適化でパフォーマンスは向上するか
    • 8.1.1 .遅すぎる測定結果「Session Facade適用の有無」
    • 8.1.2 .トランザクションの影響「背後でのエンティティの動き」
    • 8.1.3 .JBoss CMPの影響「先読みをするか否か」
    • 8.1.4 .Session Facadeパターンの効果「3つのメリット」
  • 8.2 キャッシュの制御
    • 8.2.1 .コミットオプションの効果「魔法のスイッチの使い方」
    • 8.2.2 .Read-Onlyフラグの効果「コミットオプションとの関係」
  • 8.3 JBossの最適化機能とパフォーマンス向上

9章 XDocletアプリケーション開発

  • 9.1 なぜXDocletが必要なのか
    • 9.1.1 .EJB開発の問題点を明らかにする「再利用と保守性を考える」
    • 9.1.2 .リファクタリングの必要性「実装コードの改善」
    • 9.1.3 .XDocletとリファクタリング「EJB=Beanクラス」
  • 9.2 セッションBean
    • 9.2.1 .@ejbのタグ指定「XDocletのための確認」
    • 9.2.2 .セッションBeanのデプロイメント記述子「BookSearchBean」
  • 9.3 CMPエンティティBean
    • 9.3.1 .@ejbのタグ指定「構造部分」
    • 9.3.2 .@ejbのタグ指定「Value Object」
    • 9.3.3 .@ejbのタグ指定「データベースの操作」
    • 9.3.4 .@jbossのタグ指定「CMPエンティティBeanでの利用方法」
    • 9.3.5 .マージポイント「デプロイメント記述子上でおこなう」
    • 9.3.6 .CMPエンティティBeanのデプロイメント記述子「構造部分」
  • 9.4 CMP finderメソッド
    • 9.4.1 .@ejbのタグ指定「JBoss-QL」
    • 9.4.2 .CMP finderのデプロイメント記述子「生成結果」
  • 9.5 CMPリレーションシップ
    • 9.5.1 .@ejbのタグ指定「エンティティ間のリレーションを宣言」
    • 9.5.2 .CMP リレーションシップのデプロイメント記述子「生成結果」
  • 9.6 メッセージ駆動型Bean
    • 9.6.1 .@ejbのタグ指定「属性名とejb-jar.xml」
    • 9.6.2 .メッセージ駆動型デプロイメント記述子「生成結果」
  • 9.7 Webアプリケーション
    • 9.7.1 .@webのタグ指定「外部ファイル化」
    • 9.7.2 .Webアプリケーションのデプロイメント記述子「生成結果」
  • 9.8 Antビルドスクリプト

10章 JBossアーキテクチャ

  • 10.1 JMXの概要
    • 10.1.1 .JMXとMBeanの概要「JBossはJMXベースのJ2EEサーバ」
    • 10.1.2 .MBeanの構成要素を作る「構造と機能」
    • 10.1.3 .MBeanサーバ「オブジェクトの機能と役割」
    • 10.1.4 .MBeanクライアント「バージョン表示・リモートデプロイメント機能」
  • 10.2 JBossアーキテクチャの基礎
    • 10.2.1 .JBossサービスの作成「実装方法」
    • 10.2.2 .MBeanのデプロイメント「マイクロカーネルアーキテクチャの威力」
    • 10.2.3 .MBeanのライフサイクル管理「依存関係の制御」
    • 10.2.4 .UnifiedClassLoaderアーキテクチャ「クラスローダの存在理由」
  • 10.3 JBossコンテナアーキテクチャ
    • 10.3.1 .ホットデプロイ「作業を楽にする重要な機能」
    • 10.3.2 .ダイナミックプロキシ「RMIがなぜ要らないのか」
    • 10.3.3 .コンテナ通信「IIOPの利用」
    • 10.3.4 .カスタマイズ可能なコンテナ「インタセプタ」
    • 10.3.5 .インタセプタの例「CounterServiceの使い方」
    • 10.3.6 .クライアントインタセプタ「プロキシから呼び出されるインタセプタ」

11章 JBossシステム管理

  • 11.1 Java仮想マシンの調整
  • 11.2 オープンポート
  • 11.3 JMXコンソール
    • 11.3.1 .JMXコンソールのセキュリティ上の問題「Web公開時の注意点」
    • 11.1.2 .JMXコンソールのログイン認証「修正方法例」
    • 11.1.3 .JMXコンソールから利用可能な監視ツール「MBeanモニタ」
  • 11.4 ログファイルの設定
    • 11.4.1 .JBossのログファイルの種類「Logの読み方」
    • 11.4.2 .Log4Jによるログ指定「6つのトレースレベル」
  • 11.5 Webコンテナの設定
    • 11.5.1 .Jettyの設定「SARファイルの書き方」
    • 11.5.2 .Tomcatの設定「Jetty以外のWebコンテナ」
  • 11.6 EJBコンテナの設定
  • 11.7 データベースの変更方法
    • 11.7.1 .JBossのコネクション管理「JCAドライバ」
    • 11.7.2 .PostgreSQLのインストール「シーラカンス本参照のこと」
    • 11.7.3 .設定セットの作成「PostgreSQLの例」
    • 11.7.4 .サービス設定ファイル「JNDI名とConnectionURLの変更」
    • 11.7.5 .ログイン設定情報の修正「ユーザ認証」
    • 11.7.6 .JDBCドライバのインストール「設定し忘れに注意」
    • 11.7.7 .CMP関連ファイルの修正「変更注意点」
    • 11.7.8 .Postgresサービスの動作確認「サーバとの接続」
    • 11.7.9 .Hypersonic SQL DBの削除「切り替え」

著者プロフィール

皆本房幸(みなもとふさゆき)

埼玉県生まれ。2000年ごろからOSSベースのEJBに興味を持ち,2001年より個人でJBossマニュアルの翻訳を始める。その後,jboss-fan MLを通じて,日本での初期のJBossユーザ活動に関わる。2006年日本JBossユーザ・グループ(JJBug)設立時の発起人。

著書