2013-12-13 46 views
0

也就是說,在Web服務器中進行序列化時,我想將org.jbpm.graph.def.ProcessDefinition類的所有實例的processDefinition字段設置爲null,因此,無論何時從CXF Web服務返回值,都可避免發生此異常是否可以編寫一個XmlAdapter <someType,someType>?

com.sun.istack.SAXException2 : A cycle is detected in the object graph. This will cause infinitely deep XML: ProcessDefinition(DailyProcess) -> ProcessDefinition(DailyProcess) 

之所以問的是,我已經寫了下面

public class XmlJbpmProcessDefinitionAdapter extends XmlAdapter<ProcessDefinition, ProcessDefinition> { 

    @Override 
    public ProcessDefinition unmarshal(ProcessDefinition v) throws Exception { 
     return v; 
    } 

    @Override 
    public ProcessDefinition marshal(ProcessDefinition v) throws Exception { 
     v.setProcessDefinition(null); 
     return v; 
    } 
} 

在package-info.java文件中定義它的類作爲

@XmlJavaTypeAdapter(value=XmlJbpmProcessDefinitionAdapter.class, type=org.jbpm.graph.def.ProcessDefinition.class) 

但其方法從未被調用。

回答

0

它工作正常。問題是我的序列化在序列化該字段之前失敗了,所以我的轉換器從未被調用。

爲了澄清這一點,在包級別定義的這個特定的轉換器將在我自己的包中爲org.jbpm.graph.def.ProcessDefinition類的所有字段調用,但不會在say org中的對象字段.jbpm.graph.def包。它是否正確?

相關問題