различное поведение маршалинга на разных компьютерах - PullRequest
0 голосов
/ 07 ноября 2018

Я столкнулся со странным поведением в маршаленге с маршаллером 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, но вы получаете разные результаты при сортировке? какой способ посмотреть? проверить что? как это может быть?

...