WildFly Swarm
というのが、なかなか見つからなかったり・・・
やっと見つけたジェネレータでプロジェクトを作って実行させようとすると
mvn thorntail:run
と入力する様になっていたり、
結果が
Hello from Thorntail!
だったり、
何か変だと思ってたら、Throntailに改名していたらしい。
mvn thorntail:runに-Dswarm.debug.port=8000を付ければリモートデバッグできるらしい。
試しにrunしてみるとjava.exeが2つ起動する。
コマンドラインで、CTRL+Cすると
バッチ ジョブを終了しますか (Y/N)?
が表示されるので、(/ω\)イマイチ感が半端ない
ここに落とし穴があった。
もう1回、mvn thorntail:runすると、いっぱいログが流れて失敗する。
よーく探すと、
ERROR [stderr] (main) Caused by: org.jboss.msc.service.StartException in service org.wildfly.undertow.listener.default: Address already in use: bind /0:0:0:0:0:0:0:0:8080
なんてのが混ざっていて、リソースモニターを見ると、java.exeが1つ残っていた!
CTRL+Cしたら、毎回リソースモニターを開いてjavax.exeを止めるか、taskkill /im java.exe /f しないといけない。(難物
でも、うまくリモートデバッグすれば、Eclipseのデバッグビューから【終了】のボタンを押すと、コマンドラインもちゃんと終了する。【切断】しても【再起動】すれば【終了】のボタンを押すと、コマンドラインもちゃんと終了するので、コマンドラインからCtrl+Cで止める時だけ気を付ければいいようだ。
https:/
9. Developer Tools
と云うのがあって、pom.xmlの<dependencyManagement>の中の<dependency>の最後に
<dependency>
<groupId>io.thorntail</groupId>
<artifactId>thorntail-devtools</artifactId>
</dependency>
を付けて、コマンドラインで
> set THORNTAIL_DEV_MODE=debug
> mvn thorntail:run -Dswarm.debug.port=8000
して、
Listening for transport dt_socket at address: 8000
と出てくるまで待ってから、
Eclipseからデバッグを開始してみる。
すると、デバッグ・ビューにいっぱいプロセスが出てきたら、おもむろに【STOP】。
この沢山あるプロセスの中から、それっぽいプロセスを選択してソースを開いてブレークポイントをセットするのがミソらしい。
そして、【再開】。
でも、どこにでも神様はいるらしい。
pom.xmlの<plugins>の中の<plugin>~</version>の後に
下の赤い文字部分を追加すると、THORNTAIL_DEV_MODE=reload相当の機能が追加されるらしい。
<configuration> <mode>thin</mode> </configuration>
なので、こんなremoteDebug.batを作ってみた。
echo on echo "java.exe 強制終了" taskkill /im java.exe /f taskkill /im java.exe /f taskkill /im java.exe /f taskkill /im java.exe /f taskkill /im java.exe /f pause "☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆" echo "Throntailリモートデバッグ実行(自動リロード付き)" rem set THORNTAIL_DEV_MODE=debug rem set THORNTAIL_DEV_MODE=reload mvn thorntail:run -Dswarm.debug.port=8000 pause "☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"
これで、java.exeの残骸も気にせずに、Ctrl+Cが押せるし、Eclipseでソースを修正して保存して、ブラウザからデバッグページを開けば新しくなる。
リモートデバッグさまさま。
ついでにブレークポイントを使える様になった。
ブレークポイントでうまく止まらない場合は、ヒマしてるスレッドにあててしまっている可能性が高いので、
- デバッグビューの【中断】ボタンを押して実行中のスレッドを止める。
- スレッド(中断中)の左端の「>」を押して停止中のスタックの一番上をクリックし、ソースにブレークポイントを貼りなおして【F8】でGO。
- ブラウザからデバッグするソースんもURLを開いても、ブレークポイントがスカったら、また【中断】し、一つしたのスレッドにトライ。
ソースを修正する度に、テストが面倒なJUnitっぽいテストについては
先のサイトの最新ドキュメントに方法が書いてあるので、
ビジネス・ロジックあたりのデバッグは支障無いようだ。
今回の所感
pom.xmlに
<mode>thin</mode>
を追記すれば解決!(笑顔
でも、こんな書き方では
ドコに入れればいいんだよ?(泣
になってしまった訳で・・・
そんな間の抜けた書き方をするDocumentが
もう少しマシだったら誰も困らないんだろうなぁ・・・
とつくづく思った。