Spring JBOSS Fuse 中基于引导的 RESTful 服务

Spring Boot based RESTful service in JBOSS Fuse

我是 JBoss Fuse 和 Karaf、Camel、Fabic8、CXF 堆栈的新手。

我想部署一个简单的 restful 服务到 JBoss Fuse (6.2.1)。

我想理想地使用 Spring 引导,因为它使 development/testing 在独立开发箱(可以 boostrap servlet 容器等)上更容易。 我还想尽可能地减少(或消除)Maven POM 之外的任何 XML 配置。 所以 Spring Java 配置而不是 XML 配置。 我愿意为服务使用 Spring-MVC 或 Jax-RS/CXF。

这是否可以实现并且需要 "good" 课程?

我似乎找不到任何类似的可行示例。有人可以给我举个例子或提供一些提示来解决这个问题吗?我已经大体上熟悉 Spring/Spring-MVC/Jax-RS。但是在 Karaf/Camel/Fabric8/OSGi、各种部署选项等之间,我在原地打转,开始时遇到了麻烦。

谢谢!

澄清一下,这是针对 JBOSS Karaf 上的 Fuse,而不是 Fuse EAP。

由于您的问题有很多部分,我将尝试将它们分解并给出我的意见和背后的思考过程:

  1. "Spring BOOT makes development and testing easier" & "avoiding XML configurations"- 没错。要在本地制作原型,您可以使用嵌入式 tomcat 来快速开发、部署和测试。一旦您准备好部署到任何应用程序服务器(JBoss Fuse 在您的情况下),您可以从 POM 中删除嵌入式 tomcat 插件并部署生成的工件
  2. "Usage of Spring Java Configuration" - 如果您使用 Spring BOOT,则不需要,它会为您提供配置所需的所有选项。
  3. 开始(从使用注释等框架到创建依赖 JBoss 的工件),官方文档涵盖了所有步骤 [带有嵌入式 tomcat 的示例项目 - https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-tomcat & tutorial - http://spring.io/guides/gs/rest-service]
  4. 部署选项 - 如果您使用的是 Maven,则涵盖编译到工件创建生命周期。为了自动化部署以及处理服务器上的 Maven 生命周期,Jenkins 是一个很好的候选者:不幸的是我没有使用你提到的其他候选者。

我不认为这是可以实现的,如果是的话,它可能不应该。

首先,Java配置:

当然,您可以在 Fuse 上为您的 Camel 组件添加 Spring java 注释,请记住 Fuse 6.2 使用 spring 3.2,因此您几乎无法使用任何东西支持提供的 Java 配置。我没试过这个,但肯定会认可它。

其次,Fuse和Spring开机:

就 Spring 引导而言,Fuse 和 spring 引导并不真正兼容,因为它们都是 运行 应用程序的容器(Fuse 容器的范围很广比 spring 引导更宽,但从根本上说,它们都希望为您的应用程序管理执行环境)。

怎么办?

如果您只想 运行 REST 网络服务而不需要任何其他 Fuse 'benefits',那么 Spring Boot 是一个非常适合您的服务的容器你可以扔掉所有 Fuse 的东西(尽管你可以通过在你的应用程序中使用 java 库来使用 Camel 和 AMQ)。

如果你需要使用 Fuse 作为你的执行环境那么你真的不想使用 spring 引导。想必是需要OSGI、Fabric等所以需要穿Fuse直筒外套。对于 REST 端点,我会查看 camel-rest 组件,但是如果你真的想使用 jax-rs JSR311 资源绑定,那么它被描述为 in the camel docs,尽管我没有使用 Fuse 尝试过这个(6.2 使用 camel 2.15 所以这个应该工作)。

为了在工作中投入另一个扳手,我最近很开心使用 dropwizard 作为我的 REST 服务的容器,它大量使用 Jax-RS 和球衣(我更喜欢 CXF 配置的恐怖)并且不像 spring 启动那样做那么多神奇的自动配置。