Мне известно, что почти тот же вопрос задавался ранее ( здесь ).Несмотря на то, что есть один интересный ответ, все еще есть свободный конец (в случае демаршаллинга), который также, кажется, применим в нашем случае.
Вот наша ситуация: мы анализируем SOAP-сообщения, тело которых структурировано так:
<complexType name="Body">
<complexContent>
<restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
<sequence>
<element ref="{http://[message=spec url]"/>
</sequence>
</restriction>
</complexContent>
</complexType>
До сих пор мы предполагали, что порядок будет сохранено в (массиве) списках, которые являются результатом процесса демаршаллинга.Элементы затем записываются в таблицу и обрабатываются далее в процедурах PL / SQL.Обычно это не зависит от порядка элементов в последовательности.Может случиться так, что в сообщении SOAP есть два элемента , которые ссылаются на один и тот же объект.Это ошибкаОн пойман в коде PL / SQL, который обрабатывает его, регистрируя ситуацию и отклоняя второй элемент.
Наша проблема сейчас заключается в том, что очень редко и (до сих пор) полностью невоспроизводимым не второй элемент (как видно в сообщении SOAP) отклоняется, но первый.Исходя из кода PL / SQL, это может произойти только в том случае, если данные, представляющие элементы в случае, читаются в неправильном порядке (по сравнению с тем, как они отображаются в сообщении).
Поэтому мне было интересно, может ли эта ситуация возникнуть, потому что порядок маршаллированных элементов не определен явно.В ответе на вышеупомянутый вопрос похоже, что порядок определен в случае сортировки с JAXB.На - пока еще без ответа - вопрос (по chahuistle ), относится ли это также и к демаршаллингу, пока нет ответа.
Буду признателен за любую помощь!