Servlets 使用带有弹簧引导执行器的CXF
我正在开发一个web服务主机应用程序,其中使用cxf和spring boot。当我用以下代码注册CXFServlet时,web服务端工作,我可以看到已发布的WSDL 但是,在设置CXFServlet后,Spring引导执行器和rest端点不工作,返回404。我如何解决这个问题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(), "/
@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服务的替代方案。我和爱迪生一样努力,但仍然没有解决办法。先谢谢你。