[Wicket-ja-user 589] Wicket1.4 +WebSphere 8.0でsetResponsePage(XXX.class)すると404エラーになる

Back to archive index

telecaster howling howli****@gmail*****
2011年 11月 9日 (水) 01:35:14 JST


今村と申します。
いつも楽しく学習させていただいています。

Wicket 1.4.18を利用していてどうにも解決できない問題があります。
お知恵を貸してください。

現在、複数種類のServletコンテナ(JavaEEコンテナ)で動作する
汎用パッケージソフトの開発を実施しているのですが、
Tomcat 7.0で問題なく動作するアプリケーションが
WebSphere 8.0においては全ての画面遷移に失敗し、404エラーとなってしまいます。

具体的には、画面AからBへ遷移(リダイレクト)する際、
コンテキストルートの直下にサブコンテキストを挟んで遷移させると
Tomcatはサブコンテキストを含んだURL、WebSphereはサブコンテキストを含まないURLになるのです。

・Tomcatのリダイレクト先URL
 http://tomcatserver:8080/context/UISubContext/?wicket:bookmarkablePage=hogera.HogeHoge

・WebSphereのりダイレクト先URL
 http://websphereserver:9080/context/?wicket:bookmarkablePage=hogera.HogeHoge

このため、
コンテキストルート直下に「?wicket:bookmarkablePage=hogera.HogeHoge」のクエリ文字列で
特定できるリソース(?)をWebSphereが見つけられない⇒404エラー!という状態です。
この際、URL直打ちでhttp://websphereserver:9080/context/UISubContext/?wicket:bookmarkablePage=hogera.HogeHogeを指定すると、
遷移したい画面が正しく表示されます。

実装はどうなっているかと申しますと、
WebPageを継承した各画面にて

this.setResponsePage(HogeHoge.class); // HogeHogeはWebPageを継承したクラス

で画面遷移(固定URLへのリダイレクト)を実施しています。

web.xmlは

<filter-mapping>
  <filter-name>(WicketFilterの名前)</filter-name>
  <url-pattern>/UISubContext/*</url-pattern>
</filter-mapping>

とし、/UISubContext/〜 にのみWicketFilterが効くように設定しています。
Wicketの画面と同一war内にWebサービスを含める(/context/WSSubContext/〜をWebサービスのURL空間とする)必要があるため、
コンテキストルート直下全てにWicketFilterを効かすのは難しそうです。

ここでお伺いしたいのですが、

・上記問題を外部仕様(URL空間設計)に影響を与えず回避する手段は無いか?
・サブコンテキスト以下にWicketFilterを指定して問題ないか?
・その他、Wicketと非Wicketのアプリケーションを同一warに含める際の考慮事項
・Tomcatベースで開発したWicketアプリをその他Servlet/JavaEEコンテナで動作させる際の考慮事項

あたりの情報をお持ちでしたらご教示ください。
ささいな情報で結構です。よろしくお願いします。

※WicketをWebSphereで動作させるにあたり、
 https://cwiki.apache.org/WICKET/websphere.html#Websphere-WicketonWebsphere6.1
を参考に
 com.ibm.ws.webcontainer.invokefilterscompatibility値は設定済みです。
 画面A→Bへの遷移時、画面AのWebPage継承クラス内での処理は正しく実行されているので、
 WicketFilter自体は正しく動作しています
※WebSphere設定において、クラスローダの読み込み順序はwar側を先読みするよう設定済みです
 (こちらは全く無関係だとは思いますが・・・)

※動作環境(要件)は下記の通りです
 ・Wicket 1.4.18
 ・Tomcat 7.0
 ・WebSphere Application Server 8.0(Tomcat 7.0で利用したwarのみ内包したearをデプロイしています)




Wicket-ja-user メーリングリストの案内
Back to archive index