0

即,在 Web 服务器中进行序列化时,我想将 org.jbpm.graph.def.ProcessDefinition 类的所有实例的 processDefinition 字段设置为 null,因此每当从 CXF Web 服务返回值时,我都会避免出现此异常

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)

但是它的方法从未被调用过。

4

1 回答 1

0

它工作正常。问题是我的序列化在序列化该字段之前失败了,所以这就是我的转换器从未被调用的原因。

为了更清楚地说明这一点,将在我自己的包中为 org.jbpm.graph.def.ProcessDefinition 类的所有字段调用这个在包级别定义的特定转换器,但不会为 org.jbpm.graph 中的对象字段调用.def 包。这个对吗?

于 2013-12-14T01:04:36.670 回答