2014-12-25 4 views
0

나는 xml pasring을 다루고있다. 내가 SAXParserFactory와 코드를 검사 할 때, 나는 실제로 반환의 SAXParserFactory의 구현이 궁금SAXParserFactory의 어떤 구현이 사용됩니까?

public static SAXParserFactory newInstance() { 
    try { 
     return (SAXParserFactory) FactoryFinder.find(
      /* The default property name according to the JAXP spec */ 
      "javax.xml.parsers.SAXParserFactory", 
      /* The fallback implementation class name */ 
      "com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl"); 
    } catch (FactoryFinder.ConfigurationError e) { 
     throw new FactoryConfigurationError(e.getException(), 
              e.getMessage()); 
    } 
} 

를 참조? 내가 어떤 구현을 처리하는지 어떻게 확인할 수 있습니까? 미리 감사드립니다.

답변

0

평소와 마찬가지로 SaxParserFactory에는 고유 한 초기화 메소드가 있습니다. 이 방법의 javadoc에서 잘 설명되어 있습니다 (SAXParserFactory.newInstance() 참조). 때로는 나쁜 서면 도서관이 속성을 설정하지만, jaxp.properties의

  • 초 검사 드문 : 시스템 속성이있을 경우

    • 먼저 확인을 :

      공장의 구현은 다음과 같이 검색된다 : 이것은 JRE 설정이지만 기본값이 아닙니다.

    • 런타임 JAR 파일에서 세 번째 검사 : META-INF/services/javax.xml.parsers.SAXParserFactory를 검색합니다. 예를 들어 xercexImpl.jar에서이 파일을 찾으면 com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl이라는 텍스트가 포함됩니다 (이 파일은 런타임 환경에서이 jar 파일을 가지고있을 때 메소드가 반환하는 팩토리 구현입니다) 플랫폼의 디폴트 구현을위한
    • 네 번째 검사 : 나는 당신이 -Djaxp하여 JVM을 시작하려고 실험을 좋아하는 경우는, 어쩌면 자바 컨테이너 (J2EE 애플리케이션 서버)

    을 참조하는 플랫폼 모른다 .debug = 1 (javadoc에 지정된대로).