我有一个Spring MVC应用程序,我试图使用CXF(Jax-RS)公开REST服务。我无法理解如何注册我的服务并使其可用。这是我的服务:
@Path("/myservice/")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public interface MyService {
@POST
@Path("start")
public String start(){
...........
}
}
到目前为止,我设法避免使用任何配置文件,仅使用注释。那么如何在没有配置文件的情况下公开我的服务?我无法在文档中找到这些信息。
由于
答案 0 :(得分:0)
这是完整的答案。比特和零件可以找到online,但没有一个完整的答案很容易遵循/实施。
我会跳过maven部分,因为它很容易弄清楚。
注册CXF Servlet
@WebServlet(urlPatterns="/*")
public class CXFStartServlet extends CXFServlet {
}
将所有Spring bean注册为@Path作为CXF服务
@Configuration
public class MyCxfConfig {
@Autowired
private ApplicationContext ctx;
@Bean(name="cxf")
public SpringBus springBus(){
return new SpringBus();
}
@Bean
public Server jaxRsServer() {
LinkedList<ResourceProvider> resourceProviders = new LinkedList<ResourceProvider>();
for (String beanName : ctx.getBeanDefinitionNames()) {
if (ctx.findAnnotationOnBean(beanName, Path.class) != null) {
SpringResourceFactory factory = new SpringResourceFactory(beanName);
factory.setApplicationContext(ctx);
resourceProviders.add(factory);
}
}
JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();
factory.setBus(ctx.getBean(SpringBus.class));
factory.setProviders(Arrays.asList(new JacksonJsonProvider()));
factory.setResourceProviders(resourceProviders);
return factory.create();
}
}
不要忘记在Spring配置中导入“MyCxfconfig”。这就是全部:))