Это довольно старый вопрос, но когда я только что закончил свое путешествие по этой стране боли, я поделюсь ответами.
a) Порядок элементов обеспечивается базовой библиотекой wss4j, а не rampart. Проблемным методом является checkReceiverResults () из org.apache.ws.security.handler.WSHandler. Возможно, вы столкнулись с проблемами при использовании rampart WSDoAllReceiver, расширяющего WSHandler.
б) Хорошая новость заключается в том, что метод checkReceiverResults () защищен. Таким образом, вы можете расширить WSDoAllReceiver и переопределить метод, чтобы сделать его более разрешающим. Я предлагаю посмотреть на реализацию checkReceiverResultsAnyOrder (), добавленную в WSHandler в wss4j-1.5.8.
Итак, чтобы ответить на ваши вопросы:
Вы можете отладить метод checkReceiverResults (), чтобы узнать и «исправить» порядок элементов в вашем файле axis2.xml. Но это не очень хороший способ, так как порядок заголовков всегда может меняться (нет требований к порядку элементов в заголовке SOAP). Поэтому я предлагаю вызывать checkReceiverResultsAnyOrder (), а не checkReceiverResults ().