Я полагаюсь на интроспекцию для обработки XML в приложении Java EE 6, над которым я работал довольно долгое время. До сих пор он работал отлично. Однако мне пришлось переименовать имя владельца свойства. Проблема заключается в том, Introspector.getBeanInfo(Class<?>)
обнаруживает и старый, и новые сеттер, даже после того, как яСвойства поиска интроспектора, которые больше не существуют
- перестал использовать JRebel,
- продувает мой репозиторий Maven,
- сдул GlassFish и установил свежую и
- перестроен мой веб-приложение.
Кроме того, я обеспечил кэш Introspector в продувают:
public class BeanUtils {
public static Map<String, Class> propertyTypes(Class beanType) throws Exception {
HashMap<String, Class> propertyTypes = new HashMap<>();
for (PropertyDescriptor descriptor : Introspector.getBeanInfo(beanType).getPropertyDescriptors()) {
propertyTypes.put(descriptor.getName(), descriptor.getPropertyType());
}
return propertyTypes;
}
// Added this to flush the introspector
static {
Introspector.flushCaches();
}
}
Вот класс я интроспекции:
public class AdhocUnavailableTimesRequestTag
{
public AdhocUnavailableTimeRequestTag[] getAdhocUnavailableTimes()
{
return adhocUnavailableTimes;
}
public void setUnavailableTimes(AdhocUnavailableTimeRequestTag[] adhocUnavailableTimes)
{
this.adhocUnavailableTimes = adhocUnavailableTimes;
}
private AdhocUnavailableTimeRequestTag[] adhocUnavailableTimes;
}
И призывают BeanUtils.propertyTypes(AdhocUnavailableTimesRequestTag.class)
возвращается:
"adhocUnavailableTimes" => class [LAdhocUnavailableTimeRequestTag;
"class" => java.lang.Class"
"unavailableTimes" => class [LAdhocUnavailableTimeRequestTag;
Что может быть причиной интроспектора подобрать unavailableTimes
, когда его больше нет? И как я могу это исправить?
О, дерьмо! Я думаю, что я удалю это, потому что только один из уроков - глупо. Спасибо, что указал на мою глупость. –
Дерьмо иногда случается со всеми :) Вам просто нужны пара свежих глаз. –
Май, также оставьте свой комментарий в ответе. Я не удалю это. –