[Seasar-user:11914] Re: [Teeda]public transient xxClass xxField;

"TAKEUCHI Shinichi / 竹 "TAKEUCHI Shinichi / 竹
2007年 12月 5日 (水) 13:46:01 JST


お世話になります、竹内です。

  小林 (koichik)様、ひが様、回答ありがとうございます。

  今後はSerializableはデータを引き継いだりSessionへの保存をする
クラスの場合に限定しようと思います。(最初のころはPageクラスが
保存されると思ってしまい、PageクラスをSerializableにしていた)

  どうやら、NotSerializableException は当該Helperのフィールドに
置いた別のオブジェクトの影響で発生したようで、Helperそのものは
Serializableであったようです。

  Entity や DTO に AOP を適用する必要性は確かに薄いと思いますが、
可能性があれば注意が必要かと思いました。
  EntityはDolteng作成の一覧ページなどでのxxxItemsとして使われ、
それをSessionSaveなどの指定をする場合や、受け渡しデータとして
EntityをDTOの代わりに代用する場合にSerializableにしています。

  DXOなどのS2がDIしてくれるInterfaceの場合も、間違って(?)Serializable
をextendsした場合、それをPageクラスのパブリックフィールドにすると
同じ現象になります。(ClassNotFoundException)
例) public interface xxDxo extends Serializable { 
      public void convert(a,b)
    }

On Wed, 05 Dec 2007 04:00:14 +0900
Koichi Kobayashi <[E-MAIL ADDRESS DELETED]> wrote:

> 小林 (koichik) です.
> 
> Date:    Wed, 05 Dec 2007 02:02:19 +0900
> From:    "TAKEUCHI Shinichi / 竹内 伸一" <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:11906] Re: [Teeda]public transient xxClass xxField;
> 
> > 1)PageClass の共通の親クラスに パブリックフィールドがあり
> >      そこにはSerializableなObjectが入る
> 
> [Seasar-user:11011] では「Serializableでない」との
> ことだったので辻褄が合わないと思っていたのですが,
> Serializable だったのですね.それなら納得です.
> 
> > 2)上記のObjectはHelperであり、S2がDIしてくれるもの
> > 3)HelperにはCustomizerが設定されておりS2がEnhanceしている
> >       参考:cutomizer.dicon に(A)の指定あり
> > 4)HotDeployで動作(env.txt が ut)
> > 5)同じ親クラスを継承する別のPageに遷移
> > 
> > メカニズムも考察してみましたが、あっているでしょうか?
> 
> はい.
> 
> > ■対策として想定されること
> >   HelperなどのEnhanceされる可能性のあるものはSerializable不可とするか、
> 
> それがいいと思います.
> 
> >   パブリックはやめてSetterだけを作成する形にする
> 
> Teeda 1.0.12 からは public field でも transient を
> 付けると引き継がないようになります.
> 
> >   EntityやDTOなどもSerializableにしてPageにくっつけた場合に、Customizer
> > やAOPの直接指定でEnhanceされた場合に同じ現象が発生するような気がしますが
> > どんなもんでしょうか?
> 
> Entity や DTO に AOP を適用する必要がないと思います.
> Entity は Serializable にする必要もないと思います.
> 
> 
> -- 
> <component name="koichik">
>     <property name="fullName">"Koichi Kobayashi"</property>
>     <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>     <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 

-- 
TAKEUCHI Shinichi / 竹内 伸一 <[E-MAIL ADDRESS DELETED]>



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