CGLib и сериализация - PullRequest
       22

CGLib и сериализация

2 голосов
/ 15 декабря 2010

Что я хочу сделать, это сериализовать класс, который реализует шаблон команды, чтобы я мог запустить его позже. В лучшем из всех миров, я хотел бы сериализовать анонимный класс (я в курсе проблем с этим)

Что немного усложняет то, что я нахожусь в весенней среде и анонимный класс, который я хочу сериализовать, определен в классе, который будет быть прокси 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);
    }
}

E.g. StoreJob будет сериализовать объект и сохранить его для дальнейшего использования. эта часть, которая терпит неудачу. Я не включил код для этого, но это просто вызов ObjectOutputStream

Я знаю, что весь класс TestService должен быть сериализован. Проблема в что он обернут, бросил прокси CGLib и этот прокси не реализует сериализуемый (Я думаю, что это не может быть сериализовано).

Любая помощь высоко ценится.

1 Ответ

0 голосов
/ 16 декабря 2010

Вы должны только сериализовать «цель».Так у вас есть ссылка на прокси верно?Там будет далеко, чтобы получить цель этого прокси, чтобы вы могли сериализовать это.

Что нужно сделать, это установить точку останова приложения непосредственно перед сериализацией и покопаться в этом контексте для требуемого свойства,Или могут быть какие-то утилиты для прокси или что-то в этом роде.

...