首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用spring注释配置MessageDispatcherServlet和ServletRegistration

如何使用spring注释配置MessageDispatcherServlet和ServletRegistration
EN

Stack Overflow用户
提问于 2018-04-12 07:14:42
回答 1查看 2.9K关注 0票数 2

我为soap服务配置了MessageDispatcherServlet,为web服务配置了ServletRegistration,但是控制器没有在web服务的情况下调用。

代码语言:javascript
复制
public class WebAppInitializer implements WebApplicationInitializer  {

  @Override
  public void onStartup(ServletContext servletContext) throws ServletException {

    AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();

    // use MessageDispatcherServlet instead of standard DispatcherServlet for SOAP messages
     MessageDispatcherServlet servlet = new MessageDispatcherServlet();
    servlet.setContextClass(WebServiceWsConfig.class); 
    servlet.setApplicationContext(context);
    servlet.setTransformWsdlLocations(true);

    // register MessageDispatcherServlet as Web Service entry point
    final ServletRegistration.Dynamic dispatcher = servletContext.addServlet("MessageDispatcherServlet",servlet);
    dispatcher.setLoadOnStartup(1);
    dispatcher.addMapping("/soapws/*");
    dispatcher.addMapping("/");

  }
}

我的WebServicesConfig课程是

代码语言:javascript
复制
@Configuration

@EnableWs

@EnableWebMvc

@ComponentScan(basePackages = "")

@PropertySource(value = {"classpath:config_local.properties"})


public class WebServiceConfig extends WebMvcConfigurerAdapter {

  @Autowired
  private Environment env;

  @Bean(name = "pos")
  public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema posSchema) {

    DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
    wsdl11Definition.setPortTypeName("posPort");
    wsdl11Definition.setLocationUri("/soapws");
    wsdl11Definition.setTargetNamespace("http://---.---.in/soap");
    wsdl11Definition.setSchema(posSchema);
    return wsdl11Definition;
  }

  @Bean
  public XsdSchema studentsSchema() {
    return new SimpleXsdSchema(new ClassPathResource("pos.xsd"));
  }
  public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
  }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-24 07:25:23

我使用Spring配置来解决我的问题,这有助于我调用Soap服务和Web服务。

代码语言:javascript
复制
@EnableWs
@Configuration
public class WebServiceConfig extends WsConfigurerAdapter{

@Bean
public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
    MessageDispatcherServlet servlet = new MessageDispatcherServlet();
    servlet.setApplicationContext(applicationContext);
    servlet.setTransformWsdlLocations(true);
    return new ServletRegistrationBean(servlet, "/ws/*");
}

@Bean(name = "pos")
public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema posSchema) 
{

    DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
    wsdl11Definition.setPortTypeName("posPort");
    wsdl11Definition.setLocationUri("/soapws");
    wsdl11Definition.setTargetNamespace("http://---.---.in/soap");
    wsdl11Definition.setSchema(posSchema);
    return wsdl11Definition;
}

@Bean
public XsdSchema studentsSchema() {
    return new SimpleXsdSchema(new ClassPathResource("pos.xsd"));
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49790234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档