谁在使用 JBoss Fuse?关于这个产品体验,您有什么可以分享的?

Who is using JBoss Fuse? What could you share about this product experience?

我目前在一家公司工作,该公司正在考虑使用 JBoss Fuse 6.3。目前我们正在研究概念证明,一些事实正在发生:当我们使用完全开源的技术(Camel 或 CXF)集成到 jetty / tomcat 我们可以 运行 没有问题。

通过将其集成到 JBoss Fuse 平台,我们遇到了严重的打包和部署困难。我想知道是否有人在生产之前使用过这个产品,在这个 中遇到的 经验/困难是什么 ]旅程?

Jboss fuse 是一个相当成熟的产品,大量用于集成。对于 soap 实现,您可以使用 camel 中的 cxf 端点,对于 rest 实现,您可以使用 cxfrs server/client 或最新的 rest dsl。 Fuse 支持大多数 EIP 集成模式,并使用 osgi 模块化高效工作。到目前为止,这是一个很棒的产品。

我实际上使用了许多 OSGi 容器,Karaf/JBossFuse 从未给我任何部署问题。

但是,当您部署到此类容器中时,您的包必须符合有关包导入和导出的 OSGI 规范。 .war 秒可能需要一些调整。

一些提示:

  1. 使用最新版本的 maven-bundle-plugin (3.x)
  2. 编译包时使用官方 JBoss Fuse BOM
  3. 除非别无选择,否则不要将 jars 嵌入包中
  4. 使用 wrap 命令将非 OSGi jar 转换为 OSGi 兼容,大部分时间都有效
  5. 当您使用数据库和 ORM 时,使用 javax.sql.DataSource 和 JPA,将会避免很多类加载问题
  6. jdbcjndi是你的朋友
  7. 将您的界面发布为 OSGi 服务
  8. 使用蓝图作为组件模型(工作原理与Spring基本相同)
  9. 从其他包中注入 service/bean 作为 OSGi 服务
  10. 阅读"OSGi in Action"本书
  11. 记录到您自己的文件而不是 fuse.log(将 Log4j 配置为在 etc/org.ops4j.pax.logging.cfg 文件中执行此操作)
  12. 开发时使用0.0.0-SNAPSHOT。这是基本的。 如果您重新部署具有相同版本的捆绑包,OSGi 运行时可能会重复使用之前加载的 classes/resources,并且不会按预期工作。您将看不到新方法、更新的代码等等... 使用 -SNAPSHOT 版本您强制 OSGi 运行时真正重新加载代码。
  13. 使用 ./fuse debug 启动,这样您就可以连接到 IDE 并实时调试代码。您甚至可以调试到 Camel / Blueprint / CXF / Felix / 任何您想要的库。

困难

学习曲线非常陡峭,因为涉及到很多框架和技术。您在网上(甚至在 SO 上)找到的许多示例和文档都已过时。