arcanum_jp’s blog

おっさんの日記

Vaadin勉強その3:productionMode

 昨日、vaadinのweb.xmlを見ていて気になったんだけど、>context-param<タグのなかにproductionModeってのがあって、もしやと思って調べてみた。


web.xmlの内容

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
	<display-name>Vaadin Test</display-name>
	<description> Vaadin TestApplication </description>

	<context-param>
		<param-name>productionMode</param-name>
		<param-value>false</param-value>
		<description>Vaadin production mode</description>
	</context-param>


	・・・以下省略

11.4.1. Debug Mode

 サイトからダウンロードする圧縮ファイルの中についてくる「book-of-vaadin.pdf」の11.4.1によると、開発者のためのデバッグ用ツールがあるらしい。それがこの、<context-param>タグで設定できる。falseにしておけば使える。(デフォルトはfalseになるらしい)デバッグ用ツールは、URLにクエリ文字列で"?debug"を付けてやると表示される。昨日作ったサンプルアプリはhttp://127.0.0.1:8080/vaadintest1で確認できるので、"?debug"を付けて、http://127.0.0.1:8080/vaadintest1?debugとなる。


 まず、<context-param>タグが無いバージョンで確認。<context-param>タグをごっそりとweb.xmlから削除して確認。再起動して、画面を確認。

おお、なんかWicketデバッグライクな画面が!デフォルトはproductionMode=falseとして扱われるらしい。


 次に、productionMode=falseにして確認。




予想通り表示されました。


 最期に、productionMode=trueとして確認。



表示されなくなった。


 ちなみに、Eclipseの標準出力には、Wicketのように、どんなモードで起動したか出力されます。以下は、デバッグモードの場合。

=================================================================
Vaadin is running in DEBUG MODE.
Add productionMode=true to web.xml to disable debug features.
To show debug window, add ?debug to your application URL.
=================================================================
デバッグツールでできること。
  • [Clear console]ボタン
    • デバッグツールのコンソールをクリアする。
  • [Restart app]ボタン
    • アプリケーションを再起動する。
  • [Force layout]ボタン
    • 画面のレイアウトを再描画するらしい。FirebugなんかでCSSを動的に変更していたりするときに、このボタンで再描画するのかな?
  • [Analyze layout]ボタン
    • 画面のレイアウトを分析して表示してくれる。(下図参照)



レイアウト分析の図

その他

 com.vaadin.terminal.gwt.client.ApplicationConnectionクラスを使うと、このデバッグツールの標準出力にログのように出力できるらしい。(FireBugを使っている場合はそちらにも出力されるらしい)当然productionMode=trueのときは無視されるとのこと。

	ApplicationConnection.getConsole().error("エラーだよ");
	ApplicationConnection.getConsole().log("ログだよ");


 その他、上記でも取り扱われていたように、FirefoxFirebugプラグインが入っていると、至れり尽くせりになるらしい。僕はFirefoxユーザーじゃないので残念なんですが・・・