谁在使用 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
秒可能需要一些调整。
一些提示:
- 使用最新版本的 maven-bundle-plugin (3.x)
- 编译包时使用官方 JBoss Fuse BOM
- 除非别无选择,否则不要将 jars 嵌入包中
- 使用
wrap
命令将非 OSGi jar 转换为 OSGi 兼容,大部分时间都有效
- 当您使用数据库和 ORM 时,使用
javax.sql.DataSource
和 JPA,将会避免很多类加载问题
jdbc
和jndi
是你的朋友
- 将您的界面发布为 OSGi 服务
- 使用蓝图作为组件模型(工作原理与Spring基本相同)
- 从其他包中注入 service/bean 作为 OSGi 服务
- 阅读"OSGi in Action"本书
- 记录到您自己的文件而不是 fuse.log(将 Log4j 配置为在
etc/org.ops4j.pax.logging.cfg
文件中执行此操作)
- 开发时使用
0.0.0-SNAPSHOT
。这是基本的。 如果您重新部署具有相同版本的捆绑包,OSGi 运行时可能会重复使用之前加载的 classes/resources,并且不会按预期工作。您将看不到新方法、更新的代码等等... 使用 -SNAPSHOT
版本您强制 OSGi 运行时真正重新加载代码。
- 使用
./fuse debug
启动,这样您就可以连接到 IDE 并实时调试代码。您甚至可以调试到 Camel / Blueprint / CXF / Felix / 任何您想要的库。
困难
学习曲线非常陡峭,因为涉及到很多框架和技术。您在网上(甚至在 SO 上)找到的许多示例和文档都已过时。
我目前在一家公司工作,该公司正在考虑使用 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
秒可能需要一些调整。
一些提示:
- 使用最新版本的 maven-bundle-plugin (3.x)
- 编译包时使用官方 JBoss Fuse BOM
- 除非别无选择,否则不要将 jars 嵌入包中
- 使用
wrap
命令将非 OSGi jar 转换为 OSGi 兼容,大部分时间都有效 - 当您使用数据库和 ORM 时,使用
javax.sql.DataSource
和 JPA,将会避免很多类加载问题 jdbc
和jndi
是你的朋友- 将您的界面发布为 OSGi 服务
- 使用蓝图作为组件模型(工作原理与Spring基本相同)
- 从其他包中注入 service/bean 作为 OSGi 服务
- 阅读"OSGi in Action"本书
- 记录到您自己的文件而不是 fuse.log(将 Log4j 配置为在
etc/org.ops4j.pax.logging.cfg
文件中执行此操作) - 开发时使用
0.0.0-SNAPSHOT
。这是基本的。 如果您重新部署具有相同版本的捆绑包,OSGi 运行时可能会重复使用之前加载的 classes/resources,并且不会按预期工作。您将看不到新方法、更新的代码等等... 使用-SNAPSHOT
版本您强制 OSGi 运行时真正重新加载代码。 - 使用
./fuse debug
启动,这样您就可以连接到 IDE 并实时调试代码。您甚至可以调试到 Camel / Blueprint / CXF / Felix / 任何您想要的库。
困难
学习曲线非常陡峭,因为涉及到很多框架和技术。您在网上(甚至在 SO 上)找到的许多示例和文档都已过时。