2009年5月13日水曜日

NetBeansでGrailsプロジェクト

http://rem1.sourceforge.net/jp/index.html のページでチュートリアルを選択して、
Guide to zkgrails(ZK plugin for Grails)に入ります。
ここの解説はコマンド行で実施するチュートリアルですが、NetBeansに置き換えて説明します。

まず最初にGrails1.1を入手して、Windowsにインストールします。
次に ツール > オプション > その他 > Grooby で 
Grails のホーム に先にインストールしたGrails1.1のインストール先を指定します。

$ grails create-app ondemand   の所は
新規プロジェクト> Groovy > Grails アプリケーション
次へ > プロジェクト名 に"ondemand" と入力 > 完了
の手順でGrailsプロジェクトを作成します。

するとNetBeans出力の(create0app)欄には次の表示が出ます。
Welcome to Grails 1.1 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: C:\grails-1.1

Base Directory: C:\ANetBeans6.7\grails
Running script C:\grails-1.1\scripts\CreateApp_.groovy
Environment set to development
Setting non-interactive mode
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\src
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\src\java
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\src\groovy
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\grails-app
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\grails-app\controllers
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\grails-app\services
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\grails-app\domain
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\grails-app\taglib
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\grails-app\utils
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\grails-app\views
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\grails-app\views\layouts
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\grails-app\i18n
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\grails-app\conf
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\test
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\test\unit
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\test\integration
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\scripts
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\web-app
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\web-app\js
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\web-app\css
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\web-app\images
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\web-app\META-INF
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\lib
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\grails-app\conf\spring
[mkdir] Created dir: C:\ANetBeans6.7\grails\ondemand\grails-app\conf\hibernate
[propertyfile] Creating new property file: C:\ANetBeans6.7\grails\ondemand\application.properties
[copy] Copying 1 resource to C:\ANetBeans6.7\grails\ondemand
[unjar] Expanding: C:\ANetBeans6.7\grails\ondemand\grails-shared-files.jar into C:\ANetBeans6.7\grails\ondemand
[delete] Deleting: C:\ANetBeans6.7\grails\ondemand\grails-shared-files.jar
[copy] Copying 1 resource to C:\ANetBeans6.7\grails\ondemand
[unjar] Expanding: C:\ANetBeans6.7\grails\ondemand\grails-app-files.jar into C:\ANetBeans6.7\grails\ondemand
[delete] Deleting: C:\ANetBeans6.7\grails\ondemand\grails-app-files.jar
[move] Moving 1 file to C:\ANetBeans6.7\grails\ondemand
[move] Moving 1 file to C:\ANetBeans6.7\grails\ondemand
[move] Moving 1 file to C:\ANetBeans6.7\grails\ondemand
Installing plug-in hibernate-1.1
[mkdir] Created dir: C:\Documents and Settings\stera\.grails\1.1\projects\ondemand\plugins\hibernate-1.1
[unzip] Expanding: C:\Documents and Settings\stera\.grails\1.1\plugins\grails-hibernate-1.1.zip into C:\Documents and Settings\stera\.grails\1.1\projects\ondemand\plugins\hibernate-1.1
Executing hibernate-1.1 plugin post-install script ...
Plugin hibernate-1.1 installed
Created Grails Application at C:\ANetBeans6.7\grails/ondemand

ターゲットになっているのは次のコマンド行を実行するところです。
$ grails install-plugin zk
プロジェクトを選択 > 右クリック > Grails コマンドを実行
で現在のプロジェクトで実行できるコマンドスクリプトの一覧が出ますので、
このWindowでinstall-pluginを選択して、パラメータにzkと入力して実行します。
するとNetBeans出力のondemand(install-plugin)欄には次の表示が出ます。
Welcome to Grails 1.1 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: C:\grails-1.1

Base Directory: C:\ANetBeans6.7\grails\ondemand
Running script C:\grails-1.1\scripts\InstallPlugin.groovy
Environment set to development
Reading remote plugin list ...
Reading remote plugin list ...
Plugin list out-of-date, retrieving..
[delete] Deleting: C:\Documents and Settings\stera\.grails\1.1\plugins-list-default.xml
[get] Getting: http://plugins.grails.org/.plugin-meta/plugins-list.xml
[get] To: C:\Documents and Settings\stera\.grails\1.1\plugins-list-default.xml
..........
[get] last modified = Tue May 12 23:14:10 JST 2009
[get] Getting: http://plugins.grails.org/grails-zk/tags/RELEASE_0_7_1/grails-zk-0.7.1.zip
[get] To: C:\Documents and Settings\stera\.grails\1.1\plugins\grails-zk-0.7.1.zip
..................................................................................................................................................................
[get] last modified = Sun Mar 22 07:57:14 JST 2009
[copy] Copying 1 file to C:\Documents and Settings\stera\.grails\1.1\projects\ondemand\plugins
Installing plug-in zk-0.7.1
[mkdir] Created dir: C:\Documents and Settings\stera\.grails\1.1\projects\ondemand\plugins\zk-0.7.1
[unzip] Expanding: C:\Documents and Settings\stera\.grails\1.1\plugins\grails-zk-0.7.1.zip into C:\Documents and Settings\stera\.grails\1.1\projects\ondemand\plugins\zk-0.7.1
Executing zk-0.7.1 plugin post-install script ...
[copy] Copying 1 file to C:\ANetBeans6.7\grails\ondemand\web-app\WEB-INF
Plugin zk-0.7.1 installed
Plug-in provides the following new scripts:
------------------------------------------
grails create-composer
grails create-zul

ここで最後の2行に見えるものがプロジェクトに追加されたコマンドスクリプトで、
先ほどの
プロジェクトを選択 > 右クリック > Grails コマンドを実行
で現在のプロジェクトで実行できるコマンドスクリプトの一覧が更新して出るはずですが、元のままです。
ここでプロジェクトを閉じて、もう一度オープンしても元のままです。
といいたい所ですが、我が家ではちゃんとリフレッシュされて、
create-composer も create-zul も見えました。

我社内でやっていた時は、NetBeansの再立ち上げで初めて、追加されて見えたのに、
動作が違う・・・・・?
我が家のパソコンの方が早いので旨く行くのかな?

2009年5月5日火曜日

Java VisualVM と TASKKILLを使ってJettyを停止する。

我々NetBeans愛好家にとって、アプリケーションサーバーはGlassFishですが、アプリケーションによってはJettyを使用しているものが多い。
最近話題のGrailsやGoogleApplicationEngineもその例であり、Red5も使用しています。
IDEとしてNetBeansを使用して、GrailsやGoogleApplicationEngine応用の開発を試みたときにJettyに関わる困難に遭遇します。
それはNetBeans上において、JettyはGlassFishやTomcatと違って思うような操作が出来ないことです。
Jettyのステータスが確認できないことも困りますが、特に困ることはJettyが起動したままで、停止できないことです。
一度アプリケーションを試した後に、次のバリエーションを確認しようとすると「既にJettyが起動中でポートを占有しているのでこれ以上進展できません」というメッセージが出ることが度々あります。
こんなときはパソコンをリブートすれば解決するのですが、こんなことをイチイチやっていては時間がどれだけ有っても足りませんし、テンポが悪くて能率が悪くなってしまいます。
こんな時に役に立つのがタイトルに有った「Java VisualVM と TASKKILLを使ってJettyを停止する。」というアイデアでした。ふとJava VisualVMの利用を思いつき、起動中のJettyのプロセス番号を知ることが出来ることが確認できました。











このようにGAEでサンプルを起動したときに、Java VisualVMでそのときのプロセスを確認できます。
サンプルをDOSで起動したときにおいても、コントロール/CでバッチをストップできますがJettyのプロセスが残ることが多いのです。

そこで探したのがWindows上でもプロセス番号を使用してプロセスを停止するコマンドがないか探しましたら、ありました。"TASKKILL"です。
使用法:
   Tasklistで検索したプロセスID1230を終了する
   taskkill /pid 1230
そうしてやってみましたら、我社内の環境では旨くいったのに我が家ではダメでした。何故か?
これは我が家のパソコンはWindows HOME Editionでした。そこで探したのがこれ。
http://www.vector.co.jp/soft/winnt/util/se401845.html
ところが、これだけでは起動できません。
このアプリケーションはMicrosoft .NET Framework Version 2.0に依存していました。
これで万全と思いきや、このフリーウエアは不完全でした。killできないものがありました。
com.google.appengine.tools.development.DevAppServerMain
のプロセスがkillできないのです。
Windows Professionalからコピーしてくるのが最良であることが分かりました。
これで旨く行きました。