Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Servlets 使用带有弹簧引导执行器的CXF_Servlets_Spring Boot_Cxf - Fatal编程技术网

Servlets 使用带有弹簧引导执行器的CXF

Servlets 使用带有弹簧引导执行器的CXF,servlets,spring-boot,cxf,Servlets,Spring Boot,Cxf,我正在开发一个web服务主机应用程序,其中使用cxf和spring boot。当我用以下代码注册CXFServlet时,web服务端工作,我可以看到已发布的WSDL 但是,在设置CXFServlet后,Spring引导执行器和rest端点不工作,返回404。我如何解决这个问题 @Bean public ServletRegistrationBean cxfServlet() { return new ServletRegistrationBean(new CXFServlet(), "/

我正在开发一个web服务主机应用程序,其中使用cxf和spring boot。当我用以下代码注册CXFServlet时,web服务端工作,我可以看到已发布的WSDL

但是,在设置CXFServlet后,Spring引导执行器和rest端点不工作,返回404。我如何解决这个问题

@Bean
public ServletRegistrationBean cxfServlet() {
    return new ServletRegistrationBean(new CXFServlet(), "/soap-api/*");
}

虽然我不知道原因,但当我设置一个如下的名称时,它就开始工作了

@Bean
public ServletRegistrationBean cxfServlet() {
    ServletRegistrationBean cxf = new ServletRegistrationBean(new CXFServlet(), "/soap-api/*");
    cxf.setName("cxfServlet");
    return cxf;
}

这里是我使用的简单的spring引导配置

@Configuration
@Import(value = { JaxRsConfig.class })
public class CxfRestConfig {

    @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        return new ServletRegistrationBean(new CXFServlet(), "/cxf/*");
    }

    @Component
    public class CustomSpringComponentScanServer
            extends AbstractSpringComponentScanServer {

        @Override
        protected String getAddress() {
            return "/api";
        }

        @Bean
        public Server jaxRsServer() {
            super.getFeatures().add(new LoggingFeature());
            return super.createJaxRsServer();
        }

    }

}
注意:使用ComponentScanner,您需要在类级别使用Spring注释和@Path注释对服务类进行注释。 如果您不想要API列表,您可以直接删除我编写的自定义类,并且可以直接导入,如下所示

@Import(value = { JaxRsConfig.class, SpringComponentScanServer.class }) 

我看Servlet之间有冲突

您可以在日志中查看它。应该有:

2017-04-01 15:34:04,029 [restartedMain] INFO  o.s.b.w.s.ServletRegistrationBean - Mapping servlet: 'CXFServlet' to [/soap-api/*]

2017-04-01 15:34:04,031 [restartedMain] INFO  o.s.b.w.s.ServletRegistrationBean - Mapping servlet: 'dispatcherServlet' to [/]
应该正好有两个servlet,并且路径应该不同

如果有一个丢失,enpoints将无法工作


dispatcherServlet
spring是否是处理执行器指标的默认工具

类路径上是否仍有
spring webmvc
?它通常是通过对
spring boot starter web
的依赖关系引入的。当它不工作时,我添加了spring webmvc,但它没有解决错误。嗨,你能分享一个工作示例吗?Java有许多web服务的替代方案。我和爱迪生一样努力,但仍然没有解决办法。先谢谢你。