У меня есть большое веб-приложение, которое использует полиморфную сериализацию Джексона.
Все работало нормально, до моего последнего выпуска.
У меня есть абстрактный класс, где я определяю тип и подтипы.
У меня есть класс, который расширяет абстрактный класс.
Теперь проблема. Все работало нормально на локальном (windows) и серверном (redhat) jboss. Я сделал некоторые изменения в коде, в службах, не связанных с json, и после этого в локальной (windows) jboss работает нормально, но на redhat у меня есть эта ошибка:
org.codehaus.jackson.map.JsonMappingException: Невозможно создать экземпляр orange.catv.ejb.shared.livehp.model.editorialserviceplan.LogicalChannelNumber, проблема: экземпляры абстрактных типов могут создаваться только с дополнительной информацией о типе в [Source: org.apache.catalina.connector.CoyoteInputStream@378e6be2; строка: 1, столбец: 1]
Странно, что на моем локальном сервере это работает. Кто-нибудь сталкивался с такой ошибкой, и как вы ее исправили. Последний вариант - откатить все изменения и повторить попытку в linux, а затем добавить их постепенно.
Le: у моего json есть поле "objectType"
Спасибо,
John
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "objectType")
@JsonSubTypes({
@Type(value = VideoLogicalChannelNumber.class, name = Constant.VIDEO_LOGICAL_CHANNEL_NUMBER_OBJECT_TYPE),
@Type(value = InteractiveLogicalChannelNumber.class, name = Constant.INTERACTIVE_LOGICAL_CHANNEL_NUMBER_OBJECT_TYPE),
@Type(value = VideoInteractiveLogicalChannelNumber.class, name = Constant.VIDEO_INTERACTIVE_LOGICAL_CHANNEL_NUMBER_OBJECT_TYPE),
@Type(value = MosaicLogicalChannelNumber.class, name = Constant.MOSAIC_LOGICAL_CHANNEL_NUMBER_OBJECT_TYPE)
})
public abstract class LogicalChannelNumber implements ResourceWithId, Serializable {...}
public class VideoLogicalChannelNumber extends LogicalChannelNumber implements Serializable {...}