加納充照
michi****@gmail*****
2008年 12月 11日 (木) 22:14:16 JST
いつもお世話になっております。 加納と申します。 WebSphereApplicationServer6.1.21(JDK1.5)上でWicketFileterを用いたときに、 HTTPエラーコードの404(File Not Found)が返却される現象で悩んでおります。 以下長文になり申し訳ありませんが、何かご存知の方おられましたら、 ご教示のほどよろしくお願いいたします。 [事象] Webアプリケーション起動後、リクエストURL「http://localhost:9080/Webアプリケーション名/」 を要求するとHTTPエラーコードの404が返却される [前提条件] 1. WebSphereApplicationServer6.1(以降WASで略します)でサーブレットフィルタの処理に問題があるため、 以下のパッチとプロパティの設定を行う。 (1) WAS6.1 Fix Pack 21を適用 (2) WASの管理コンソールよりWebコンテナのプロパティcom.ibm.ws.webcontainer.invokefilterscompatibility をtrueにセット 2.web.xmlの設定 <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Wicket Examples</display-name> <!-- Filter版 --> <filter> <filter-name>Example</filter-name> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>jp.xxx.gij.example.wicket.ExampleWebApplication</param-value> </init-param> </filter> <filter-mapping> <filter-name>Example</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <welcome-file-list> <welcome-file>wicket?bookmarkablePage=index</welcome-file> </welcome-file-list> </web-app> 3. Webアプリケーションクラス (2) Webアプリケーションクラス mountBookmarkablePage()を使ってホームページクラスをURLパターンにマッピング public class ExampleWebApplication extends WebApplication { public Class getHomePage() { return Index.class; } } [現時点で判明していること] 1. tomcat5.0.28上では問題なくWebPage.getHomePage()で正常にページ遷移されている 2. web.xml及びExampleWebApplicationを以下のように修正すると、WebPage.getHomePage()による 初期ページまでは正常に表示されるが、その後、初期ページからsetResponcePage(Webページクラス)で ページ遷移した際に、HTTPエラーコードの404が返却される 3. setResponcePage(Webページクラス)の場合はHTTPエラーコード404が返却されるが、 setResponcePage(Webページインスタンス)やPageLinke(ページクラス)の場合は、正常にページ遷移される 4. WicketServletを使用した場合は、問題なく処理されている(ように見受けられる) [現時点での修正内容] 1. web.xml 「/wicket/*」を受け付けるfilter-mappingを使用する <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Wicket Examples</display-name> <!-- Filter版 --> <filter> <filter-name>Example</filter-name> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>jp.xxx.gij.example.wicket.ExampleWebApplication</param-value> </init-param> </filter> <filter-mapping> <filter-name>Example</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <filter-mapping> <filter-name>Example</filter-name> <url-pattern>/wicket/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <welcome-file-list> <welcome-file>wicket?bookmarkablePage=index</welcome-file> </welcome-file-list> </web-app> 2. Webアプリケーションクラス mountBookmarkablePage()を使ってホームページクラスをURLパターンにマッピング public class ExampleWebApplication extends WebApplication { public void init() { super.init(); mountBookmarkablePage("/wicket", getHomePage()); // mount(new HybridUrlCodingStrategy("wicket", getHomePage())); } public Class getHomePage() { return Index.class; } } 内容に一部不適切なところがあるかもしれませんがご了承ください。 お手数をおかけしますがよろしくお願いいたします。 _______________________________________________ Wicket-ja-user mailing list Wicke****@lists***** http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user -------------- next part -------------- HTMLの添付ファイルを保管しました... Télécharger