3.5. 事务客户端和事务管理器之间的 OSGi 接口


在 description of the client API 和 Spring Boot 事务客户端 API 的描述后,查看 OSGi 服务器(如 Fuse)中的关系会很有帮助。OSGi 的一个功能是全局服务 registry,可用于:

  • 通过过滤或接口查找服务。
  • 使用给定接口和属性注册服务。

同样,在>=< 应用程序服务器中部署的应用程序使用 JNDI (服务 locator 方法)获取对 javax.transaction.UserTransaction 的引用,或者使它们被 CDI注入(依赖项注入 方法)注入,您可以使用以下方法获取相同的引用(直接或间接):

  • 调用 org.osgi.framework.BundleContext.getServiceReference () 方法(服务 locator)。
  • 将它们注入到 Blueprint 容器中。
  • 使用 Service 组件运行时(SCR)注解(依赖项注入)。

下图显示了在 OSGi 运行时中部署的 Fuse 应用程序。应用程序代码和/或 Camel 组件使用其 API 获取事务管理器、数据源和连接工厂的引用。

OSGi 事务架构

应用程序(捆绑包)与 OSGi 注册表中注册的服务交互。通过 接口执行访问权限,这与应用程序应相关。

在 Fuse 中,实施(直接或通过小包装器)事务的客户端接口的基本对象是 org.jboss.narayana.osgi.jta.internal.OsgiTransactionManager。您可以使用以下接口访问事务管理器:

  • javax.transaction.TransactionManager
  • javax.transaction.UserTransaction
  • org.springframework.transaction.PlatformTransactionManager
  • org.ops4j.pax.transx.tm.TransactionManager

您可以直接使用这些接口,或通过选择框架或库(如 Camel)来隐式使用它们。

有关在 Fuse 中配置 org.jboss.narayana.osgi.jta.internal.OsgiTransactionManager 的方法的详情,请参考 第 4 章 配置 Narayana 事务管理器。本指南中的后续章节将构建本章中的信息,并描述了如何配置和使用其他服务,如 JDBC 数据源和 JMS 连接工厂。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.