[Seasar-user:11011] [Teeda]public transient xxClass xxField;
"TAKEUCHI Shinichi / 竹
"TAKEUCHI Shinichi / 竹
2007年 10月 16日 (火) 01:05:03 JST
お世話になります、竹内と申します。
S2 2.4.17
Teeda 1.0.11
にて開発しております。パブリックフィールド対応となり、コードが
すっきりしていいのですが、Serializableでないコンポーネントを
パブリックフィールドに置いた場合の仕様で質問があります。
HotDeployで実行しているのですが、単にpublic宣言だけですと、
ページを遷移する時にNotSerializableExceptionが発生します。そこで、
transient指定を追加すると、ClassNotFoundExceptionが発生し、探して
いるクラスがどうもDI/AOPされた拡張後のクラスのようです。
そこで、フィールドをprivate transient にして、setterでのInjection
にすると、キチンと動作します。
というわけで、以下の質問なんですが、よろしくお願いします。
1)public transient はサポートされないのか?
できれば、Deserializeで自動Injectがいい
2)private transient の場合、S2コンテナがDeserializeの時点で
自動Injectし、独自の回復処理は不要(実際に使えていますが確認のため)
エラーとなる例1)
public KSelectItemHelper kSelectItemHelper;
エラーとなる例2)
public transient KSelectItemHelper kSelectItemHelper;
動作する例)
private transient KSelectItemHelper kSelectItemHelper;
public void setKSelectItemHelper(KSelectItemHelper ikSelectItemHelper){
this.kSelectItemHelper = ikSelectItemHelper;
}
Caused by: java.lang.ClassNotFoundException: net.korabo.dreambox.helper.KSelectItemHelper$$EnhancedByS2AOP$$1d92803
at java.lang.ClassLoader.findClass(ClassLoader.java:358)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
--
TAKEUCHI Shinichi / 竹内 伸一 <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内