【问题标题】:Spring Boot based RESTful service in JBOSS FuseJBOSS Fuse 中基于 Spring Boot 的 RESTful 服务
【发布时间】:2016-04-25 12:25:25
【问题描述】:

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

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

理想情况下,我希望使用 Spring Boot,因为它使独立开发盒上的开发/测试变得更容易(可以 boostrap servlet 容器等)。 我还想尽可能地减少(或消除)Maven POM 之外的任何 XML 配置。 所以 Spring Java 配置而不是 XML 配置。 我愿意为服务使用 Spring-MVC 或 Jax-RS/CXF。

这是可以实现的并且是一个“好”的课程吗?

我似乎找不到任何类似的可行示例。有人可以给我举个例子或提供一些建议来解决这个问题吗?我已经熟悉 Spring/Spring-MVC/Jax-RS。但是在 Karaf/Camel/Fabric8/OSGi、各种部署选项等之间,我一直在转圈,无法开始。

谢谢!

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

【问题讨论】:

    标签: rest spring-boot jbossfuse


    【解决方案1】:

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

    首先,Java 配置:

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

    其次,Fuse 和 Spring Boot:

    在 Spring Boot 方面,Fuse 和 Spring Boot 并不真正兼容,因为它们都是运行应用程序的容器(Fuse 容器的范围比 Spring Boot 广泛得多,但从根本上说它们都想管理执行应用程序的环境)。

    怎么办?

    如果您只想运行 REST Web 服务并且不需要任何其他 Fuse 的“好处”,那么 Spring Boot 是一个非常强大的服务容器,您可以扔掉所有 Fuse 的东西(尽管您可以通过在应用程序中使用 java 库来使用 Camel 和 AMQ)。

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

    为了在工作中投入另一个扳手,我最近使用 dropwizard 作为我的 REST 服务的容器度过了一段美好的时光,它大量使用了 Jax-RS 和 jersey(我更喜欢 CXF 配置的恐怖)并且没有不像弹簧启动那样做那么多神奇的自动配置。

    【讨论】:

    • 谢谢@stringy05。是的,看起来像带有类路径魔法的 Spring Boot 对 OSGi 不友好,所以这是不行的。我能够让 Spring Java 配置在 Fuse/Karaf 中工作(使用 Spring 3.2.12.RELEASE)。我确实必须包含一个 spring xml 配置以便容器识别它,但只需将 XML 配置指向我的 java 配置,一切正常。
    【解决方案2】:

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

    1. “Spring BOOT 使开发和测试更容易”和“避免 XML 配置”- 确实如此。要在本地进行原型制作,您可以使用嵌入式 tomcat 进行快速开发、部署和测试。一旦你准备好部署到任何应用程序服务器(在你的例子中是 JBoss Fuse),你可以从 POM 中删除嵌入式 tomcat 插件并部署生成的工件
    2. “Spring Java 配置的使用” - 如果您使用 Spring BOOT,这不是必需的,它会为您提供配置所需的所有选项。
    3. 开始(从使用框架(如注释)到创建工件以依赖于 JBoss),官方文档涵盖了所有步骤 [Example projectw with the embedded 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 是一个很好的候选者:不幸的是,我没有使用你提到的其他候选者。

    【讨论】:

    • 感谢斯里坎塔的回答。我更新了问题以澄清这不是 JBOSS EAP,这是 Fuse with Apache Karaf/Camel,它对部署进行了相当大的更改。
    猜你喜欢
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2014-09-24
    • 2015-03-05
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多