【问题标题】:Spring boot ws: 2 endpoints, one with MTOM enabled, one with MTOM disabledSpring boot ws:2 个端点,一个启用 MTOM,一个禁用 MTOM
【发布时间】:2016-04-08 07:38:11
【问题描述】:

我想创建一个带有两个端点的 Spring Boot ws 应用程序,但我需要一个启用 MTOM(用于较新的客户端),另一个禁用 MTOM(用于较旧的客户端)。 这两个端点在其他任何方面都应该相同。

请告诉我这是否可行,如果可行,请给我任何提示。

提前致谢

【问题讨论】:

    标签: java spring-boot spring-ws mtom


    【解决方案1】:

    您可以使用下面的配置简单地复制您的架构和端点(只有命名空间应该不同)。唯一的限制是两个端点共享相同的 uri(host/ws/NotMtomServices.wsdl 和 host/ws/MtomServices.wsdl)

    @EnableWs
    @Configuration
    public class WebServiceConfig extends WsConfigurationSupport {
    
        @Bean
        public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
            MessageDispatcherServlet servlet = new MessageDispatcherServlet();
            servlet.setApplicationContext(applicationContext);
            servlet.setTransformWsdlLocations(true);
            return new ServletRegistrationBean(servlet, "/ws/*");
        }
    
        @Bean(name = "NotMtomServices")
        public DefaultWsdl11Definition defaultWsdl11DefinitionILServices(XsdSchema notMtomServicesSchema) {
            DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
            wsdl11Definition.setPortTypeName("ILPort");
            wsdl11Definition.setLocationUri("/ws");
            wsdl11Definition.setTargetNamespace(NotMtomServices.NAMESPACE_URI);
            wsdl11Definition.setSchema(notMtomServicesSchema);
            return wsdl11Definition;
        }
    
        @Bean(name = "MtomServices")
        public DefaultWsdl11Definition defaultWsdl11DefinitionILServicesMTOM(XsdSchema mtomServicesSchema) {
            DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
            wsdl11Definition.setPortTypeName("ILPort");
            wsdl11Definition.setLocationUri("/ws");
            wsdl11Definition.setTargetNamespace(MtomServices.NAMESPACE_URI);
            wsdl11Definition.setSchema(mtomServicesSchema);
            return wsdl11Definition;
        }
    
        @Bean
        @Override
        public DefaultMethodEndpointAdapter defaultMethodEndpointAdapter() {
            List<MethodArgumentResolver> argumentResolvers = new ArrayList<MethodArgumentResolver>();
            argumentResolvers.addAll(methodProcessors());
    
            List<MethodReturnValueHandler> returnValueHandlers = new ArrayList<MethodReturnValueHandler>();
            returnValueHandlers.addAll(methodProcessors());
    
            DefaultMethodEndpointAdapter adapter = new DefaultMethodEndpointAdapter();
            adapter.setMethodArgumentResolvers(argumentResolvers);
            adapter.setMethodReturnValueHandlers(returnValueHandlers);
    
            return adapter;
        }
    
        @Bean
        public List<MarshallingPayloadMethodProcessor> methodProcessors() {
            List<MarshallingPayloadMethodProcessor> retVal = new ArrayList<MarshallingPayloadMethodProcessor>();
            Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
            marshaller.setContextPath(NotMtomServices.NAMESPACE_URI);
            marshaller.setMtomEnabled(false);
            retVal.add(new MarshallingPayloadMethodProcessor(marshaller));
    
            Jaxb2Marshaller marshallerMTOM = new Jaxb2Marshaller();
            marshallerMTOM.setContextPath(MtomServices.NAMESPACE_URI);
            marshallerMTOM.setMtomEnabled(true);
            retVal.add(new MarshallingPayloadMethodProcessor(marshallerMTOM));
    
            return retVal;
        }
    
        @Bean(name="notMtomServicesSchema")
        public XsdSchema ServicesSchema() {
            return new SimpleXsdSchema(new ClassPathResource("not_mtom_services.xsd"));
        }
    
        @Bean(name="mtomServicesSchema")
        public XsdSchema ServicesSchemaMTOM() {
            return new SimpleXsdSchema(new ClassPathResource("mtom_services.xsd"));
        }
    
    }
    

    【讨论】:

    • 嗨!这看起来很好。但是 MtomServices.NAMESPACE_URI 实际上是什么?
    猜你喜欢
    • 2013-01-12
    • 2019-04-25
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2014-03-02
    • 2010-11-09
    • 2018-04-21
    相关资源
    最近更新 更多