java.lang.ArrayIndexOutOfBoundsException - JaxB Marshalling - PullRequest
0 голосов
/ 18 марта 2019

Иногда я получаю сообщение об ошибке (не каждый раз), когда пытаюсь выполнить маршаллинг.Но когда я перезагружаюсь пару раз, я получаю желаемый результат.Однако исключение не является согласованным.

java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -8
    at com.sun.xml.bind.v2.util.CollisionCheckStack.findDuplicate(CollisionCheckStack.java:133)
    at com.sun.xml.bind.v2.util.CollisionCheckStack.push(CollisionCheckStack.java:71)
    at com.sun.xml.bind.v2.runtime.XMLSerializer.pushObject(XMLSerializer.java:494)
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:609)
    at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:29)
    at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:132)
    at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:101)
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:286)
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:571)
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:276)
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:472)
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:301)
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:230)
    at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:128)
    at com.parker.techm.mdmcs.aagsync.WriteToAAGQueue.sendResponse(WriteToAAGQueue.java:84)
    at com.parker.techm.mdmcs.workflows.ModifyPartWfl.out(ModifyPartWfl.java:1111)
    at com.ibm.ccd.api.extensionpoints.WorkflowStepFunctionArgumentsImpl.run(WorkflowStepFunctionArgumentsImpl.java:94)
    at com.ibm.ccd.api.extensionpoints.AbstractUserFunctionInvoker._run(AbstractUserFunctionInvoker.java:178)
    at com.ibm.ccd.common.interpreter.engine.dynamic.GenericCompiledScriptAdaptor.run(GenericCompiledScriptAdaptor.java:180)
    at com.ibm.ccd.common.interpreter.engine.Script.runFunction(Script.java:539)
    at com.ibm.ccd.workflow.common.events.AbstractWorkflowEvent.runScriptFunction(AbstractWorkflowEvent.java:624)
    at com.ibm.ccd.workflow.common.events.EndStepEvent.runOutOrTimeoutScript(EndStepEvent.java:838)
    at com.ibm.ccd.workflow.common.events.EndStepEvent.runStepScript(EndStepEvent.java:982)
    at com.ibm.ccd.workflow.common.events.AbstractWorkflowEvent.runStepScriptInTX(AbstractWorkflowEvent.java:2019)
    at com.ibm.ccd.workflow.common.events.AbstractWorkflowEvent.processFullEventWithTransactions(AbstractWorkflowEvent.java:1965)
    at com.ibm.ccd.workflow.common.WorkflowRunnable.processWorkflowEventDbRecord(WorkflowRunnable.java:164)
    at com.ibm.ccd.workflow.common.WorkflowRunnable.run(WorkflowRunnable.java:94)
    at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:732)
    at java.lang.Thread.run(Thread.java:809)

Прикрепив сюда фрагмент кода,

String response = "";
StringWriter xmlMessage = new StringWriter();
JAXBContext jaxContext = JAXBContext.newInstance(PIMPart.class);
Marshaller marshallerObj = jaxContext.createMarshaller();
marshallerObj.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
***marshallerObj.marshal(part, xmlMessage);*** //Exception is thrown here 
response = xmlMessage.toString();
  • Примечание: этот код работает на IBM MDM CE v11.6 (AIX 7)[JARs - jaxb-impl-2.1.jar / jaxb-api-2.2.11.jar]

Любая помощь по этому вопросу будет принята с благодарностью.

...