2013-12-13 2 views
0

А именно, после сериализации на веб-сервере я хочу установить нулевое поле processDefinition для всех экземпляров класса org.jbpm.graph.def.ProcessDefinition, поэтому я не получаю это исключение при возврате значений из веб-службы CXFВозможно ли написать 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. Это верно?