2013-12-02 2 views
1

Вот код вызова:InvalidClassException ошибка при десериализации данных сеанса

Object attribute = session.getAttribute(name, scope); 

и это бросает следующий EROR:

Could not deserialize session data. 
java.io.InvalidClassException: org.apache.commons.lang.time.FastDateFormat; local class incompatible: stream classdesc serialVersionUID = 1, local class serialVersionUID = -7186497712641044641 

Среда Weblogic. Веб-приложение является весенним портлетом. Я пытаюсь понять, как исправить эту проблему.

+0

Проверьте, есть ли две версии FastDateFormat с различным serialVersionUID. Удостоверьтесь в сериализации и десериализации, используя тот же serialVersionUID. – Loc

+0

@Loc наивный вопрос. Я думаю, что я не понял этого. Я знаю, что его отказ при десериализации (загрузка данных сеанса в приложение?). Таким образом, он не может передать одно из значений сеанса в FastDateFormat? Итак, в этой ситуации, о которой вы говорите по двум классам FastDateFormat? – user6123723

+1

У вас есть 2 версии jar на пути к классам или используйте 2 разных версии при сериализации и десериализации? – tjg184

ответ

3

Чтобы добавить это исправление, добавьте общедоступный раздел в раздел «Предпочтительные пакеты приложений» в weblogic.xml.

<container-descriptor> 
    <prefer-application-packages> 
     <package-name>org.apache.commons.lang.*</package-name> 
    </prefer-application-packages> 
    <optimistic-serialization>true</optimistic-serialization> 
    <show-archived-real-path-enabled>true</show-archived-real-path-enabled> 
</container-descriptor> 
Смежные вопросы