2012-05-12 3 views
2

나는 framework.xsd로 JAXB 생성을 수행하는 프로젝트를 가지고있다. 이것은 xsd 및 jaxb 객체와 그 클래스 주위의 다른 클래스로 jar 파일을 생성합니다.자바 객체 생성시 복잡한 jaxb 시나리오

다른 그룹 (두 개의 다른 그룹)이 framework.xsd를 확장하고 스키마 확장을 사용하여 subxmling이 framework.xsd에서 개체를 확장하기 위해 항목을 확장합니다. 그들은 또한 jaxb 객체를 생성하려고하지만 SomeClass.java가 분명히 내 Framework.java를 확장하고 완전히 새로운 계층 구조로 끝나기를 원하지 않습니다.

  1. 이것도 가능합니까?
  2. 어떻게 이런 식으로합니까? 이 솔루션은
    1. 에 필요로 네임 스페이스 전년 동기 대비 이미
    2. 그것이 패키지 zzzzzz입니다의 클래스를 참조하거나 xjb 볼 필요가 JAXB 컴파일러에게 발생하지 않도록 생성 된 JAXB 컴파일러에게 프레임 워크 jar 파일 또는 뭔가 파일.

이것은 가능합니까? 덕분에 학장

답변

1

첫 번째 스키마에 대한 JAXB 클래스를 생성 할 때 에피소드 파일 : http://weblogs.java.net/blog/kohsuke/archive/2006/09/separate_compil.html을 사용하려고합니다. 그런 다음

$ xjc -episode framework.episode framework.xsd 

해야 당신의 framework.jar 소비하는 다른 그룹 :

1) 자신의 스키마 예에서 스키마를 가져옵니다

<xsd:import namespace="http://www.myorg.com/framework" schemaLocation="framework.xsd"/> 

2) 자신의 JAXB 클래스 생성을

$ xjc extend.xsd -b framework.episode 

(xjd 및 episode 파일의 사본이 xjc 시간에 필요하며 framework.jar i n classpath)

위의 블로그 게시물에 따르면 framework.episode 파일을 jar 파일 (예 : /META-INF/sun-jaxb.episode for JAXB RI - 적어도 다른 JAXB 임 플란 트는 같은 일을 성취하는 다른 방법을 가질 수 있습니다.) 따라서 -b framework.episode 옵션을 생략 할 수 있습니다. 나는 개인적으로 조금 비실용적이라고 생각하지만, 어쨌든 여전히 XSD가 필요합니다.