2013-03-17 2 views
0

Я полагаюсь на интроспекцию для обработки 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, когда его больше нет? И как я могу это исправить?

+0

О, дерьмо! Я думаю, что я удалю это, потому что только один из уроков - глупо. Спасибо, что указал на мою глупость. –

+0

Дерьмо иногда случается со всеми :) Вам просто нужны пара свежих глаз. –

+0

Май, также оставьте свой комментарий в ответе. Я не удалю это. –

ответ

1

Это будет название метода setUnavailableTimes. Вы исправите его, переименовав метод на setAdhocUnavailableTimes.

+0

Спасибо за свежую пару глаз. –

Смежные вопросы