Wicket Guice GlassFish の
12
この遅さ
Spring Boot が
Wicket Guice Dropwizard の
1. 作成した コード
作成した
2. 参考
dropwizard-wicket
Dropwizard とWicket を 連携している Example コードです。
このExample を Folk して 作成しました。 Wicket + Guice including unittests
Wicket とGuice を 連携している Example が 記載されています。 gradleで
Dropwizard
Dropwizard のpom.xml を gradle に 書き換える 際に 参考に させてもらいました。 Wicketの
quickstartプロジェクト(Maven)を Gradleに 移行する
Wicket のpom.xml を gradle に 書き換える 際に 参考に させてもらいました。
3. QuickStart
とりあえず、
4. dropwizard-wicket の Folk 後に 実施した こと
Example コードを
4.1. build.gradle の 設定、 編集
Maven プロジェクトを Gradle プロジェクトに 変換
Folk 元の
Maven プロジェクト Gradle プロジェクト の
gradle init --type pom
build.gradle の dependencies の 変更
Dropwizard Version を0.8.4
に、7.1.0
に
- dependencies の
抜粋 dependencies { compile group: 'io.dropwizard', name: 'dropwizard-core', version:'0.8.4' compile group: 'org.apache.wicket', name: 'wicket-core', version:'7.1.0' compile group: 'com.google.inject', name: 'guice', version:'4.0' compile group: 'com.google.inject.extensions', name: 'guice-servlet', version:'4.0' compile group: 'org.apache.wicket', name: 'wicket-guice', version:'7.1.0' }
plugin 記述に shadow
を 追加して、shadowjar
タスクを 使用可能に する。
Gradle で
plugin の
記述 plugins { id 'java' // or 'groovy' Must be explicitly applied id 'com.github.johnrengelman.shadow' version '1.2.2' }
shadowJar タスクの
記述 shadowJar { // jar作成後がコマンド再実行でjarを再生成するため、記述を追加 tasks.clean.execute() mergeServiceFiles() exclude 'META-INF/*.DSA' exclude 'META-INF/*.RSA' }
4.2. プログラムの 変更点に ついて
プログラムの
WicketBundle の 記述を 変更
Folk 元の
- FilterHolder に
設定する Filter クラスを GuiceFilter に 変更。 - context に
GuiceServletConfig の 設定する 処理を 追加。 - SessionHandler の
設定処理を 追加。
SessionHandler は
- エラー内容
java.lang.IllegalStateException: No SessionManager ! at org.eclipse.jetty.server.Request.getSession(Request.java:1402)
SampleApplication の 追加
Dropwizard はio.dropwizard.Application
の
実際動作するSampleApplication.java
を
5. 作ったあとの 感想
以下、
WicketFilter と、
GuiceFilter の 共存する ことが あまり 直感的でない。
GuiceFilter 経由で、WicketFilter の 設定 と Injector の 取得を しています。
実装がそれなりに 面倒で、 直感的に もわかりにくい気が しました。 改善案
Folk 元だと、WicketBundle に Wicket の Application クラスを 設定して、 インスタンス生成する 作りになっていました。
このインスタンス生成を Injector 経由での 生成に すると、 GuiceFilter 使わなくても、 やりたいことは 実現できそうな 気が します。
これは、思っただけで 実現していません。
6. 後日談
後日、
以下に
wicket guicecomponentinjectorは
実施ていた
当時は そのように 感じました。 ↩ そして、
GlassFish 5.0 が リリースされています。 ↩ 深い理由は
わからなかったですが、 “No SessionManager” - Google グループ を 参考に 追加しました。 ↩
コメント