2012-08-02 24 views
4

jaxb.properties需求是在相同的封裝領域類您正在創建的JAXBContext。的JAXBContext,jaxb.properties和MOXY

我使用Moxy的xml驅動配置,因爲我不想使用註釋或XJC生成的對象。我有一個現有的域類分佈在多個包中。這是否意味着我需要在所有這些軟件包中都有jaxb.properties,或者有更好的選擇(也許編寫自己的某個可以從jvm arg或其他東西讀取的接口的實現)?

回答

5

這是否意味着我需要在所有 這些包中包含jaxb.properties?

如果你正在創建類的JAXBContext,那麼你需要有一個jaxb.properties文件中傳遞的域類的包中的至少一個。在下面的例子中,你可以有一個jaxb.properties文件中任一package1package2

JAXBContext jc = JAXBContext.newInstance(package1.Foo.class, package2.Bar.class); 

如果您正在創建包名你JAXBContext,那麼你需要在包裝的至少一個jaxb.properties文件。請注意,軟件包由':'分隔。

JAXBContext jc = JAXBContext.newInstance("package1:package2"); 

或者有更好的選擇

我的選擇是使用標準的API JAXB用jaxb.properties文件來指定莫西作爲JAXB提供商。有些人喜歡使用原生的莫西API來做到這一點:

JAXBContext jc = org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(new Class[] {Foo.class, Bar.class}, null); 

更多信息

+0

在所提供的鏈接,我看到了下面的輸出中如果我只在1個包中指定jaxb.properties。 「class com.sun.xml.bind.v2.runtime.JAXBContextImpl」。正如你所看到的那樣,jaxb.props不在那裏的包,它正在恢復到太陽的實現。我們不會有這個問題嗎? – 2012-08-03 14:10:50

+0

只要'jaxb.properties'文件位於爲創建'JAXBContext'而傳遞的類的包之一中,您就可以。這就是我試圖用這個帖子來展示的東西。運行該示例時您看到不同的結果嗎? – 2012-08-03 14:33:31

+0

我還沒有運行過這個例子,但是讀到你的帖子後對我提出了這個疑問,因爲你沒有提到這個問題。如果您可以更新您的帖子以明確聲明「此行爲正常」,那將會很好。 – 2012-08-03 14:36:33