- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 SQL Server 有点陌生,并且在连接到它的 Java 应用程序中工作。我找到了这两个著名的 JDBC 驱动程序,一个是 Microsoft 一个,另一个是 jTDS。我正在尝试使用 XA 数据源。
根据 Microsoft 文档,here它说我必须在使用 XA 数据源之前配置服务器。根据这个文档,它要求做的是在服务器中启用 XA。
但我没有看到 jTDS 需要任何此类服务器端修改。 (我找不到任何文档这么说,here)
所以,我的问题是 jTDS 本身如何设法在服务器中启用 XA,而 Microsoft 需要我来完成启用任务?
还是我在这里遗漏了什么?
最佳答案
在深入了解 jTDS 驱动程序分发后找到了答案。它有 README.XA 文件说明了一切。复制以下内容。
XA support in jTDS
==================
This version of jTDS includes a XADataSource class which allows the driver to
be used with J2EE servers that only support XA JDBC connections. The class name
is net.sourceforge.jtds.jdbcx.JtdsDataSource.
By default the driver will emulate distributed transactions fooling the J2EE
environment into believing that two phase commit is supported. This emulation
has the serious drawback that when used in a true distributed environment, the
driver may not be able to commit or rollback when requested by the transaction
manager. In this situation data loss or corruption can occur.
In general this emulation is safe to use when jTDS is the only transactional
resource manager or where the database is read only and never updated.
Emulation is much faster than support for true distributed transactions and
this may be another reason to consider using the driver in this mode if the
risks are understood.
Many J2EE servers provide their own XA emulations that allow the normal
net.sourceforge.jtds.jdbc.Driver to be used. The recommendation is to use the
vendor's emulation, if available, rather than the XADataSource as this
configuration is likely to be more stable.
The driver will support true distributed transactions with MS SQL2000 provided
that the extended stored procedure in JtdsXA.dll is installed in the target
server. To disable the XA emulation and use the stored procedure, set the
connection property "xaemulation" to "false". This implementation is very
immature and cannot be recommended for production use at this stage. It may
however be useful for development when true two phase commit support is
required.
Another connection property, "LogFile" has been added to JtdsDataSource which
allows the jTDS logging to be enabled in a J2EE environment. The parameter
value specifies the output file path for the logging information.
Two example configurations for the popular JBoss server are included in the
conf directory. One configuration uses the Driver interface and the server's XA
emulation the other shows how to use the driver's XA support in either emulated
or real mode.
Installing JtdsXA.dll
=====================
For true distributed transaction support JtdsXA.dll has to be installed on the
server. The installation procedure consists of two simple steps:
1. Copy JtdsXA.dll from the XA directory to the <SQL_Server_Root>/binn
directory of the SQL Server installation.
2. From the command prompt run the following command in the directory where
you extracted jTDS:
isql -Usa -P<sa_password> -S<server_name_or_ip> -iXA\instjtds.sql
Alternatively, use any DB tool (such as Query Analyzer or any JDBC tool) to
execute the script within the 'master' database. Don't forget to log in as
'sa'.
This will install the xp_jtdsxa extended stored procedure, used by jTDS to
provide true distributed transacition support.
关于sql-server - Microsoft JDBC 驱动程序和 jTDS JDBC 驱动程序中的 XA 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18163406/
使用此代码我无法获得 xa 或非 xa 的连接 DatabaseMetaData dbmd = con.getMetaData(); dbmd.getDriverName(); System.out.
我们可以在同一存储库类中使用 xa 和非 xa 资源的组合吗?如果可以的话,有人可以解释一下它的行为方式以及交易将如何进行吗?目前,我们在存储库中使用 2 个 xa 资源和 2 个非 xa 资源。我们
我试图了解 Java XA 数据源的使用。但我仍然不知道何时使用它,何时不使用它。 我读到当我们使用两个数据库时使用 XA 数据源。但我不确定两个数据库是什么意思。 例如: 我有两层类(Service
我们在不需要的情况下使用 XA JDBC 驱动程序(不参与分布式事务的只读工作)。 只是想知道是否有任何已知的性能提升必须切换到非 XA JDBC 驱动程序 - 如果没有,它可能不值得切换? FWIW
在我的 Spring Boot 应用程序中,我有以下场景: 从 JMS 队列读取消息 利用数据做一些事情。 对 Oracle 数据库执行 JDBC 插入 如果在任何阶段发生异常,我希望确保消息不会丢失
我对 XA 和非 XA 世界还很陌生。我的要求是从队列中读取一条消息,直到没有消息为止。对于队列中的每条消息,转到数据库并执行一些事务,例如选择、插入、更新。 是否可以使用非 XA 数据源实现此目的?
问题 我正在尝试使用geopandas绘制每个地区的犯罪数据。我已合并 shapefile 数据和犯罪数据: merged = merged[['geometry','Extortion']] mer
我使用两个单独的数据源。使用 EJB3.0,我使用的是 non-Xa-datasources。我遇到这样的错误:无法打开连接,状态感知对象。这是因为在一个无状态 bean 中我调用了第二个无状态 be
oracle.jdbc.xa.OracleXADataSource 和 oracle.jdbc.xa.client.OracleXADataSource 黑白有什么区别 ,我知道两者都是 XA 兼容的
在我们的新项目中,我们希望实现涉及 jpa (mysql) 和消息总线 (rabbitmq) 的事务 我们开始使用 mysql 和 rabbitmq(通过 spring amqp 模块)使用 spri
在 mysql 重新启动时提交 XA 待处理事务时,出现以下错误。请帮助我解决这个错误。 mysql> XA RECOVER CONVERT XID; +----------+------------
我将两个 XA 数据源用于 EAP7 和 MySQL。应用程序正在运行,但在调用驾驶舱后抛出了很多异常。 7.5 版中的 Camunda 两者的配置相同。 (由红帽 EAP Docker 镜像生成)
有谁知道为什么 Mysql 需要可序列化隔离级别来实现 XA 事务的 ACID 属性,或者如果使用可重复读取和 XA 会丢失什么? However, for a distributed transac
假设我们有一个数据库(例如 Oracle)和一个 JMS 提供者(例如 HornetQ)参与 XA 事务。一条消息被发送到一个 JMS 队列,并且一些数据在同一个分布式事务中保存在数据库中。事务提交后
我们认为这是一个相当常见的 XA 用例: 从队列中读取消息 将一些数据写入数据库 向出队列(与入队列不同)写入响应消息 然而,我们还需要一种方法来处理内部错误和有害消息。我们想到的控制流程是这样的:
我想在 2 个不同位置的数据库中分离 2 个表...因此 1 个 MySQL 数据库位于一个数据中心,另外 1 个位于另一个数据中心。 我在 Wildfly 中使用普通数据源,并使用 JPA 连接到
我的 Websphere 应用程序有 3 个数据源。其中两个是 XA,另一个是非 XA。 我通过使用 @transactional 注释对方法进行注释,使 Java 方法具有事务性。 在该方法中,执行
背景知识:我遇到了一个问题,我越深入地研究它,就越发现 XA 似乎是正确的解决方案。我有一个“缓存”,它基本上是一个内存数据结构(树形结构),用于保存一些处理过的信息。使用Spring,我们设置了数据
我有一个关于 this 的问题 假设我有一些联系 $conn_site = mysqli_connect("localhost", "us", "ps"); mysqli_select_db("sit
我在 Mint 18 上使用 MySQL 5.7.19-0ubuntu0.16.04.1。我发现当我准备 XA 事务时,然后服务器崩溃了。服务重启后,我就不能再碰交易了。它仍然锁定了 table 。
我是一名优秀的程序员,十分优秀!