ステップバイステップで学ぶ
初めてのWebアプリケーション・サーバ
第6回 EJBの作成とデバッグ
|
4.EJBデバッグを行う |
■EJBデバッグの準備
ここからはいよいよEJBのデバッグ作業に入ります。EJBツールではEJBコンテナー・サーバが実装されており、WebSphereテスト環境と連携してEJBのテストを行うことができます。作業手順は次のとおりです。
- 配置コードの生成
- EJBサーバ構成の追加
- データベース表の作成
- パーシスタンス・ネーム・サーバの開始
- EJBサーバの開始
- EJBテスト・クライアントの開始
- デバッガーによるステップ実行
まず初めにEJBグループを選択して配置コードを生成します。ワークベンチのメニューから[EJB]→[Generate Deployed Code]を選択します。配置コードの生成作業は数分かかることもあります。配置コードの生成が完了したら、型ペインの右上隅にある「Show Generated Types(生成された型の表示)」アイコン(Fマーク・アイコンの右にある)をクリックして生成された配置コードを確認しておきましょう。
次に、EJBグループをサーバに配置します。といっても実際にWASに対して配置するのではなく、VAJのEJBツールにあるサーバ構成にEJBグループを追加します。VAJにはWebSphereテスト環境と同様にEJBサーバ環境が備わっているのです。
EJBグループTestEJBを選択して[EJB]→[Add To]→[Server Configuration]を選択すれば、EJB Server Configuration(EJBサーバ構成)にEJB Server(EJBサーバ)(server1)として登録されます。
画面12 EJBサーバ構成 |
これでほぼ準備完了です。あとはCMPエンティティーBeanであるCustomerがマッピングされるデータベース表を作成するだけです。EJBサーバ構成でserver1を選択して[Servers]→[Properties]を選択します。現れたProperties for EJB Server(プロパティーの指定先)で使用するデータベースを指定します。
Data Source | jdbc:db2:sample |
Connection Type | COM.ibm.db2.jdbc.app.DB2Driver |
Database User ID | wsadmin |
Database Password | wsadmin2 |
画面13 プロパティーの指定先 |
プロパティーの指定が終わったら、データベース表の作成を実行します。server1を選択して、[Servers]→[Create Database Table]を選択します。
ここでデータベースの接続中にSQL例外:No suitable driverが発生したら、[Window]→[Options]を選択してResourcesのWorkspace class pathにDB2のJDBCドライバーが正しく指定されていることを確認してください。DB2のJDBCドライバーは、デフォルト値では\SQLLIB\java\db2java.zipにあります。
これでEJBをデバッグするための準備がすべて完了しました。
■EJBデバッグの開始
EJBデバッグのために必要なサービスを開始します。
- パーシスタンス・ネーム・サーバ
- EJBサーバ(server1)
パーシスタンス・ネーム・サーバはWebSphereテスト環境のものを使います。そのために、同じポート番号を使用するWASのサービスをあらかじめ停止しておいてください。
[Workspace]→[Tools]→[WebSphere Test Environment]を選択してWebSphereテスト環境を開き、Persistent Name Server(パーシスタンス・ネーム・サーバ)を開始してください。
画面14 パーシスタンス・ネーム・サーバ |
パーシスタンス・ネーム・サーバが開始したら、今度はEJBサーバ(server1)を選択して、[Servers]→[Start Server]を選択します。Server1が開始したかどうかはConsole(コンソール)を見ることで分かります。コンソールでEJB Server(EJBサーバ)プログラムを選択し、Output(出力)ペインに表示される「Server open for business.」の文字を確認してください。
画面15 コンソール |
server1が開始したら、次はEJBテスト・クライアントを実行します。このEJBテスト・クライアントを使うことで、実際にクライアント側がまだ完成していなくてもエンタープライズBeanの動作確認を行うことができます。エンタープライズBeanペインでCusotmerを選択して右クリックし、コンテキスト・メニューから[Run Test Client]を選択します。するとEJBテスト・クライアントが立ち上がってきます。
画面16 EJBテスト・クライアント |
EJBテスト・クライアントでEJBルック・アップを行います。[ルック・アップ]ボタンをクリックしてください。ルック・アップが成功するとCustomerホーム・メソッドが表示されます。
画面17 Customerホーム・メソッド |
早速、create(String)を選択してStringの中に「1234567890」という値を入れてみましょう。このcreate(String)はCMPキー・フィールドであるaccountNoに対応しています。ですから、create(String)は新規オブジェクトを生成するとともにデータベース表に新規行を挿入することになります。最後に[選択済み]→[呼び出し]を選択します。
画面18 新規オブジェクトの生成 |
呼び出しが成功するとリモート・メソッドが現れます。リモート・メソッドにはgetterとsetterがそれぞれ見えています。getterは読み取り専用、setterは更新、あるいは挿入に使われます。それでは、setAddress(String)、setName(String)、setPhone(String)のそれぞれに適当な値を入れ、[選択済み]→[呼び出し]をそれぞれ実行してください。
画面19 Customerリモート・メソッド |
これでCMPフィールドに値が入ったはずです。確認のためにgetAddress()を選択して[選択済み]→[呼び出し]を選択してみましょう。String結果に先ほど入力した値が表示されていればOKです。ここまでの操作でデータベース表には新規行が挿入され、それぞれの列に値が入れられたわけです。
画面20 getAddress()のString結果 |
さて、今度はCustomerホーム・メソッドに戻って、findByPrimaryKey(CustomerKey)を使っていま作ったCustomerオブジェクトを呼び出してみましょう。
最初にリモート・オブジェクトの除去を行います。リモート・オブジェクト・ペインの右上隅にある[除去の選択]ボタンをクリックします。Customerを除去したら、[ホーム]タブをクリックします。そして、ホーム・メソッド・ペインでfindByPrimaryKey(CustomerKey)を選択して、詳細ペインの中でString
accountNoに「1234567890」を入力します。最後に[選択済み]→[呼び出し]を選択します。うまくメニューに「呼び出し」が現れないときはいったんcreate()メソッドを選択して、それからfindByPrimaryKey(CustomerKey)メソッドを選択し直してみてください。
画面21 findByPrimaryKey(CustomerKey) |
呼び出されたリモート・オブジェクトは先ほどと同じ値を持っているはずです。getAddress()で確認してみてください。このようにfindByPrimaryKey(CustomerKey)を使えば、すでにデータベース表にある行を照会したり、更新したりすることができます。
■EJBデバッグとステップ実行
それではVAJワークベンチに戻って、今度はEJBデバッグのステップ実行を行いましょう。EJBタブ・ページでCustomerBeanのgetAddress()メソッドを選択します。Source(ソース)ペインに表示されたソース・コードにブレーク・ポイントを挿入します。ブレーク・ポイントはソース・ペインの左端にあるマージンをダブル・クリックすることで挿入できます。挿入位置には丸アイコンが付きます。
画面22 ブレーク・ポイントの挿入(vaj22.bmp) |
この状態でEJBテスト・クライアントからgetAddress()を呼び出してみましょう。いつものようにString結果が表示されるのではなく、待ち状態になったのが分かります。そしてDebugger(デバッガー)が立ち上がっているのが分かります。
画面23 デバッガー |
デバッガーで変数の値を確認してください。これからソース・コードに少し手を加えてみます。getAddress()のソース・コードを表示させてください。
return address;の行の前に次の行を入力します。
address = "103-8510" + address;
これで保存してステップ実行をしてみましょう。[Step Over(ステップ・オーバー)]ボタンを数回クリックすると、変数addressの値が変化するのが分かります。
画面24 ソース・コードの変更 |
このように、EJBツールではエンタープライズBeanのデバッグ作業も通常のJavaクラスと同様に行うことができます。
以上でEJBツールを使ったデバッグ作業は終了です。最後に終了のしかたについて説明しておきます。初めにEJBテスト・クライアントを終了させます。[ファイル]→[終了]を選択してください。次にEJBサーバ(server1)を停止します。[Servers]→[Stop Server]を選択してください。最後にWebSphereテスト環境のパーシスタンス・ネーム・サーバを停止します。これで終了です。
今回はEJBツールを使って最も単純なエンタープライズBeanを作成してみました。実際の作成作業はほとんどが自動化されており、ユーザーにとって負担となる分散アプリケーション開発のわずらわしさが軽減されているのがお分かりいただけたと思います。EJBの仕様がさらに明確化されていけば、ユーザーが行わなければならない手続きがますます増えてくることでしょう。そうなれば、ユーザーの開発効率を高めてくれる有能なツールの必要性はますます高まってくるでしょう。そんな中でVAJはまさにその最先端を行くツールといえるのではないでしょうか。
さて、今回でこの連載も最後となりました。途中、間が空いてしまい、読者の皆さまにはご迷惑をおかけしましたが、何とかEJBツールを紹介するところまで続けることができました。長い間、お読みいただきましてありがとうございました。10月からは、WebSphere 4の入門講座がスタートする予定です。お楽しみに。
|
連載記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|