您的位置:首页 > 编程语言 > Java开发

解决springboot发布web service请求后 项目无法接收http请求的问题

2019-04-18 08:24 561 查看

背景:公司的一个项目二次开发,之前客户端都是调用web service来访问,突然增加了一个需求必须要用http请求来访问

我想这么简单,搞个控制器,然后搞个@requestMapping("xxx"),实际操作的时候傻眼了,http请求怎么都访问不到我的控制器,

简直脑kuo痛,网上查了半天资料才找到原因。

 

原因:

springboot默认注册的是 dispatcherServlet,当手动配置 ServletRegistrationBean后springboot不会再去注册默认的dispatcherServlet,所以需要我们在启动类里手动去注册一个dispatcherServlet,

就是在发布web service的时候  已经手动配置过ServletRegistrationBean了,然后boot就不注册默认的dispatcher,不注册我的http请求谁给我转发?难不成 要我自己用意念去转发?明白了错误原因就好解决了,在启动类里在手动配置一个dispatcher就好了。

[code]//webservice代码

/**
* webService 发布
*/
@Configuration
public class CxfConfig {

@Bean
public ServletRegistrationBean dispatcherServlet() {
return new ServletRegistrationBean(new CXFServlet(), "/*");
}
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
}
@Bean
public IcardCenterForGJ izkzxService() {
return new IcardCenterForGJImpl();
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), izkzxService());
endpoint.publish("/Service");
return endpoint;
}
}

注意上面第一个@bean已经配置了ServletRegistrationBean

 

下面在启动类里再加一个@bean

[code]/**
* @Description:  手动配置dispatcher 转发http请求
* @Param: []
* @return: org.springframework.boot.web.servlet.ServletRegistrationBean
* @Author: chenchuan
* @Date: 2019/04/18
*/
@Bean
public ServletRegistrationBean dispatcherServlet(){
//注解扫描上下文
AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
//项目包名
applicationContext.scan("com.ets.*");
DispatcherServlet my_dispatcherServlet = new DispatcherServlet(applicationContext);
ServletRegistrationBean registrationBean = new ServletRegistrationBean(my_dispatcherServlet);
registrationBean.setLoadOnStartup(1);
registrationBean.addUrlMappings("/*");
return registrationBean;
}

注意:cxf的ServletRegistrationBean的方法名和手动配置的ServletRegistrationBean方法名不能相同 因为注解@bean  方法名相当于id   相同的话id冲突,cxf的就不能用了

重点注意:如果两个dispatherService还是冲突的话 就干点虚拟路径 即改写成 endpoint.publish("/");

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐