[Seasar-user:20952] Re: [S2Struts+S2Mai] メール送信完了画面からの画面遷移で例外発生

宮崎俊郎 [E-MAIL ADDRESS DELETED]
2011年 8月 8日 (月) 15:31:16 JST


宮崎です。お世話になります。

ご回答、ありがとうございます。

> 六です。ひとつ質問させてください。
>
>>   ②S2ContainerFactory.create()の中ではs2container.diconを読み込み、
>
> との事なのですが、Maiインタフェース名.dicon  ファイルに、
> s2container.diconをincludeしてませんか?
> もしあれば、恐らくそのincludeは不要かと思いますので
> 削除してもう一度ご確認お願いします。
>

◆確認してみましたが、「Maiインタフェース名.dicon」ファイルには
s2container.diconをincludeしておりませんでした。

※もともとは「Maiインタフェース名.dicon」が無いパターンで動かしていて
例外が発生しておりました。

※S2ContainerFactory.java(ver2.44)のソースコードを見ると、
・S2ContainerFactory.create()では initialized=false の場合、
まずconfigure()を実行する。

initializedは、configure()が実行されると、
リクエスト処理終了時にfalseに設定されるよう実装されているので
今回のケースでは、必ずconfigure()が実行される。

・configure()は以下のように実装されており、
メール送信時にs2container.diconを読み込ませないようにするのは難しいように見えます。

----
public static final String FACTORY_CONFIG_KEY =
"org.seasar.framework.container.factory.config";

public static final String FACTORY_CONFIG_PATH = "s2container.dicon";

public static void configure() {
    final String configFile = System.getProperty(FACTORY_CONFIG_KEY,
          FACTORY_CONFIG_PATH);
    configure(configFile);
}
----

以上、よろしくお願い致します。



2011年8月8日月曜日 六 [E-MAIL ADDRESS DELETED]:
> 六です。ひとつ質問させてください。
>
>>  ②S2ContainerFactory.create()の中ではs2container.diconを読み込み、
>
> との事なのですが、Maiインタフェース名.dicon  ファイルに、
> s2container.diconをincludeしてませんか?
> もしあれば、恐らくそのincludeは不要かと思いますので
> 削除してもう一度ご確認お願いします。
>
>
> 2011年8月4日18:03 宮崎俊郎 <[E-MAIL ADDRESS DELETED]>:
>> お世話になります、宮崎と申します。
>>
>> ◆現在、以下のような現象が発生しております。
>>  解決方法等ご教授頂きたく。
>>
>>  以下、長文になりますが、ご容赦下さい。
>>
>> 【動作環境】
>> ・JDK 1.6.0_23
>> ・apache-tomcat 6.0.32
>> ・s2-framework-2.4.44.jar
>> ・s2-extension-2.4.44.jar
>> ・s2-tiger-2.4.44.jar
>> ・sa-struts-1.0.4-sp8.jar
>> ・s2mai-0.9.6.jar
>>
>> 【現象】
>> tomcatへデプロイしたWebアプリケーション(S2Strutsベース)をHOT deployにて動作させています。その際、
>> ・「メール送信画面」にて『確定』ボタンを押し、サーバへリクエストします。
>>  呼び出されたActionの実行メソッドの中で、S2Maiによるメール送信を行います。
>>  メール送信処理を含め、実行メソッドが正常終了し、「メール送信完了画面」へ遷移します。
>> ・「メール送信完了画面」から、別のAction実行メソッドを呼び出すようなリクエストを発生させます。
>>  すると、以下のような例外が発生します。
>> --
>> 致命的: サーブレット default のServlet.service()が例外を投げました
>> java.lang.NullPointerException
>>        at
org.seasar.struts.util.S2ExecuteConfigUtil.findExecuteConfig(S2ExecuteConfigUtil.java:70)
>>        at
org.seasar.struts.filter.RoutingFilter.doFilter(RoutingFilter.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
xx.xx.xx.xx.xx.filter.DataSourceSwitchFilter.doFilter(DataSourceSwitchFilter.java:74)
>>        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.doHotdeployFilter(HotdeployFilter.java:99)
>>        at
org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:67)
>>        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
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:127)
>>        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:298)
>>        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
>>        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
>>        at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
>>        at java.lang.Thread.run(Thread.java:662)
>> --
>>
>> 【調査結果】
>> ○COOL deployでは例外は発生せず、HOT deployで発生します。
>> ○メール送信コードをコメントアウトすると、例外は発生しません。
>> ○メール送信コードがある場合とない場合で処理を比べると、以下のような違いがあ>
_______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20110808/729a00ba/attachment.html>


Seasar-user メーリングリストの案内