私がしたいのは、 がコマンドパターンを実装しているクラスをシリアル化して、後で実行できるようにすることです。すべての世界の最高 で、私は匿名クラスをシリアル化したいと思います(私はこれで問題を認識して よ)CGLibとシリアライゼーション
何それは少し複雑になりますが、私は春のenvironementと 匿名にいるということです私がシリアライズしたいクラスは、 がCGLibによってプロキシされるクラスで定義されています。
私の最初の試み:
public interface CallLater implements Serializeable {
public run();
}
@Service
public class TestService implements Serializeable {
public doSomethingMore() { /* Code */ }
public void doSomething() {
CallLater job = new CallLater() {
private static final long serialVersionUID = 4415017504667122645L;
@Override
public void run() {
doSomethingMore();
}
}
storeJob(job);
}
}
例えばザ・storeJobは、オブジェクトをシリアル化し、後でそれを格納し、それが失敗し この部分ですします。私はこれのコードを含まれていませんが、ちょうど ObjectOutputStreamの呼び出し
私は、TestServiceクラス全体をシリアル化する必要があることを知っています。問題は で、CGLibプロキシが投げられ、このプロキシはシリアル化可能な を実装していません(これはシリアル化できないと思います)。
ご協力いただきまして誠にありがとうございます。
スタックトレースが役に立ちます – skaffman
CGLibプロキシはTestServiceのサブクラスなので、Serializableを実装していますか?おそらく、writeObjectメソッドを実装してシリアル化を防ぐのでしょうか? –
@Christian:私の推測では、 'TestService'はどこかで非直列化可能なものへの参照を持っています。 – skaffman