Spring WebServiseTemplate在不同的jaxb包中具有相同的名称

时间:2018-07-17 08:12:19

标签: java spring web-services soap

我有2个具有一个元素名称的xsd,例如userId。我从这些xsd定义创建了jaxb类,并使用这些类作为ContextPaths创建了WebServiceTemplate,但出现错误:

The element name {http://namespace.name}userId has more than one mapping.

我在一些StackOverflow问题和其他资源中遇到了这个问题,但是没有找到任何解决方案:( 解决此问题的方法之一似乎是“为每个模型创建单独的JAXBContext”,但到目前为止,我还没有找到实现此目的的方法。

我的WebServiceTemplate配置:

@Bean
    public WebServiceTemplate webServiceTemplate() throws Exception {

        SaajSoapMessageFactory messageFactory = new SaajSoapMessageFactory(MessageFactory.newInstance());
        messageFactory.afterPropertiesSet();

        WebServiceTemplate webServiceTemplate = new WebServiceTemplate(messageFactory);
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();

        marshaller.setPackagesToScan(JAXB_PACKAGES);
        marshaller.afterPropertiesSet();

        HttpsUrlConnectionMessageSender messageSender = new HttpsUrlConnectionMessageSender();
        //adding some properties to messageSender
        //...

        webServiceTemplate.setMessageSender(messageSender);
        webServiceTemplate.setMarshaller(marshaller);
        webServiceTemplate.setUnmarshaller(marshaller);
        webServiceTemplate.afterPropertiesSet();

        return webServiceTemplate;

    }

0 个答案:

没有答案