2011-07-25 34 views
1

我正在使用Jersey編寫的REST web服務,我試圖用CDATA部分輸出一些XML。我瞭解the reference implementation of JAXB doesn't support that,所以我已經下載了EclipseLink的MOXy,並試圖讓@XmlCDATA註釋生效。使用MOXy的@XmlCDATA註釋與澤西

我JAXB映射豆看起來像這樣

package com.me.entities; 

@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) 
public class MyBean { 

    @XmlAttribute 
    private URI thumbnail; 

    @XmlElement(name="longdescription") @XmlCDATA 
    private String description; 

    public MyBean() { } 

    public final String getDescription() { return description; } 

    public final void setDescription(String d) { this.description = d; } 
} 

和我有jaxb.properties文件中的com/me/entities與類文件一起。屬性文件有

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory 

在裏面。我確定它被成功加載,因爲如果我用一些廢話替換工廠類名稱,應用程序就會崩潰。另外,顯式編組創建JAXBContext的文件在我自己的工作中很好,所以問題似乎與球衣相關。據this我的設置是好的,但是當我的球衣資源返回爲myBean

... 
@GET @Produces(MediaType.TEXT_XML) 
public MyBean getMyBean() { 
    MyBean b = new MyBean(); 
    b.setDescription("Some blurb plenty of invalid chars like <<< && >>>"); 

    return b; 
} 

我回來在它沒有CDATA一個實例,但看起來像

<?xml version="1.0" encoding="UTF-8"?> 
<info><longdescription>Some blurb plenty of invalid chars like &lt;&lt;&lt; &amp;&amp; >>></longdescription></info> 

我在做什麼錯?

回答

2

貌似問題是我的應用程序服務器:我與的WebLogic 10.3.5發展模式,自帶了很多預裝的是,在默認配置優先於那些部署在公共庫的運行此webapp WEB-INF/lib文件夾。

要解決這個問題,需要一個weblogic特定的應用程序描述,只需在WEB-INF內創建一個weblogic.xml文件,其中包含prefer-web-inf-classes選項。我使用的文件是這樣的:

<?xml version='1.0' standalone='yes'?> 
<weblogic-web-app> 
    <container-descriptor> 
    <prefer-web-inf-classes>true</prefer-web-inf-classes> 
    </container-descriptor> 
</weblogic-web-app> 

我仍然不知道哪個庫雖然是問題,任何人都知道隨意編輯這個答案。