Я столкнулся со странным поведением в маршаленге с маршаллером JAXB.
К сожалению, я не могу принести код этих моделей (с производства), потому что не имею права загружать его в сеть. И придумать тестовые модели с таким поведением не получилось. Я постараюсь описать проблему словами.
У меня сложная модель, сгенерированная JAXB из XSD. Я получаю эту модель (объект JAXB) в своем веб-сервисе SOAP и получаю часть этого запроса.
org.w3c.dom.Element partOfRequest = fullRequest.getAny();
После этого я пытаюсь преобразовать partOfRequest
в String
и сохранить в базу данных.
@Override
public String unMarshalElementToString(Element element) {
try {
Document document = element.getOwnerDocument();
DOMImplementationLS domImplLS = (DOMImplementationLS) document.getImplementation();
LSSerializer serializer = domImplLS.createLSSerializer();
return serializer.writeToString(element);
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
И в этой точке у меня проблемы:
Когда я запускаю приложение на своем компьютере - у меня правильная строка с пространствами имен.
Когда я запускаю приложение на первом тестовом компьютере - у меня правильная строка с пространствами имен.
Но когда я запускаю приложение на втором тестовом компьютере - у меня есть строка с разными пространствами имен. И странно добавляется xmlns=""
.
Как это возможно? Один и тот же файл 123.jar работает на разных компьютерах с одинаковой версией Java, но вы получаете разные результаты при сортировке? какой способ посмотреть? проверить что? как это может быть?