ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:155.58KB ,
资源ID:23113257      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23113257.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Jboss数据源配置总结.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Jboss数据源配置总结.docx

1、Jboss数据源配置总结Jboss数据源配置总结2 七月, 2009 (23:31) | JBoss, JCA, JTA, Java EE | By: 黎子最近由于需求,JBoss需要同时访问两个数据库,一个主,一个从,主在很远的地方,从在很近的地方,主只写数据,从只读数据,也就是说从只查询, 所有数据的更改都要在主上进行。想想,这只要在JBoss中配置两个数据源,一个read,一个write,持久单元也定义两个,与数据源对应,由于我们 代码对EntityManage进行了封装,所以inject两个EntityMnage,一个的持久单元是定义是read,一个是write,在所有数 据更新的地方

2、使用write的EntityManage,其它地方使用read就可以了。但是在配置的过程中还是遇到了不少问题,这些问题都是对 Jboss的数据源的各种配置属性不太了解的原因,所以查查Jboss的资源(Jboss的文档总是写的好简单,大多数情况下只说大概)整理如下。在 Jboss的docsexamplesjca中有各种数据库的数据源配置模版。数据源配置文件总是以*-ds.xml文件命名,部署器是jboss- jca.sar中的XSLSubDeployer。这其中的数据源都使用的是local-tx-datasource定义,平常用的时候也没注意它到底是 什么意思,只是简单的修改其中的参数。*-ds

3、.xml文件中的XML结构如下:mbean定义数据源用到的任何MBean服务,并且这些服务要在jboss-service.xml文件中定义local-tx-datasource这是最常用的(至少我是这样),配置LocalTxConnectionManager服务,该ConnectionManager只支持“本地事 务”,确切的说,只支持一个数据源的事务,不支持分布事务,本地不是说数据源指定的数据库在本地,可以在任何地方,但local-tx- datasource不能在一个事务中访问两个数据源,即使这两个数据源配置是一样的。也就是一个事务中不能有两个Connection,如果有两个数据 源,后面

4、打开的数据源无法打开链接,并且出现异常:2009-07-02 12:08:30,892 WARN com.arjuna.ats.jta.logging.loggerI18N com.arjuna.ats.internal.jta.transaction.arjunacore.lastResource.disallow com.arjuna.ats.internal.jta.transaction.arjunacore.lastResource.disallow Adding multiple last resources is disallowed. Current resource is o

5、rg.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource7d3b91b2009-07-02 12:08:30,902 DEBUG org.hibernate.util.JDBCExceptionReporter Cannot open connection ?org.jboss.util.NestedSQLException: Could not enlist in transaction on entering meta-aware object!; nested throwable: (javax.tra

6、nsaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple ); nested throwable: (org.jboss.resource.JBossResourceException: Could not enlist in transaction on entering meta-aware object!; nested throwable: (javax.transaction.SystemExcept

7、ion: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple )at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:94)at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConn

8、ectionProvider.java:47)at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)LocalTxConnectionManager会确保所有的链接都是同一个ManagedConnection(所以两个数据源就是两个 Connection就不行),当有一个链接请示时会检查该链接是否存在,存在则用之包含的元素xa

9、-datasource该数据源配置XATxConnectionManager服务。XA事务也就是通常所说的分布式事务。在一个事务中可以有多个资源(如数据源),但 这些资源必须能够支持XA事务,支持XA事务的数据库在docsexamplesjca目录中都有一个xa-ds.xml文件,但mysql没 有,mysql是支持XA事务的(我的是mysql 5, jdbc驱动是5.1.7,可以用 xa start test,test; xa end test,test; 来测试一下是否支持)XA与JTAXA是Open Group提出的分布式事务模型。JTA是sun提出的java事务API(Java Tra

10、nsaction API),也支持XA,或者说实现了XA,使用JTA可以与任何其它支持XA事务的应用集成。这里有份openlink的文档:但在我测试的时候,我本来想如果我不再需要两个数据库操作,那我是不是只需要修改数据源配置,把读和写都指定到同一个数据库就行了,代码就不用修改 了,但是xa-datasource的两个数据源配置到同样的数据库有异常:2009-07-02 14:25:28,224 DEBUG org.hibernate.jdbc.AbstractBatcher about to open PreparedStatement (open PreparedStatements: 0,

11、 globally: 1)2009-07-02 14:25:28,224 DEBUG org.hibernate.jdbc.ConnectionManager opening JDBC connection2009-07-02 14:25:28,224 DEBUG org.jboss.resource.connectionmanager.IdleRemover internalRegisterPool: registering pool with interval 900000 old interval: 4500002009-07-02 14:25:28,304 WARN com.arjun

12、a.ats.jta.logging.loggerI18N com.arjuna.ats.internal.jta.transaction.arjunacore.xastart com.arjuna.ats.internal.jta.transaction.arjunacore.xastart TransactionImple.enlistResource xa_start caught: XAException.XAER_INVAL for 131075, 27, 25, 1-7f000001:8ab7:4a4c49ba:6e7f000001:8ab7:4a4c49ba:732009-07-0

13、2 14:25:28,305 ERROR STDERR com.mysql.jdbc.jdbc2.optional.MysqlXAException: XAER_INVAL: Invalid arguments (or unsupported command)2009-07-02 14:25:28,307 ERROR STDERR at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.mapXAExceptionFromSQLException(MysqlXAConnection.java:602)2009-07-02 14:25:28,307

14、ERROR STDERR at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.dispatchCommand(MysqlXAConnection.java:585)2009-07-02 14:25:28,307 ERROR STDERR at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.start(MysqlXAConnection.java:525).org.jboss.util.NestedSQLException: Could not enlist in transaction on e

15、ntering meta-aware object!; nested throwable: (javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple ); nested throwable: (org.jboss.resource.JBossResourceException: Could not enlist in transaction on entering meta-aware ob

16、ject!; nested throwable: (javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple )看mysql日志:17 Query SHOW COLLATION17 Query SET NAMES latin117 Query SET character_set_results = NULL17 Query SET autocommit=117 Query SET sql_mo

17、de=STRICT_TRANS_TABLES17 Query SELECT session.tx_isolation17 Query XA START 0x312d37663030303030313a386162373a34613463343962613a6134,0x37663030303030313a386162373a34613463343962613a6139,0x20003.18 Connect rootlocalhost ON test18 Query /* mysql-connector-java-5.1.7 ( Revision: $svn.Revision ) */SELEC

18、T session.auto_increment_increment18 Query SHOW COLLATION18 Query SET NAMES latin118 Query SET character_set_results = NULL18 Query SET autocommit=118 Query SET sql_mode=STRICT_TRANS_TABLES18 Query SELECT session.tx_isolation18 Query XA START 0x312d37663030303030313a386162373a34613463343962613a6134,

19、0x37663030303030313a386162373a34613463343962613a6139,0x20003 JOIN17 Query XA END 0x312d37663030303030313a386162373a34613463343962613a6134,0x37663030303030313a386162373a34613463343962613a6139,0x2000317 Query XA ROLLBACK 0x312d37663030303030313a386162373a34613463343962613a6134,0x37663030303030313a3861

20、62373a34613463343962613a6139,0x20003或许跟两次XA START 0312d37663030303030313a386162373a34613463343962613a6134,037663030303030313a386162373a34613463343962613a6139,020003有关:mysql有一个bug讨论的就是这个问题:Bug #17343 XAConnection doesnt allow second XA START.或许这是个mysql的bug,所以如果又要要求取消两个数据库的话,只有修改一个persistence.xml,把两个

21、persistence-unit的jta-data-source定义成同一个jndi了包含的元素no-tx-datasource该数据源的链接管理噐是NoTxConnectionManager,不支持事务包含的元素ha-local-tx-datasource同local-tx-datasource,区别是提供了一些容错能力允许Jboss从数据库错误中恢复。不是很理解包含的元素ha-xa-datasource同ha-tx-datasource,区别是提供了一些容错能力允许Jboss从数据库错误中恢复。不是很理解包含的元素多个数据源可以配置在同一个*-ds.xml文件中,也可以配置在不同的*-ds

22、.xml文件中jboss 4.2.2GA中没有给出mysql的xa数据源定义,这里给个例子: MySqlXADS com.mysql.jdbc.jdbc2.optional.MysqlXADataSource jdbc:mysql:/127.0.0.1:3306/temp user name password org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter mySQL 各配置元素说明参考文档:http:/www.jboss.org/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/4/html/Connectors_on_JBoss-Configuring_JDBC_DataSources.html#Configuring_JDBC_DataSources-The_non_transactional_DataSource_configuration_schema

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1