jboss7 数据源-关于JBOSS AS7 多个数据源配置问题

问题描述

关于JBOSS AS7 多个数据源配置问题

我在JBOSS7的standalone.xml配置文件中配置了两个数据源,JAVA代理连接第一数据源能否正常连接,并能否正常访问到数据库的数据,但连接另外一个数据源时就报错,报错信息:ARJUNA012140: Adding multiple last resources is disallowed. Trying to add LastResourceRecord

我使用的JDBC连接。

请各位大侠帮忙指点下,多个数据源在JBOSS7如何使用,谢谢!

具体配置和代码如下:
standalone.xml数据源配置:

jdbc:oracle:thin:@134.111.9.81:1521:myoracle
oracle

ptkintf
abc_110

jdbc:oracle:thin:@134.111.10.156:1521:feeoracle
oracle

feeintf
fee_intf_07657

oracle.jdbc.OracleDriver
oracle.jdbc.xa.client.OracleXADataSource

JAVA代码:
public class MyEjb3LocalImpl implements MyEjb3Intf{
@Override
public String callMyejb3(String str) {
queryPTKDbTest();
queryFeeDbTest();
return "SUCCESS";
}

private void queryPTKDbTest(){
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    try{
        DataSource dataSource = (DataSource)ContextUtil.getBean("java:jboss/datasources/PTKtestDS");
        conn = dataSource.getConnection();;
        stmt = conn.createStatement();
        String sql = "select t.province, t.area_name from area t where t.area_code = '0591'";
        rs = stmt.executeQuery(sql);
        if(rs.next()){
            System.out.println(rs.getString("province"));
            System.out.println(rs.getString("area_name"));
        }
    }catch(SQLException e){
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        if(rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

private void queryFeeDbTest(){
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    try{
        DataSource dataSource = (DataSource)ContextUtil.getBean("java:jboss/datasources/FeeDS");
        conn = dataSource.getConnection();;
        stmt = conn.createStatement();
        String sql = "select t.CZ_NBR, t.CZ_AMOUNT from bill_591.sms_notify t where t.CZ_TIME > (sysdate - 5/24/60/60)";
        rs = stmt.executeQuery(sql);
        if(rs.next()){
            System.out.println(rs.getString("CZ_NBR"));
            System.out.println(rs.getInt("CZ_AMOUNT"));
        }
    }catch(SQLException e){
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        if(rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

报错信息:
09:46:30,107 WARN com.arjuna.ats.arjuna ARJUNA012140: Adding multiple last resources is disallowed. Trying to add LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@3b96bb[connectionListener=1fe0dcb connectionManager=24e39f warned=false currentXid=< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffff8682fe53:-4a97a196:541b8af0:c, node_name=1, branch_uid=0:ffff8682fe53:-4a97a196:541b8af0:12, subordinatenodename=null, eis_name=unknown eis name >])), but already have LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@ca677f[connectionListener=15c90f4 connectionManager=360733 warned=falsecurrentXid=< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffff8682fe53:-4a97a196:541b8af0:c, node_name=1, branch_uid=0:ffff8682fe53:-4a97a196:541b8af0:11, subordinatenodename=null, eis_name=unknown eis name >]))
09:46:30,123 ERROR stderr java.sql.SQLException: javax.resource.ResourceException: IJ000457: Unchecked throwable in managedConnectionReconnected() cl=org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@1fe0dcb[state=NORMAL managed connection=org.jboss.jca.adapters.jdbc.local.LocalManagedConnection@1826710 connection handles=0 lastUse=1411091190123 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@3c8087 pool internal context=SemaphoreArrayListManagedConnectionPool@eec35c[pool=FeeDS] xaResource=LocalXAResourceImpl@3b96bb[connectionListener=1fe0dcb connectionManager=24e39f warned=false currentXid=null] txSync=null]
09:46:30,123 ERROR stderr at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:137)
09:46:30,123 ERROR stderr at com.ptk.impl.MyEjb3LocalImpl.queryFeeDbTest(MyEjb3LocalImpl.java:75)
09:46:30,123 ERROR stderr at com.ptk.impl.MyEjb3LocalImpl.callMyejb3(MyEjb3LocalImpl.java:21)
09:46:30,123 ERROR stderr at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
09:46:30,123 ERROR stderr at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
09:46:30,123 ERROR stderr at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
09:46:30,123 ERROR stderr at java.lang.reflect.Method.invoke(Method.java:597)
09:46:30,123 ERROR stderr at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72)
09:46:30,123 ERROR stderr at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
09:46:30,123 ERROR stderr at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
09:46:30,123 ERROR stderr at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36)

解决方案

贴出来的东西乱七八糟的,也不整理一下,懒得回答

时间: 2024-09-20 00:23:01

jboss7 数据源-关于JBOSS AS7 多个数据源配置问题的相关文章

JBoss AS7配置MySQL数据源

AS7默认的数据源是H2,虽然H2方便,但是一般的生产环境都是MySQL.ORACLE.SQLServer居多,本文描 述如何在AS7配置MySQL数据源. 根据Jboss社区的文档,配置一个新的数据源大致分为两步.描述如 下: 加入JDBC驱动文件 在JBOSS_HOME/modules目录下加入如下目录结构及文件: JBOSS_HOME +- modules +- com +- mysql +- main +- module.xml +- mysql-connector-java-5.1.1

数据源-Netbeans7.4 Jboss7.1 MySQL5.6从数据表生成实体类

问题描述 Netbeans7.4 Jboss7.1 MySQL5.6从数据表生成实体类 如标题中的环境中,想从数据库表生成实体类表,NetBeans已经可以连接数据库里的表, ,总是出现如下图所示的问题,(Jboss里也已经添加了该数据源),总是提示"缺少数据源的驱动程序类名"

在JBoss中配置多个数据库和数据源

JBoss是一款非常强大的J2EE应用程序服务器,但是这种强大的功能也带来了复杂性.本文作者Marcus Zarra分析了如何在JBoss中配置多个数据库以及数据源. 配置数据源 JBoss的默认安装过程总共有三种配置选项:所有的(all).默认的(default)和最小的(minimal).如果你第一次启动JBoss服务器的时候没有附带任何参数,它自然就运行了默认配置.如果需要运行其它的配置,就必须使用-C参数运行启动脚本,如下所示: ${JBOSS.ROOT}/bin/run.sh -c m

在Jboss4.0下对MySql数据源的设置方法

在Jboss4中使用MySQL的数据源的设置方法: 一 把MySQL的JDBC驱动放到CLASSPATH中.同样,把它复制到/server/default/lib目录下 二 把/docs/examples/jca/mysql-ds.xml复制到/server/default/deploy目录下.修改mysql-ds.xml文件,设置<driver-class/>为 com.mysql.jdbc.Driver再把<connection-url/>设置为 jdbc:mysql://&l

Spring实现动态数据源,支持动态添加、删除和设置权重及读写分离

当项目慢慢变大,访问量也慢慢变大的时候,就难免的要使用多个数据源和设置读写分离了. 在开题之前先说明下,因为项目多是使用Spring,因此以下说到某些操作可能会依赖于Spring. 在我经历过的项目中,见过比较多的读写分离处理方式,主要分为两步: 1.对于开发人员,要求serivce类的方法名必须遵守规范,读操作以query.get等开头,写操作以update.delete开头. 2.配置一个拦截器,依据方法名判断是读操作还是写操作,设置相应的数据源. 以上做法能实现最简单的读写分离,但相应的也

浅谈实际开发中数据源在JDBC中的应用

数据|数据源 数据源在JDBC中的应用众所周知,JDBC(Java数据库连接)是Java2企业版的重要组成部分.它是基于SQL层的API.通过把SQL语句嵌入JDBC接口的方法中,用户可以通过Java程序执行几乎所有的数据库操作. JDBC只提供了接口,具体的类的实现要求数据库的设计者完成.通过生成这些接口的实例,即使对于不同的数据库,Java程序也可以正确地执行SQL调用.所以对于程序员来说,不必把注意力放在如何向数据库发送SQL指令,因为程序员需要了解和用到的只是JDBC的接口,只有在极少数

几种注册 ODBC数据源的方法

odbc|数据|数据源 几种注册 ODBC数据源的方法 国防科大 丁 浩 ODBC(Open Database Connectivity,开放式数据库互连)是一种应用程序接口 (API) 规范.它定义了一个标准例程集,使用它们应用程序可访问数据源中的数据.应用程序通过引用 API 的函数可以直接使用 ODBC,或利用数据访问对象 (DAO) 或远程数据对象 (RDO) 来使用ODBC.但是,在实现ODBC时,我们必须首先配置ODBC环境,进行数据源的注册,这样才能在对数据库进行编程时,对数据源进

搞定C# 建立ODBC数据源

odbc|数据|数据源 你观察就可以发现用windows控制面板的工具建立ODBC数据源就是在注册表中建立相应的值.下面的函数可以建立SQL Server的ODBC数据源!可以自己观察注册表,修改一部分值!/// <summary>        /// 注册odbc数据源        /// </summary>        /// <param name="DsnName">ODBC数据源名称,这里要与SQL Server数据库名保持一致&l

vb神童教程(续)--ODBC数据源简介

本文欢迎非商业用途的转载,但需要注明出自"编程入门网"及相应的网址链接. ODBC(开放式数据库连接)是一种应用程序的接口(API).这种接口提供了独立于任何的数据管理系统编写应用程序的能力.OCBC通过ODBC驱动程序提供了对不同的数据库供应商的一组应用程序接口来给特殊的数据库管理系统(DBMS).用户的应用程序使用这组API来调度ODBC驱动程序.然后驱动程序通过SQL语句同DBMS发生联系. 下面我们开始介绍ODBC数据源.在"我的电脑"中打开"控制