本文へジャンプ

Lotus > Lotus Developer Domain > 
   
 

IBM Rational Application Developer 6.0を使用したIBM Workplace Collaboration Servicesアプリケーションのデバッグ

 
   
 
コンテンツ
セットアップ
アプリケーションの実行
アプリケーションのデバッグ
まとめ
ダウンロード
リソース
筆者について(原文のまま)

Donal Riordan, IT Architect, IBM
driordan@ie.ibm.com

レベル:初級
原文の掲載:2006年02月14日
更新日:2006年11月17日更新
原文はこちら (US)


IBM Rational Application Developer for WebSphere Software 6.0を使用して、IBM Workplace Collaboration Servicesアプリケーションをデバッグしましょう。この記事では、2つのバグがあるサンプル・アプリケーションを用いて、その方法を説明します。

開発中のIBM Workplace Collaboration Servicesアプリケーションでバグを見つけられなくても、心配することはありません。この記事で、IBM Rational Application Developer for WebSphere Software v6.0を使用したデバッグの方法を解説します。説明の前に、2つのバグが含まれるサンプル・アプリケーションをインポートし、Workplace Collaboration Servicesサーバー上で実行します。そして、Rational Application Developerを使用して、バグを検出し、修正します。

この記事で用いられるサンプル・アプリケーションは、本格的なWorkplace Collaboration Servicesコンポーネントではありません。これは単位を変換するシンプルなアプリケーションであり、Workplace Collaboration Servicesで実行されるアプリケーションのデバッグ方法を示すのに十分な機能を持っています。Workplace Collaboration Servicesコンポーネントの実際の開発方法については、この記事では触れません。

この記事は、Workplace Collaboration Servicesとそのアプリケーション、Rational Application Developer、およびJavaプログラミングに習熟されている方を対象に書かれています。


セットアップ

この記事で扱うサンプル・アプリケーションは、IBM Workplaceソフトウェア開発キット(SDK)で利用できるIBM Workplace Collaboration Servicesアプリケーション用のCollaborative Component Wizardを使用して開発されました。このため、このサンプルを使用するには、Workplace Collaboration ServicesサーバーとRational Application Developerワークスペースの両方を適切にセットアップする必要があります。ワークスペースのセットアップ方法については、developerWorksの記事『Creating collaborative components for IBM Workplace Collaboration Services (US)』を参照してください。

ご使用になっているWorkplace Collaboration Servicesサーバーにコンポーネントをインストールする前に、Workplace SDKランタイム・ファイルがサーバーにインストールおよび設定されていない場合は、これらのファイルをインストールして設定します。インストールと設定の方法については、『Workplace SDK User's Guide (US)』を参照してください。このガイドには、サーバーでのWorkplace SDKランタイム・ファイルのセットアップ方法が記載されています。この操作は一度だけ実行する必要があります。

Workplace Collaboration Servicesで実行されているアプリケーションをデバッグするには、サーバーをデバッグ・モードで実行する必要があります。これをセットアップするには、まず、Workplace Collaboration Servicesサーバーの管理コンソールにログインします。ナビゲーション・ツリーで[サーバー]ノードを展開し、[アプリケーション・サーバー]をクリックします。次に、プロパティーを変更するために、メイン・ペインでWebSphere_Portalサーバーをクリックします(図1 参照)。

図1.管理コンソールでのアプリケーション・サーバーのリスト


[Debugging Service]項目が表示されるまでページを下にスクロールし、デバッグ・サービスのプロパティーを設定するために、この項目をクリックします。[デバッグ・サービス]ページで、[起動]オプションを選択してサービスを有効にし、使用したいポートを入力します(図2 参照)。デフォルトのポートを変更する場合は、後で必要となるので、ポート番号を記録しておいてください。

図2.管理コンソールでのアプリケーション・サーバーのデバッグ・サービスのプロパティー


設定が完了したら、[OK]をクリックして変更をマスター構成に保存し、先へ進む前にサーバーを再起動します。

Rational Application Developerで、プロジェクト交換を使用して、この記事で用いるサンプル・アプリケーションをインポートします。これを行うには、[ファイル]-[インポート]-[プロジェクト交換]を選択し、measureconverter.zipファイルを選択します。次に、[すべて選択]をクリックし、サンプルをインポートするために[終了]をクリックします。この手順を正しく実行し、ワークスペースが適切に設定されていると、図3に示すように、[プロジェクト・エクスプローラー]ビューにプロジェクトが表示されます(関連するグループ・ノードを展開することが必要な場合もあります)。ビルド・エラーはないはずです。

図3.プロジェクトがインポートされたプロジェクト・エクスプローラー


上に戻る

アプリケーションの実行

インポートしたアプリケーションは、1つのポートレット・プロジェクトと複数の補助J2EEリソースで構成されています。このアプリケーションは、(さまざまな変換の中でも)特にマイルをキロメーターに、摂氏を華氏にそれぞれ変換する単純な単位変換機能を実装します。

アプリケーションを実行するには、最初に、ポートレットが使用するJ2EEリソースをデプロイします。これを行うには、MeasureConverterEARのコンテキスト・メニューから[デプロイ]を選択し、デプロイ用のMeasureConverterEARを準備します。

次に、EARのコンテキスト・メニューから[エクスポート]-[EARファイル]を選択し、エンタープライズ・アーカイブ(EAR)ファイルをサーバーに転送します。このEARファイルを一時的に保存する場所を選択し、[終了]をクリックします。

EARファイルをデプロイするには、サーバーの管理コンソールにログインし、[アプリケーション]を展開し、[Install New Application]をクリックします(図4 参照)。

図4.管理コンソールでのアプリケーションのオプションー


[参照]をクリックし、エクスポートしたEARファイルを選択し、[次へ]をクリックします。手順3の[Map modules to application servers]まで、デフォルト値をそのまま受け入れてウィザードを続行します。

このリスト・ボックスで、「server=WebSphere_Portal」が含まれる項目を選択します(図5 参照)。次に、すべてのオプションを選択し、[適用]をクリックします。ウィザードを再開し、すべてのデフォルト値を受け入れます。

図5.管理コンソールでのアプリケーションのインストール用のウィザード


アプリケーションをインストールした後は、変更をマスター構成に保存します。次に、[Enterprise Applications]のリストでEARファイルを検索し、これを選択して[開始]ボタンをクリックします。

これで、MeasureConverterEARがサーバーに正しくデプロイされたので、ポートレット・プロジェクトを実行できます。MeasureConverterPortletプロジェクトのコンテキスト・メニューで、[実行]-[サーバーで実行]を選択します。IBM Workplace Collaboration ServicesはWebSphere Portal上で実行されるため、最初の[サーバーの選択]ウィザードでは、ホスト名を入力し、[WebSphere Portal v5.0 Server Attach]サーバー・タイプを選択し、[次へ]をクリックします(図6 参照)。

図6.[サーバーの選択]ウィザードの[新規サーバーの定義]


ヒント:プロジェクトを実行するたびにこのダイアログ・ボックスが表示されるのを防ぐには、[プロジェクトのデフォルトとしてサーバーを設定(プロンプトなし)]オプションを選択します。

次のウィザード・パネルで、Workplace Collaboration Servicesサーバーとデバッグ・サービス(先ほど設定したもの)が使用するポートを入力し、[次へ]をクリックします。

ヒント:デバッグ・サービスでデフォルト設定を変更していない場合は、ウィザード・ページのデフォルトの設定に正しいポートが入力されています。

[WebSphere Portal Settings]ウィザード・パネルで、アプリケーションをWorkplace Collaboration Servicesで実行するときのデフォルト値を変更します(図7 参照)。最初に、ご使用になるWorkplace Collaboration Servicesサーバーへの基本URI(Uniform Resource Identifier)を変更します(通常は/lwpです)。同様に、[Default page]と[Personalized homepage]でも、URIを設定します(通常は、順番に/workplaceと/myworkplaceです)。最後に、[Enable WebSphere security]オプションが選択されていることを確認します。

次に、管理者アカウントのユーザーIDとパスワードを[WebSphere Portal Administrator]セクションに入力します。この情報は、[WebSphere Portal login]セクションにコピーされます。管理者以外のユーザーとしてポートレットを実行するときは、使用するユーザーIDとパスワードをここで入力します。設定が正しいことを確認し、[終了]をクリックします。

たとえば、ポータル・ユーザーは次のようにポータルにアクセスします。

図7.[サーバーの選択]ダイアログ・ボックスの[WebSphere Portal Settings]ページ


[終了]をクリックすると、Workplace Collaboration Servicesサーバーにポートレットがデプロイされ、ブラウザーが起動されます。PortletPreviewページに移動して、ポートレットを表示します。(Workplace Collaboration Servicesはデバッグ・モードで実行されているため、通常よりかなり動作が遅くなります。)

ヒント:[ポータル]タブで作成されたサーバー設定を編集し、[Label Ordinal]フィールドをゼロに設定すると、最初に開くページはPortletPreviewページになります。

これまでの手順がすべて正しく実行された場合は、「This portlet is unavailable. If the problem persists, please contact the portal administrator」というエラー・メッセージが表示されます。図8を参照してください。

図8.MeasureConverterPortletエラー


上に戻る

アプリケーションのデバッグ

このポートレットには明らかにエラーがあるため、エラーをデバッグしなければなりません。MeasureConverterPortletプロジェクトからMeasureConverterPortletView.jspファイルを開き、[ソース]タブに切り替え、8行目にブレークポイントを挿入します。

PortletSession pSession = portletRequest.getPortletSession();

問題をデバッグするには、まず、サーバーに接続する必要があります。[サーバー]ビューでサーバーを右クリックし、表示されたメニューで[デバッグ]を選択します。Rational Application DeveloperがリモートのWorkplace Collaboration Servicesサーバーに接続され、[デバッグ]パースペクティブに切り替わります。ブラウザーで、PortletPreviewページに移動します。サーバーがこのページをレンダリングしている間に、設定したブレークポイントに到達し、制御がRational Application DeveloperのJavaデバッガーに渡されます。このデバッガーでは、JavaやJSP(JavaServer Pages)のコードの行に対して通常のステップオーバーやステップインを実行し、変数を調べたり、変更したりすることができます。

[F6]キーを使用してJSPのJavaコードを1行ずつステップオーバーしていくと、ポートレットが利用できなくなった原因が表示されます。


	String formText = sessionBean.getFormText();
	String message = null ;
	if( formText.length() > 0 ) 
	{
		...
	}

このコードでは、getFormText()メソッドがnullを返しています。これは、formText.length()がNull Pointer例外をスローすることを意味します。この部分のデバッグが終了したら、[サーバー]ビューでサーバーをもう一度右クリックし、[切断]を選択することによって、リモート・サーバーへの接続を終了します。

例外を発生させた問題を修正するために、MeasureConverterPortletSessionBean.javaを開き(このファイルを開くには、J2EEまたはWebパースペクティブへの切り替えが必要な場合があります)、次の行を変更します。

private String formText = null ;

修正後は、次のようになります。

private String formText = "" ;

変更を保存します。ポートレットを右クリックし、[実行]-[サーバーで実行]を選択し、ポートレットを再び実行します。この時点でポートレットは正しく表示されますが、修正しなければならないバグがもう1箇所残っています。入力値として「10km」を入力すると、「不正な入力である」と誤って指摘されます。

[サーバー]ビューで、サーバーのコンテキスト・メニューから[デバッグ]を選択し、もう一度サーバーに接続します。前回のブレークポイントがそのまま設定されている場合は、これによって同じ場所でブレークされます。ブレークポイントが設定されていない場合は、前と同じ方法で設定します。

JSPのJavaコードを再びステップスルーすると、入力値が「10km」として正しく取得されていることがわかります。さらに進めると、MeasureConverterDelegateクラスは6.2マイルに正しく変換していることがわかります。

問題は、次のif-elseブロックにあります。


		if( result != null )
			message = "Invalid input." ;
		else
			message = formText + " is " + result ;

これを次のように変更する必要があります。


		if( result == null )
			message = "Invalid input." ;
		else
			message = formText + " is " + result ;

再び、サーバーへの接続を終了し、変更を行って、ポートレットを再実行します。今回はコードが正しく実行され、バグがなくなりました(図9 参照)。

図9.再び、サーバーへの接続を終了し、変更を行って、ポートレットを再実行します。今回はコードが正しく実行され、バグがなくなりました(図9 参照)。


上に戻る

まとめ

IBM Workplace Collaboration Servicesアプリケーションをデプロイし、IBM Rational Application Developerのデバッグ・ツールを使用してこのアプリケーションをデバッグしました。この記事では、Rational Application Developerのデバッグ機能をごく簡単に紹介したに過ぎません。このデバッグ機能は、WebSphere PortalとWorkplace Collaboration Servicesのどちらにも使用できます。ここではRational Application Developerを使用しましたが、IBM Rational Software Architectをまったく同じ方法で使用することもできます。また、JSPの内部でのみブレークポイントを設定しましたが、ポートレットやEJB(Enterprise Java Beans)のJavaコード内にもブレークポイントを設定できます。

上に戻る

ダウンロード

説明ファイル名サイズダウンロード方法
この記事に関するサンプルEARファイル measureconverter.zip 42KB HTTP
ダウンロード方法について(US)
Adobe® Reader®が必要

上に戻る

リソース

学ぶ
製品とテクノロジーを手に入れる
フォーラム
上に戻る

筆者について(原文のまま)

Donal Riordon is an IBM Sofware Engineer working on Portal server tools.

上に戻る