[Seasar-user:19296] Re: セッションのDIについて
Hidemasa Aoki
[E-MAIL ADDRESS DELETED]
2010年 2月 12日 (金) 16:08:28 JST
多くの人が不具合と思いそうなことを不具合と認められないなら、進歩はないと思い
ました。
「不具合」の解釈が人によって違うせいかもしれませんが、一般的には「具合の悪い
ものすべて」を不具合と呼ぶと思います。
詳しい現象を記述していなかったので、記述させていただきます。
もしかしたら、認識違いがあるかもしれないからです。
現象は以下のとおりです。
バージョンは、2.4.39です。
―――――――――――――――――――――――――――――――
ログイン情報を、下記のようなクラスに保存しています。
@Component(instance=InstanceType.SESSION)
public class OperatorDto implements Serializable {
〜以下、省略〜
―――――――――――――――――――――――――――――――
ログイン処理の中で、ログイン情報を設定しています。
private boolean certifyOK(Operator operator) {
assert (operator != null);
〜省略〜
// ログイン情報をセッションに保存
super.getOperatorDto().setName(operator.getName());
super.getOperatorDto().setAuthority(operator.getAuthority());
〜省略〜
}
―――――――――――――――――――――――――――――――
ログインインタセプターの中で、ログイン情報を取得しています。
この処理で、HOTのときは、operatorNameにログイン時に設定した値が返却されるの
に、COOLのときは、nullが返却されます。
public class LoginInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = -803577202478748124L;
private OperatorDto operatorDto;
@Override
public Object invoke(MethodInvocation arg0) throws Throwable {
this.operatorDto = (OperatorDto) SingletonS2ContainerFactory
.getContainer().getComponent(OperatorDto.class);
String operatorName = this.operatorDto.getName();
if (operatorName == null || operatorName.length() == 0)
return LoginPage.class;
else
return arg0.proceed();
}
public OperatorDto getOperatorDto() {
return operatorDto;
}
public void setOperatorDto(OperatorDto operatorDto) {
this.operatorDto = operatorDto;
}
}
―――――――――――――――――――――――――――――――
担当者が言うには、「ひがさんが紹介していた方法で実装していたのに・・・」と愚
痴っていました。
その担当者が行方不明になったので、どのページを参照したのかわからないままに
なってしまいましたが・・・。
-----Original Message-----
From: [E-MAIL ADDRESS DELETED]
[mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of YASUO HIGA
Sent: Thursday, February 11, 2010 11:26 AM
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:19287] Re: セッションのDIについて
ひがです。
> いくら、オープンソースの開発者だからといって、よりよいものを作る意識がない
な
ら、やめてしまったほうがよいと思います。
>
「よりよいものを作る意識がない」というのはどこから判断しました?
たぶん、それは判断ミスです。
なぜなら、良いものを作る意識がなく、オープンソースの開発を7年間も
続けられるはずがなく、また、「よりよいものを作る意識がない」プロダクトを
たくさんのユーザーが使うはずがないからです。
COOLとHOTで動作が違うのはSeasar2側の問題です。
これに対しては、既に対策がとられていて、
例えば、Interceptorの件なら、リンク先にあるような設定をすれば
動きますよという回答があったかと思います。
セッションに関しても文面では具体的に現象を書いていなかったので
動作しないだけでは、どのような問題なのか良くわかりませんが
> セッションをDIしてもらう形式にしたとき、ホットディプロイのときは動作する
が、
> クールディプロイのときは動作しない、という現象があります。
>
セッションからgetAttribute()したときにClassCastExceptionが起きるという
問題なら既に最新版では修正済みです。
Seasar2は、まだまだ至らない点が残っていると思いますが、
気づいている点に関しては改善するために手をうってますし、
より良くするために常に改善を続けていくつもりなので、
今後ともよろしくお願いします。
_______________________________________________
Seasar-user mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内