Spring Boot使用dispatcherServlet()方法自定义Servlet后404错误

本文将解决Spring Boot使用dispatcherServlet()方法自定义Servlet后404错误。

最近项目需要在 SpringBoot 中集成 WebService,选择在 SpringBoot 中集成CXF。集成的配置类如下:

@Configuration
public class CxfConfig {
    @Autowired
    private Bus bus;

    @Autowired
    UserService userService;

    /**
     * 此方法作用是改变项目中服务名的前缀名,此处127.0.0.1或者localhost不能访问时,请使用ipconfig查看本机ip来访问
     * 此方法被注释后:wsdl访问地址为https://127.0.0.1:8080/services/user?wsdl
     * 去掉注释后:wsdl访问地址为:https://127.0.0.1:8080/soap/user?wsdl
     * @return
     */
    @SuppressWarnings("all")
    @Bean
    public ServletRegistrationBean dispatcherServlet() {
        return new ServletRegistrationBean(new CXFServlet(), "/soap/*");
    }

    /** 
     * JAX-WS 站点服务
     */
    @Bean
    public Endpoint endpoint() {
        EndpointImpl endpoint = new EndpointImpl(bus, userService);
        endpoint.publish("/user");
        return endpoint;
    }

}

项目在 application.properties 中定义的服务名称为“/server”。当我启动项目后,当试图去访问 /server 时返回 404 错误。排查问题排查了很久,自己的配置文件没有问题啊,最后将CXF的配置信息注释掉,就可以正常访问服务器了。

最终原因是下面一段代码导致:

@SuppressWarnings("all")
@Bean
public ServletRegistrationBean dispatcherServlet() {
    return new ServletRegistrationBean(new CXFServlet(), "/soap/*");
}

将 dispatcherServlet() 方法名称改为其他名称即可。

生活总会给你答案的,但不会马上把一切都告诉你。只要你肯等一等,生活的美好,总在你不经意的时候,盛装莅临。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号