2013-09-26 2 views
2

Apache CXF 2.7.6 wsdl2java을 사용하고 있으며 공용 카탈로그 항목을 찾지 못하거나 무시합니다. 나는 schemaLocation 속성을 추가하여 <xs:import>을 변경하는 경우공용 항목에 대한 카탈로그 구성을 무시하는 Apache CXF :: wsdl2java

<public publicId="http://www.ivoa.net/xml/STC/STCcoords/v1.10" uri="STCcoords-v1.10.xsd"/> 

:

<xs:import namespace="http://www.ivoa.net/xml/STC/STCcoords/v1.10"/> 

위의 제대로 카탈로그 파일 항목으로 해결 될 수 없습니다 특히 나는 내 XSD 파일 중 하나에 <xs:import> 다음 한 즉, 다음과 같이 변경하십시오 :

<xs:import namespace="http://www.ivoa.net/xml/STC/STCcoords/v1.10" schemaLocation="http://www.ivoa.net/xml/STC/STCcoords/v1.10/> 

파일을 변환합니다. 개미와 함께 제공되는 XSD를 편집해야합니다.

OASIS XML 형식이든 TR9401 형식이든 관계없이 동일한 동작입니다.

답변

3

아파치 CXF 사용자 메일 링리스트에서받은 응답은 XML 스키마 사양이이 지점을 구현에 남겨두고 버그로 간주되지 않는다는 것입니다.

스레드 here (게시글은 2013 년 9 월 26 일이며 2 페이지에 있으며 해당 페이지에 직접 링크를 제공 할 수없는 것 같습니다). 관련 결론은 here입니다. 내가 인용 :

내 생각이에 :

1) 스키마 사양에 따르면,의 schemaLocation 힌트가 지정 가 아닌 경우,이 경우 그것을 해결하는 방법을 알아 내기 위해 응용 프로그램에 달려 필요합니다. 따라서 나는 이것을 "버그"라고 생각하지 않습니다. We 은 제공된 정보를 사용하고 "편집 단위"(일명 : wsdl)의 일부입니다.

2) 개인적으로 나는 schemaLocation을 제공하지 않는 것이 바보 같고 강력하게 추가하는 것이 강력 할 것이라고 생각합니다. 내가 지정하지 않은 시간은 동일한 wsdl에도 임베드 된 스키마 을 가져 오는 경우입니다 (따라서 위치가 없습니다).
사양에서 "응용 프로그램까지"와 같은 것을 볼 때, 나는 으로, 상호 운용성의 악몽입니다. 그냥 지정하십시오.

3) 모두 루트 쟁점은 XmlSchema의 SchemaBuilder 클래스에 있습니다. schemaLocation이없는 경우 해당 스키마는 작업중인 컴파일 단위 인 의 일부로 간주되어 계속됩니다. 을 해결하려고 시도하지 않습니다. 패치 또는 무언가를 원한다면, 은 SchemaBuilder.java에서 약 680 개가됩니다. 그러나 심지어 을 변경하는 경우 CXF 측에서 네임 스페이스를 미리 채우기 위해 더 많은 지원이 필요합니다. 은 이미 인터넷에 연결되지 않도록합니다. 아니요 정말 확실합니다.

그래서,이 확인된다 :

  • 기본 배송 오라클 자바 7 심지어 의 schemaLocation없이 수입 문을 해결하기 위해 카탈로그를 사용합니까 wsimport 도구 속성.
  • 의 schemaLocation없이 수입 문을 해결하기 위해 카탈로그를 사용하지 않는 아파치 CXF 2.7.6 wsdl2java 도구 속성
  • 아파치 CXF 커뮤니티는 버그로를 볼 수 없습니다
  • . 내가 사용하는 다른 도구를 찾을 수 있다면 내가 볼
+1

추측 ... – tzrlk