2013-03-17 3 views
0

Java EE 6 응용 프로그램에서 XML 처리를위한 인트로 스펙 션에 의존하고 있습니다. 저는 꽤 오랫동안 작업 해 왔습니다. 지금까지 그것은 잘 작동했습니다. 그러나 속성 이름을 바꾸어야했습니다. 문제는 더 이상 존재하지 않는 속성을 찾는 Introspector

  • 내 메이븐 저장소를 제거, Introspector.getBeanInfo(Class<?>)도 I

    • 이 JRebel 사용을 중단 한 후, 신구 세터를 모두 감지된다,
    • 글래스 피쉬를 멀리 날려하고 새로운 하나를 설치하고,
    • 내 웹 앱을 다시 작성했습니다.

      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; 
      
      다음
      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(); 
          } 
      } 
      

      내가 introspecting있어 클래스 :

    또한, 나는 인트로 스페의 캐시가 플러시 보장

    인트로 스펙터의 원인 더 이상 존재하지 않는 경우 unavailableTimes을 (를) 수령 하시겠습니까? 어떻게 해결할 수 있습니까?

  • +0

    오, 젠장! 배운 교훈은 어리석은 짓이 아니기 때문에 나는 이것을 지우겠다고 생각합니다. 내 어리 석음을 지적 주셔서 감사합니다. –

    +0

    가끔씩 모든 사람에게 일어나는 일 :) 그냥 신선한 눈이 필요합니다. –

    +0

    답변에 댓글을 달 수도 있습니다. 나는 이것을 삭제하지 않을 것이다. –

    답변

    1

    setUnavailableTimes의 이름이됩니다. 방법을 setAdhocUnavailableTimes으로 바꾸면됩니다.

    +0

    신선한 눈을 가져 주셔서 감사합니다. –

    관련 문제