gpt4 book ai didi

spring - 如何使用 spring annotaion 配置 MessageDispatcherServlet 和 ServletRegistration

转载 作者:行者123 更新时间:2023-12-02 20:26:24 26 4
gpt4 key购买 nike

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

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 类是

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

}

最佳答案

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

@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"));
}

关于spring - 如何使用 spring annotaion 配置 MessageDispatcherServlet 和 ServletRegistration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49790234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com