...

BEWAN 54

by user

on
Category: Documents
22

views

Report

Comments

Description

Transcript

BEWAN 54
Contents
はじめに ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・3
目次 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・4
第1章 なぜJ2EE なのか―新しい秩序の誕生 9
1-1. 変革期に何をすべきか ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・10
1-2. C/S システムの終焉――Web アプリケーション夜明け前 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・12
1-3. Web アプリケーションの時代へ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・14
1-4. 大規模EC サイトでJava を採用・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・15
1-5. 新しい秩序に向けた夜明け前 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・15
1-6. MVC モデルとApache プロジェクト・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・16
1-7. 本書の構成・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・18
第2章 J2EE の要素技術を使い分ける 23
2-1. Web アプリケーションとは何か ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・25
コラム:J2EE を理解するには,まずはServlet とJSP を使いこなそう・・・・・・・・・・・・・・・・・・・・24
2-2. サンプル・アプリケーションのアウトライン ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・29
2-3. サンプル・アプリケーションの実装方法 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・31
ステップ1 ●Servlet だけで実装する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・33
ステップ2 ●表示の部分をJSP に ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・35
ステップ3 ●データベース・アクセスをEntity Bean へ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・36
ステップ4 ●ビジネス・ロジックをSession Bean へ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・38
ステップ5 ●Struts フレームワークの導入 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・40
2-4. 機能を追加して「ユーザー情報検索システム」を仕上げる・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・41
(1)認証機能 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・42
(2)プロファイル編集機能 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・44
(3)メール送信機能 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・47
第3章 MVCモデルとStrutsフレームワーク 49
3-1. SurutsでWebアプリケーション開発と保守を簡略化する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・50
コラム:Strutsは「画面周り」だけを担当するフレームワークだからみんなが乗れる ・・・・・・・・・50
3-2. Strutsフレームワークの動作をひとまず把握する・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・51
3-3. MVCモデルとStruts ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・54
3-4. StrutsのController―― ActionServletとActionMapping ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・57
3-5. StrutsのModel ――ActionクラスとActionFormクラス ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・58
3-6. StrutsのView――JSP ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・59
4
3-7. Strutsの役割はMVCモデルの「C」と「V」
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・60
3-8. 処理の流れをシーケンス図で見る ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・61
3-9. ActionServletクラス――各コンポーネントを制御・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・62
3-10. ActionMappingクラス――URLとアクションを対応付ける ・・・・・・・・・・・・・・・・・・・・・・・・・・・・64
3-11. ActionFormクラス――フォームへの入力を扱う ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・67
3-12. ActionFormクラスでの検証処理 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・70
3-13. Actionクラス――ビジネス・ロジックを呼び出す・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・72
3-14. Strutsタグ・ライブラリの利用 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・74
3-15. デプロイメント・ディスクリプタ(web.xml)
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・77
コラム:Strutsの使い勝手とは ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・80
第4章 EJBでビジネス・ロジックを実装する 81
4-1. EJBのメリットとは ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・83
コラム:ビジネス・ロジックをEJBで実装すれば,
安全にトランザクションを実現できる ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・83
4-2. EJBコンポーネントを使う理由とは ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・86
4-3. EJBコンポーネントを使い分ける ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・87
① AuthEJB.jar――認証用モジュール ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・88
② MailProducerEJB.jar――メール送信用モジュール ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・90
③ UpdateProfileEJB.jar――プロファイル編集用モジュール・・・・・・・・・・・・・・・・・・・・・・・・・・・・・91
④ WhoisXEJB.jar――ユーザー検索用モジュール・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・91
コラム:EJBのデータを運ぶ「箱」としてJavaBeansを利用する・・・・・・・・・・・・・・・・・・・・・・・・・・・92
4-4. EJBの種類――Session Bean, Entity Bean,Message-driven Bean ・・・・・・・・・・・・・・・・95
4-5. Session Beanの概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・96
Stateless Session Bean ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・96
Stateful Session Bean・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・97
4-6. Entity Beanの概要・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・98
BMP(Bean-Managed Persistence)とは ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・99
CMP(Container-Managed Persistence)とは ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・99
4-7. EJBの実行サイクルを理解する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・99
コラム:EJBインスタンスのライフサイクルを意識するのはどんな場合か ・・・・・・・・・・・・・・・・101
Stateless Session Beanインスタンスのライフサイクル ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・102
Stateful Session Beanインスタンスのライフサイクル・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・103
Entity Beanインスタンスのライフサイクル ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・104
4-8. Session BeanとEntity Beanの使い分け・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・106
4-9. JavaBeansとEJBの違い ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・109
5
コラム:検索結果を保持する手段:Session BeanかHTTP Sessionか ・・・・・・・・・・・・・・・・・・108
4-10. EJBを使ったアプリケーションの開発 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・110
実装例●1ログイン処理機能 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・112
実装例●2キーワード検索機能 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・125
4-11. EJB2.0の新機能 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・147
Localインタフェース・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・147
コラム:EJB2.0のLocalインタフェースの意義とは ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・149
EJB2.0の構成要素 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・150
EJB2.0 CMP ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・151
4-12. EJB2.0を使ったアプリケーションの開発 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・152
4-13. EJB QL(EJB Query Language)
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・160
EJB QLにおけるベンダー拡張機能 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・162
付録:EJB規約の要約(EJB1.1およびEJB2.0)
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・166
第5章 WebアプリケーションからWebサービスへ 171
5-1. Webサービスは何に使うのか ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・172
コラム:分散した複数のWebアプリケーションをWebサービスが統合する ・・・・・・・・・・・・・・・・172
5-2. Webサービスの基本技術 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・174
SOAP――XMLによるデータ交換 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・174
WSDL――Webサービスを定義 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・176
UDDI――サービスを検索・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・178
5-3. SOAP,WSDL,UDDIの関係 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・180
5-4. WebアプリケーションからWebサービスを作り出す ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・182
第6章 Apache Axisを利用したWebサービスの作成 185
6-1. オープンソースのSOAPドライバApache Axis ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・186
コラム:オープンソース・コミュニティのApacheの成果を使ってWebサービスを実装する ・・・187
6-2. Axisを使いWebサービスを公開する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・188
Webサービス実装クラスの作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・188
Apache Axisドライバの登録 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・190
Webサービスの登録・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・192
WSDLの作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・194
6-3. Webサービス・クライアントの作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・195
Javaクライアントの作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・195
C#クライアントの作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・196
6-4. ステートフルなWebサービスの実装・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・197
6
6-4. ステートフルなWebサービスの実装・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・197
コラム:WebサービスでJava環境と.NET環境を結ぶ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・200
第7章 Webサービスをポータル構築に応用する 201
7-1. Webサービスによるサーバー間連携 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・202
コラム:ポータル・サーバーのPortletが
Webサービスを使ってWebアプリケーションを呼び出す ・・・・・・・・・・・・・・・・・・・・・・・・・・・202
7-2. ポータル・サーバー構築用ソフトJetspeed ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・204
7-3. PortletによるWebサービス・クライアントの作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・206
7-4. ポータル・サーバーへのPortletの登録 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・211
7-5. ポータル・サーバー上でのユーザー検索機能の実行手順 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・212
第8章 非同期メッセージングとメール送信機能 215
8-1. メール送信機能の成り立ち ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・216
コラム:J2EEのJMSを使って非同期メッセージングで他システムと連携する ・・・・・・・・・・・・・216
8-2. JMSを用いた非同期メッセージング ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・217
アプリケーション・サーバーの設定・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・219
送信側プログラム ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・220
受信側プログラム(その1)――キュー・リスナを使う ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・223
受信側プログラム(その2)――Message-driven Beanを使う ・・・・・・・・・・・・・・・・・・・・・・・・・227
8-3. JavaMailを用いたメール送信 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・232
第9章 JNDIとLDAPでユーザー認証機能を実現する 235
9-1. ユーザー認証機能 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・236
コラム:シングル・サインオンへの第一歩,JNDIとLDAP ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・236
LDAP ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・237
JNDI ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・237
9-2. JNDIを用いたLDAPサーバーへのアクセス ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・238
LDAPサーバー上の情報の取得 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・238
LDAPサーバー上の情報の変更 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・240
9-3. LDAPアクセスをBMP Entity Beanに ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・242
付録A:Apacheプロジェクトの概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・251
付録B:JBossサーバーの概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・253
索引 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・254
7
Fly UP