在不同的计算机上有不同的封送处理行为

时间:2018-11-07 08:30:35

标签: java dom jaxb marshalling

我在使用JAXB marshaller的marshaleng中遇到了一个奇怪的行为。 不幸的是,由于我无权将这些模型的代码上传到网络上,因此无法带入这些模型的代码(来自生产环境)。并想出具有这种行为的测试模型是行不通的。我将尝试用语言来描述问题。

我有JAXB从XSD生成的复杂模型。我在SOAP Web服务中收到此模型(JAXB对象),并获得了该请求的一部分。

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());
    }
}

在这一点上,我遇到了问题:

当我在机器上启动App时-我有正确的带有名称空间的字符串。 当我在第一台测试机上启动App时-我具有正确的带有名称空间的字符串。 但是,当我在第二台测试机上启动App时-我的字符串具有不同的名称空间。并且添加了xmlns=""

这怎么可能?相同的123.jar文件在具有相同Java版本的不同计算机上运行,​​但是在编组时会得到不同的结果吗?哪种方式看?检查什么?怎么会这样?

0 个答案:

没有答案