[Seasar-user:17987] Re: [SAStruts] IntegerceptorのHttpServletRequestの取得
原 宏和
[E-MAIL ADDRESS DELETED]
2009年 7月 13日 (月) 20:19:26 JST
原です。
> > Interceptorを実装してHttpServletRequestの内容からDBにログを取得したり
> > 例外発生時にInterceptorしてHttpServletRequest内容と例外内容をメール
> > 送信したりしようとしているのですが、HttpServletRequestがNULLに
> > なってしまってうまくいきません。
> > MLの過去ログやネットでいろいろ見たんですが、うまくいきませんでした。
>
> どううまくいかなかったのでしょうか?
HttpServletRequestがNULLになるということです。
今またいろいろ変えてデバッグしていると、このInterceptorを2度通っているみたいで
一度目はNULLで2度目は値が入っていました。
@Aspect("myThrowableInterceptor")
public class IndexAction extends BaseForm {
@Resource protected HttpServletRequest request;
@Resource protected ServletContext context;
@Resource protected TNumService tNumService;
@Resource protected TLogService tlogService;
@Execute(validator = false)
@Aspect("loggerInterceptor")
public String index() throws Exception {
//ここに処理を記述
int i=Integer.valueOf("S");
return "index.jsp";
}
public class MyThrowableInterceptor extends ThrowsInterceptor {
/** シリアルバージョン. */
private static final long serialVersionUID = 5306143265122341227L;
@Resource private HttpServletRequest request;
public final Object handleThrowable(final Exception e, final MethodInvocation invocation) throws Throwable {
//HttpServletRequest request = getRequestFromContainer();
if (request == null) {
e.printStackTrace();
} else {
Utils.procException(request, e);
return "/error.jsp";
}
return invocation.proceed();
}
> > ネットは↓のページを見ました
> > http://www.seasar.org/wiki/index.php?FAQ%2FS2AOP#q69751d4
> >
> > で、結局過去のMLに載っていた方法でうまくいきましたが、
> > 実際どのように実装するのが理想なのでしょうか?
>
> 「理想」というのはないと思いますが,Seasar2.4 では
> FAQ の最後に書いてある方法が使われることが多いと
> 思います.
customizerには以下のように記述しました。
<components>
<include path="default-customizer.dicon"/>
<component name="formCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain"/>
<component name="actionCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
<initMethod name="addCustomizer">
<arg>
<component class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="useLookupAdapter">true</property>
<property name="interceptorName">"myThrowableInterceptor"</property>
</component>
</arg>
</initMethod>
--
原 宏和 <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内