ResourceSynchronizer 0.0.3 リリース
Ext.jsのコンポーネント群が余りに素晴しいので、
自分でも使ってみたくなって作り込んでみましてん。
去年辺り、どこかで、エラー画面は贅沢な方がイイヨネ。
とかそんな話があったのを思い出して、無駄にリッチなエラー画面を作り込んで見ました。
ちなみに、以下の Update サイトからインストールすることができます.
http://eclipse.seasar.org/updates/3.3/
現在のリリースでは、以下の実行環境でのみ、適切に動作します.
です。
今回追加した機能は、エラー画面を出力するJSPを新規作成するウィザードです。
エラー画面は、
- IE6 sp2
- Firefox 2.0.0.12
で動作確認しました。
ファイルの新規作成ウィザードで、
ResourceSynchronizerグループにある「Debug JSP」を選択してウィザードを開始して下さい。
ウィザードでは、以下の項目を設定して下さい。
Browseボタンをクリックすると、ディレクトリを選択する為のダイアログが起動します。
「Context Root dir」を選択すると、自動的に「Output dir」が設定されます。
デフォルトでは、「Context Root dir」のサブディレクトリとして「error」と言うディレクトリが設定されます。
二つの項目を設定したら、「Finish」ボタンを押します。
そうすると、リソースの生成処理が開始されます。
次に、エラー画面を出力する為のJSPを作成します。
ここでは、サンプルとして「bugbug.jsp」を作成しました。
「bugbug.jsp」の内容は以下の様になっています。
このコードでは、6行目でNullPointerExceptionが発生する筈です。
<%@ page contentType="text/html; charset=UTF-8" errorPage="/error/debug.jsp" %> <html> <body> <% java.util.Hashtable map = new java.util.Hashtable(); out.println(map.put(null,null)); %> </body></html>
WTPやSysdeoTomcatPluginを使う等して、
当該JSPを含むプロジェクトをサーブレットコンテナにデプロイした上で、
eclipseのInternalWebBrowserを使用し当該JSPにアクセスします。
InternalWebBrowserは、特別なツールを使っていない限り、
Window > Show View > Other... > General > InternalWebBrowser
で開く事が出来ます。
このエラー画面では、以下の情報をブラウザだけで確認する事が出来ます。
- StackTrace
- 発生した例外を、Grid表示します。
- HTTP
- Request Parameters
- Http Headers
- エラー画面を表示する元となったHTTPリクエストのHTTPヘッダの一覧
- Cookie
- 当該ホストとやりとりされているHTTPクッキーの一覧
- Java
- Request Attributes
- エラー画面を表示する元となったHTTPリクエストのHttpServletRequest#getAttributeで取得出来る値の一覧
- Session Attributes
- エラー画面を表示する元となったHTTPリクエストに紐付くHttpSession#getAttributeで取得出来る値の一覧
- Application Attributes
StackTraceはデフォルトで表示されていますが、それ以外の項目は、
左側のMenuにあるツリーをクリックする事でStackTraceのタブの右側に新しいタブとして表示されます。
又、StackTrace以外の表示項目はGridの上部にあるテキストフィールドに文字を入力する事で、
Grid内のキーを部分一致でフィルタリングする事が出来ます。
表示されているタブのコンテキストメニューとして、2つの機能があります。
- Close Tab
- コンテキストメニューを表示する際にクリックしたタブを閉じます。
- Close Other Tabs
- コンテキストメニューを表示する際にクリックしたタブ及びStackTraceのタブを除く全てのタブを閉じます。
StackTraceに表示されたGridの行をダブルクリックするか、
行の左端にあるアイコンをクリックすると、
エラー画面とResourceSynchronizerがHTTP通信を行う為
以下の様なローディングメッセージが表示されます。
ここでResourceSynchronizerは、ダブルクリックされた行をエディタで開こうとします。
ソースコードが存在しない場合等、
ResourceSynchronizerが、ソースコードを発見出来なかった場合、特に何も起きません。
この場合、java.util.Hashtableのコードが存在する為、
NullPointerExceptionが発生した394行目がJavaエディタで開きました。
更に、エラー画面には、StackTraceの中で、ダブルクリックされた行のソースコードがシンタックスハイライトされた状態で表示されます。
デフォルトでは、トレースで表示されている行番号の前後10行が出力されます。
これらの振る舞いは、エラー画面左側下段にある「Settings」をクリックして、
その内容を表示した上でカスタマイズする事が出来ます。
- CodeLineSize
- 前後何行のコードをエラー画面内に表示するか設定出来ます。
つまり、基本的には、設定された値のおよそ2倍の行がStackTraceの行に表示される事になります。
- 前後何行のコードをエラー画面内に表示するか設定出来ます。
- OpneInEclipse