[Seasar-user:19704] Re: [mobylet] mobyletSessionを利用しようとするとエラーが出てしまう
Mikitaro Hachiyanagi
[E-MAIL ADDRESS DELETED]
2010年 5月 7日 (金) 18:58:37 JST
いちむらさん
八柳(mickey8)です。
諸々の情報ありがとうございます。
こちらで調査してみますので少々お待ちください。
よろしくお願い致します。
2010年5月7日18:47 ICHIMURA <[E-MAIL ADDRESS DELETED]>:
> 八柳 様
>
>> 最新のソースでも現象が再現する場合、
>> 可能な範囲で結構ですので
>
> ご提示いただいたjarファイルをダウンロードして試してみましたが
> 例外が発生してしまいました。
> 例外の内容は違うようで、以下のようになっています。
>
>> ・スタックトレースの内容
> ---------------------------------------------------------------------------
> 致命的: サーブレット action のServlet.service()が例外を投げました
> java.io.FileNotFoundException:
> http://localhost:8080/sastruts-demo/mobyletSession
> at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1311)
> at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:2173)
> at java.net.URLConnection.getHeaderFieldInt(URLConnection.java:579)
> at java.net.URLConnection.getContentLength(URLConnection.java:474)
> at org.mobylet.core.session.impl.MobyletMultiSessionAdapter.getObject(MobyletMultiSessionAdapter.java:161)
> at org.mobylet.core.session.impl.MobyletMultiSessionAdapter.get(MobyletMultiSessionAdapter.java:54)
> at org.mobylet.core.util.SessionUtils.get(SessionUtils.java:28)
> at org.apache.jsp.WEB_002dINF.view.mobile.hello.sessionSample_jsp._jspService(sessionSample_jsp.java:76)
> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
> at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:71)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
> at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
> at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
> at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
> at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
> at org.seasar.struts.action.S2RequestProcessor.doForward(S2RequestProcessor.java:306)
> at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
> at org.seasar.struts.action.S2RequestProcessor.process(S2RequestProcessor.java:134)
> at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
> at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.seasar.extension.filter.RequestDumpFilter.doFilter(RequestDumpFilter.java:127)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:71)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.mobylet.core.http.MobyletFilter.processFilter(MobyletFilter.java:121)
> at org.mobylet.core.http.MobyletFilter.doFilter(MobyletFilter.java:74)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
> at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
> at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
> at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
> at org.seasar.struts.filter.RoutingFilter.forward(RoutingFilter.java:219)
> at org.seasar.struts.filter.RoutingFilter.doFilter(RoutingFilter.java:99)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:71)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at com.gmo_sc.sastruts.filter.ExceptionFilter.doFilter(ExceptionFilter.java:28)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.mobylet.core.http.MobyletFilter.processFilter(MobyletFilter.java:121)
> at org.mobylet.core.http.MobyletFilter.doFilter(MobyletFilter.java:74)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> at java.lang.Thread.run(Thread.java:619)
> ---------------------------------------------------------------------------
>
>
>> ・SessionUtils#get/SessionUtils#setをしている箇所のソース
>
> set はアクションで行っていて
> SessionUtils.set("セッションに追加するオブジェクト");
> 実際に上記のように文字列を設定して、
>
> JSPで取得しようとしています。
> <%= SessionUtils.get(String.class) %><br>
>
> ここで上記の例外が発生しているようです。
>
>> ・web.xmlの内容
>> ・mobylet.xml,mobyletSession.xmlの内容(デフォルト以外を使用している場合)
>
> 実際に使っているファイルを添付させて頂きます。
> ご確認頂けますと幸いです。
>
> よろしくお願いします。
>
>
> 2010年5月7日17:11 Mikitaro Hachiyanagi <[E-MAIL ADDRESS DELETED]>:
>> いちむらさん
>>
>> 八柳(mickey8)です。
>>
>> 追加情報ありがとうございます。
>> こちらの想定とは別の原因のようですが、
>> 念のためWEB-INF/lib配下に古いmobyletのjarが
>> 入っていないかを確認いただけますでしょうか?
>>
>> 競合しているjarも存在しない場合、お手数ですがmobylet-coreを
>> 最新の1.0.6-SNAPSHOTに差し替えてご確認ください。
>> # こちらの環境では再現しないため、調査のために最新のソースで確認させてください。
>>
>> http://maven.seasar.org/maven2-snapshot/org/seasar/mobylet/mobylet-core/1.0.6-SNAPSHOT/mobylet-core-1.0.6-20100506.173818-3.jar
>>
>> 最新のソースでも現象が再現する場合、
>> 可能な範囲で結構ですので
>> ・スタックトレースの内容
>> ・SessionUtils#get/SessionUtils#setをしている箇所のソース
>> ・web.xmlの内容
>> ・mobylet.xml,mobyletSession.xmlの内容(デフォルト以外を使用している場合)
>> を教えていただければと思います。
>>
>> よろしくお願い致します。
>>
>>
>>
>> 2010年5月7日13:50 ICHIMURA <[E-MAIL ADDRESS DELETED]>:
>>> 竹内様
>>>
>>> いちむらです。返信ありがとうございます。
>>> 足りていなかった情報を以下に示します。
>>>
>>> mobyletは1.0.5を使用しています。
>>>
>>>>> HotdeployFilterを通ってしまっていてデッドロックされていることが考えられますが、
>>>>> 以下3点教えていただけますでしょうか
>>>>> ・使用されているmobyletのバージョン
>>>>> ・動作環境がHotdeployかどうか
>>>
>>> Hotdeploy を使っていました。
>>>
>>> Cooldeployにしてみたところ別の箇所(SessionUtils#get)で以下のような例外が出てしましました。
>>> ------------------------------------------------------------------------------------------
>>> org.mobylet.core.MobyletRuntimeException: レスポンス情報からセッションオブジェクトを復元時にIO例外発生
>>> org.mobylet.core.session.impl.MobyletMultiSessionAdapter.getObject(MobyletMultiSessionAdapter.java:157)
>>> org.mobylet.core.session.impl.MobyletMultiSessionAdapter.get(MobyletMultiSessionAdapter.java:39)
>>> org.mobylet.core.util.SessionUtils.get(SessionUtils.java:13)
>>> ------------------------------------------------------------------------------------------
>>>
>>>
>>>>> ・web.xmlのfilter、filter-mapping定義の内容
>>>
>>> filter-mapping 定義が自作した例外処理用のfileterより後(2番目)になっていたので
>>> 1番はじめにmobyletFilterを持って行きましたが変わらず固まってしまうようでした。
>>>
>>> よろしくお願いします。
>>>
>>>
>>> 2010年5月7日2:03 Shin Takeuchi <[E-MAIL ADDRESS DELETED]>:
>>>> いちむらさん
>>>>
>>>> 竹内(stakeuchi)です。
>>>>
>>>>>> 上記のようにサンプルで記述してあったものをそのまま使っていたのですが、
>>>>>> distribution 要素がないことで、NullPointerExceptionになっているようだったので
>>>>>> mobyletSession.xmlに空で 「<distribution> </distribution>」を用意してあげたところ
>>>>>> 動くようになりました。
>>>>
>>>> mobyletのバージョンが明記されていないようですが
>>>> 1.0.4をご利用でしょうか?
>>>> 本件、以下のBugの修正によりFIXされていると思いますので
>>>> 1.0.5以上をご利用頂けますと幸いです。
>>>> https://www.seasar.org/issues/browse/MOBYLET-94
>>>>
>>>>
>>>> よろしくお願い致します。
>>>>
>>>>
>>>> 2010年5月6日20:45 Mikitaro Hachiyanagi <[E-MAIL ADDRESS DELETED]>:
>>>>> いちむらさん
>>>>>
>>>>> 八柳(mickey8)です。
>>>>>
>>>>> 返信が遅くなりまして申し訳ございません。
>>>>>
>>>>>> 上記のようにサンプルで記述してあったものをそのまま使っていたのですが、
>>>>>> distribution 要素がないことで、NullPointerExceptionになっているようだったので
>>>>>> mobyletSession.xmlに空で 「<distribution> </distribution>」を用意してあげたところ
>>>>>> 動くようになりました。
>>>>> こちらはSingleSession時に不要な設定は無しで動作するように修正いたします。
>>>>>
>>>>>
>>>>>> MobyletMultiSessionAdapterにした場合に固まってしまう現象の方ですが、
>>>>>> distribution/path にHttpConectしようとしてそのままレスポンスがなく
>>>>>> 固まったようになっているようです。
>>>>>> distribution/path には自分でなにか実装する必要があるのでしょうか?
>>>>> こちらについてですが、distribution/pathは
>>>>> mobyletの内部処理用のpathのため個別で実装する必要はありません。
>>>>>
>>>>> 現象からするとmobyletのセッション管理用の内部リクエストが
>>>>> HotdeployFilterを通ってしまっていてデッドロックされていることが考えられますが、
>>>>> 以下3点教えていただけますでしょうか
>>>>> ・使用されているmobyletのバージョン
>>>>> ・動作環境がHotdeployかどうか
>>>>> ・web.xmlのfilter、filter-mapping定義の内容
>>>>> # mobyletFilterのfilter-mapping定義が先頭に記述されていれば
>>>>> # セッション管理用の内部リクエストはchainしないようになっています
>>>>>
>>>>>
>>>>> よろしくお願いいたします。
>>>>>
>>>>>
>>>>> 2010年4月30日19:00 ICHIMURA <[E-MAIL ADDRESS DELETED]>:
>>>>>> こちらの件、1つ自己解決しました。
>>>>>> 非冗長構成の場合に、NullPointerExceptionとなる原因は、
>>>>>> -------------------------------------------------------
>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>> <mobyletSession>
>>>>>> <key>GUID</key>
>>>>>> <timeout>30</timeout>
>>>>>> <adapter>org.mobylet.core.session.impl.MobyletSingleSessionAdapter</adapter>
>>>>>> </mobyletSession>
>>>>>> -------------------------------------------------------
>>>>>>
>>>>>> 上記のようにサンプルで記述してあったものをそのまま使っていたのですが、
>>>>>> distribution 要素がないことで、NullPointerExceptionになっているようだったので
>>>>>> mobyletSession.xmlに空で 「<distribution> </distribution>」を用意してあげたところ
>>>>>> 動くようになりました。
>>>>>>
>>>>>> MobyletMultiSessionAdapterにした場合に固まってしまう現象の方ですが、
>>>>>> distribution/path にHttpConectしようとしてそのままレスポンスがなく
>>>>>> 固まったようになっているようです。
>>>>>> distribution/path には自分でなにか実装する必要があるのでしょうか?
>>>>>> どこかに説明があるようでしたらそのありかでよいのでご教示いただけないでしょうか。
>>>>>> よろしくお願いします。
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2010年4月30日18:07 ICHIMURA <[E-MAIL ADDRESS DELETED]>:
>>>>>>> お世話になります。いちむらと申します。
>>>>>>>
>>>>>>> こちらを参考に設定をしました。
>>>>>>> http://mobylet.seasar.org/settings/mobyletSessionXml.html
>>>>>>>
>>>>>>> 非冗長構成の場合「MobyletSingleSessionAdapterの設定」を試してみましたが
>>>>>>> SessionUtils#setを呼び出したところで以下のような例外が発生してしまいます。
>>>>>>> -----------------------------------------------------------------------------------------------
>>>>>>> java.lang.NullPointerException
>>>>>>> at org.mobylet.core.session.impl.MobyletMultiSessionManager.isManaged(MobyletMultiSessionManager.java:114)
>>>>>>> at org.mobylet.core.http.MobyletFilter.doFilter(MobyletFilter.java:58)
>>>>>>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>>>>>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>>>>> at com.gmo_sc.sastruts.filter.ExceptionFilter.doFilter(ExceptionFilter.java:28)
>>>>>>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>>>>>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>>>>> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>>>>>> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>>>>>> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>>>>>> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>>>>>> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>>>>>> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>>>>>> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
>>>>>>> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>>>>>>> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>>>>>>> at java.lang.Thread.run(Thread.java:619)
>>>>>>> -----------------------------------------------------------------------------------------------
>>>>>>>
>>>>>>> Tomcatの起動ログで、「mobyletSession.xml が読み込まれました」と出力されており
>>>>>>> ちゃんと読み込まれていることは確認しています。
>>>>>>>
>>>>>>> 上記のエラーではどのような原因が考えられますでしょうか?
>>>>>>>
>>>>>>> ちなみにデフォルト(jarに含まれているもの)の設定だと
>>>>>>> SessionUtils#set で止まってしまい処理が返ってこなくなってしまいます。
>>>>>>>
>>>>>>> ・環境
>>>>>>> seasar2 + SAStruts + S2JDBC
>>>>>>> Tomcat6
>>>>>>> JDK 1.6.0_18
>>>>>>> eclipse, WTP
>>>>>>>
>>>>>>> 少しでも手がかりになる情報を頂けると助かります。
>>>>>>> よろしくお願いします。
>>>>>>>
>>>>>> _______________________________________________
>>>>>> Seasar-user mailing list
>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> ◆---------------------- Lei Hau'oli Co.,Ltd.----------------------◆
>>>>>
>>>>> 八柳 幹太郎(Hachiyanagi Mikitaro)
>>>>> Mail: [E-MAIL ADDRESS DELETED]
>>>>>
>>>>> ▼▼オフィス移転しました▼▼
>>>>> 株式会社Lei Hau'oli
>>>>> 〒135-0064 東京都江東区青海2-7-4 THE SOHO 934
>>>>> Tel: 03-6457-1041 Fax: 03-6457-1042
>>>>> ◆------------------------------------------------------------------------◆
>>>>> _______________________________________________
>>>>> Seasar-user mailing list
>>>>> [E-MAIL ADDRESS DELETED]
>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> ―Lei Hau'oli Co.,Ltd.―――――――――――
>>>>
>>>> 竹内 真(TAKEUCHI SHIN)
>>>> Tel: 080-3300-9888
>>>> Mail: [E-MAIL ADDRESS DELETED]
>>>>
>>>> ▼▼オフィス移転しました▼▼
>>>> 株式会社Lei Hau'oli
>>>> 〒135-0064 東京都江東区青海2丁目7-4 THE SOHO 934
>>>> Tel: 03-6457-1041 Fax:03-6457-1042
>>>> _______________________________________________
>>>> Seasar-user mailing list
>>>> [E-MAIL ADDRESS DELETED]
>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>
>>> _______________________________________________
>>> Seasar-user mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>
>>
>>
>>
>> --
>> ◆---------------------- Lei Hau'oli Co.,Ltd.----------------------◆
>>
>> 八柳 幹太郎(Hachiyanagi Mikitaro)
>> Mail: [E-MAIL ADDRESS DELETED]
>>
>> ▼▼オフィス移転しました▼▼
>> 株式会社Lei Hau'oli
>> 〒135-0064 東京都江東区青海2-7-4 THE SOHO 934
>> Tel: 03-6457-1041 Fax: 03-6457-1042
>> ◆------------------------------------------------------------------------◆
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
--
◆---------------------- Lei Hau'oli Co.,Ltd.----------------------◆
八柳 幹太郎(Hachiyanagi Mikitaro)
Tel: 080-3300-9893
Mail: [E-MAIL ADDRESS DELETED]
▼▼オフィス移転しました▼▼
株式会社Lei Hau'oli
〒135-0064 東京都江東区青海2-7-4 THE SOHO 934
Tel: 03-6457-1041 Fax: 03-6457-1042
◆------------------------------------------------------------------------◆
Seasar-user メーリングリストの案内