読者です 読者をやめる 読者になる 読者になる

argius note

プログラミング関連

開発しています



"EMBEDDED JETTY SERVER"でWicket+Cayenneテスト環境が完結している

Java

先に結論から。
Wicket-QuickStartでソースフォルダー"src/test/java"の下に作られる"Start.java"をEclipseなどからデバッガで実行すれば、軽快なテスト用アプリケーションサーバが起動します。JNDIの設定もjndi.propertiesだけでOK。
さらに、「Cayenne(3.0.2)でUnitTestするときにテスト用のデータソースを設定する」の"BasePageTest.initializeDataSource()"をStart.javaのmainの先頭で呼び出せば、JNDIサーバすら要りません。


前回から、Cayenneの設定をJNDIにしたままテストする方法を調べたり考えたりしていて、かなり遠回りしてしまっていました。
で、ふと「"Start.java"ってのを実行すればいいのでは?」と、ごく当たり前のところに気がつき、調べもせずにさっさと実行してみて、なあんだこれで良かったのではないですか、とちょっと悔しがる。


あとでWicketのQuickStartのページを見たら、

Using your new project

Wicket quickstart projects include a file named Start.java. If you open this file in your IDE (after configuring the project in your IDE), you can run it as a Java application. It will run an embedded Jetty instance that will run your app on http://localhost:8080 Navigate your browser to that address to see your app running.

Apache Wicket - Create a Wicket Quickstart

ってそのままのことが書いてあります。これを読まなかったばかりにどれだけ遠回りしたのか。
これでも最近は、Wicket+Cayenneのことを調べると日本語での(知りたい)情報があまり多くないので、英語のページを読むようにしていたのに。短いのなら見出しだけでもいいから最後まで読むようにします。
さらにマニュアルを読まないという癖もあるので、実は二重の失敗になっているという落ち。


Tomcatは(admin使ったとしても)スタートアップの設定が面倒だし、重い。この方式なら、jndi.propertiesを設定するか、"BasePageTest.initializeDataSource()"を設定するだけで良い。分かっていれば、だけど。
JettyをStart.javaから起動すると、

>>> STARTING EMBEDDED JETTY SERVER, PRESS ANY KEY TO STOP

と表示され、コンソールで何かキー入力すると停止します。軽いです。当然デバッグも普通にできます。



ちなみに遠回りしたのは、Tomcatでやっていたこととほぼ同じことを"mvn jetty:run"で試そうと思ってjetty-env.xmlを設定してweb.xmlにデータソース参照設定を書いて、jetty-plusなどの拡張を設定したり、バージョン8.0.4が安定っぽいので全部そろえてみたらjetty-maven-pluginだけ揃わなかったり、そのせいかorg.eclipse.jettyとorg.mortbay.jettyで混乱して...
一度リセット。JettyってJavaのWebアプリサーバで今注目されてるらしい→ならばこんなに面倒なはずが無い→この方法は却下、となって、冒頭で紹介した方式に決定しました。



遠回りしたけど拾い物もありました。

探しているクラスがどのJarに含まれているか、探しているJarファイルのバージョンは何があるか、を検索できるサイトです。Mavenを使うなら、Mavenリポジトリ検索エンジンだけでも事足りるかもしれません。

遠回りのとき、最初はここを見つけていなかったけれど、結果的にここに書いてあることと同じようにしたはず。改めてここの設定に合わせてやったのに上手く行きませんでした。何故?