搜索

3.3. 使用>=< 事务客户端

download PDF

使用 802-1 时,与事务管理器交互的最资金和标准方法是 Java Transaction API (JTA)接口 javax.transaction.UserTransaction。规范用法是:

InitialContext context = new InitialContext();
UserTransaction ut = (UserTransaction) context.lookup("java:comp/UserTransaction");
ut.begin();

// Access transactional, JTA-aware resources such as database and/or message broker

ut.commit(); // or ut.rollback()

从 JNDI (Java 命名和目录接口)获取用户 事务 实例是获取事务客户端的一种方式。在 interaction 环境中,您可以访问事务客户端,例如使用 CDI (上下文和依赖项注入)。

下图显示了 typica developer Camel 应用。

mysqldump 事务 api

图显示 Camel 代码和应用程序代码都可以访问:

  • javax.transaction.UserTransaction 实例,可以使用 Spring TransactionTemplate 类直接从应用程序或内部处理事务处理。
  • 数据库通过 JDBC API 直接或使用 Spring 的 JdbcTemplate,或者使用 camel-jdbc 组件。
  • 使用 Spring 的 JmsTemplate 类或使用 camel-jms 组件直接通过 JMS API 进行消息代理。

使用 javax.transaction.UserTransaction 对象时,您不需要了解正在使用的实际事务管理器,因为您只直接使用事务客户端。(请参阅 第 1.3 节 “关于事务客户端”。) Spring 和 Camel 采用不同的方法,因为它在内部使用 Spring 的事务设施。

iwl Application

在典型的>=< 情景中,应用被部署到 ausearch 应用服务器,通常作为 WAREAR 存档。通过 JNDI 或 CDI,应用程序可以访问 javax.transaction.UserTransaction 服务的实例。然后,使用这个事务客户端实例来划分事务。在事务中,应用执行 JDBC 和/或 JMS 访问。

Camel 组件和应用程序代码

它们代表了执行 JMS/JDBC 操作的代码。Camel 具有自己的高级方法来访问 JMS/JDBC 资源。应用程序代码可以直接使用给定的 API。

JMS Connection Factory

这是 javax.jms.ConnectionFactory 接口,用于获取 javax.jms.Connection 的实例,然后是 javax.jms.Session (或 JMS 2.0 中的 javax.jms.JmsContext )。这可以由应用程序直接使用,或者在 Camel 组件中间接使用,这些组件可以在内部使用 org.springframework.jms.core.JmsTemplate。应用程序代码和 Camel 组件都不需要此连接工厂的详细信息。连接工厂在应用服务器中配置。您可以在 regex 服务器中看到此配置。Fuse 等 OSGi 服务器类似。系统管理员独立于应用程序配置连接工厂。通常,连接工厂实现池功能。

JDBC 数据源

这是 javax.sql.DataSource 接口,用于获取 java.sql.Connection 的实例。与 JMS 一样,此数据源可以直接或间接使用。例如,camel-sql 组件在内部使用 org.springframework.jdbc.core.JdbcTemplate 类。与 JMS 一样,应用程序代码和 Camel 都不需要此数据源的详细信息。配置是在应用服务器内或 OSGi 服务器内完成的,方法是使用 第 4 章 配置 Narayana 事务管理器 中描述的方法。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.