解决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("/");
相关文章推荐
- VS2005 SP1发布,解决只能创建WebSite,无法创建Web Application项目的问题
- VS2005 SP1发布,解决只能创建WebSite,无法创建Web Application项目的问题 (转)
- VS2005 SP1发布,解决只能创建WebSite,无法创建Web Application项目的问题
- Eclipse项目无法自动发布问题解决
- Citrix服务器此时无法处理您启动该已发布应用程序的请求...问题的解决方法
- 解决Http PUT请求方式无法表单传参问题
- 【问题解决】IDEA-Maven下Tomcat发布Web项目,遇到Jar包无法找到
- 解决SpringBoot项目使用多线程处理任务时无法通过@Autowired注入bean问题
- WCF问题:“HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理”解决方法
- (转)VS2005 SP1发布,解决只能创建WebSite,无法创建Web Application项目的问题
- 解决 AngularJs $http 发送post,get请求,SpringMvc无法接受参数的问题。
- Discuz X3.1微信打通版,发布回复时出现提示:您的请求来路不正确或表单验证串不符,无法提交问题的解决
- VS2005 SP1发布,解决只能创建WebSite,无法创建Web Application项目的问题
- Android项目中sdk 23无法使用HttpGet 和HttpClient的问题解决--只需改一行
- Jmeter HTTP Proxy Server 代理录制 IE无法录制到请求的问题解决
- ssh项目中暴露Web Service供外部访问_解决请求路径问题
- (转)VS2005 SP1发布,解决只能创建WebSite,无法创建Web Application项目的问题
- WCF问题:“HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理”解决方法
- IIS中预览错误问题的解决办法(HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射 )
- VS2005 SP1发布,解决只能创建WebSite,无法创建Web Application项目的问题