【Java精品源码栏目提醒】:网学会员为广大网友收集整理了,【精品】20060803_EOS连接多个数据源的配置全过程 - 其它资料,希望对大家有所帮助!
EOS 数据库连接方式介绍,如何配置多数据源【适用范围】EOS5.x【内容】EOS 平台通过标准的 JDBC 连接数据库,不加载任何额外的处理。
共提供以下两种数据库连接方式:一、单连接EOS Server 通过 eosconfig.xml 中配置的 JDBC 连接访问单个数据库,此时,配置中DBConnect/single 的值为 true;二、通过应用服务器的数据源(DATASOURCE)方式这种方式允许 EOS Server 同时连接单个或多个不同类型的数据库。
1)这时,eosconfig.xml 中 DBConnect/single 的值为 false。
注意,这里配置的数据库仍然要与默认的数据源 ProductDataSource 保持一致,因为:当执行的业务逻辑(biz automata)需要访问非默认的数据源或者被分布部署在其它机器上时,其中的一个操作步骤是在 EOS 管理控制台(eosmgr)—〉应用配置—〉构件包信息配置中添加一条记录(访问默认的数据源或者非分布式部署都不需要) ,实际上就是往 EOS 的系统表(EOSEjbRegister)中添加数据。
EOS Server 仍然要先通过 eosconfig.xml 中配置的 JDBC 连接访问系统表 EOSEjbRegister 的数据,然后根据这个业务逻辑所在的包(package)名称和 unitID,从 EOSEjbRegister 找到对应的 IP 地址、端口号、JNDI 访问协议和数据源名称(DATASOURCENAME)来获得相应的数据库连接或者找到这个业务逻辑来执行 (注意: 协议类型通常根据应用服务器的类型确定);2)Ⅰ、Jboss 环境,在jboss-3.2.5serverdefaultdeployeos4jboss 中的 ProductDataSource-ds.xml文件中配置数据源;Ⅱ、Weblogic 或 Websphere 环境要进入它们的控制台配置。
EOS 安装好之后,已经默认在应用服务器上配置了一个默认的数据源 ProductDataSource;Ⅲ、Tomcat 环境(EOS5.3 才支持) ,在eosserverconfigeosconfig.xml 中的最下面配置数据源。
其中,file 的配置是指默认的 jdbc driver 的路径,一定要和数据库匹配;如果是多数据源(同一实例下多 schema 情况)则请参考下面例子。
tomcat 版本不支持异质数据库(类似于 oracledb2;或者都是 oracle 数据库,但是数据库实例不一样的也不支持) : d:/primeton2817/jakarta-tomcat-5.0.28/shared/lib/ojdbc14.jar ProductDataSource oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:127.0.0.1:1521:EOS eos2590 eos2590 true ProductDataSource1 oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:127.0.0.1:1521:EOS eos2591 eos2591 true在 jboss 平台中需要手工修改配置文件:jboss-3.2.5serverdefaultdeployeos4jboss 中的 ProductDataSource-ds.xml 的配置文件中增加一个 sybase/db2 等数据库的数据源就可以了在 weblogic 和 websphere 中只要按照创建数据源的向导创建一个新的数据源就可以。
配完数据源后,进入 eosmgr-“应用配置” 将“数据库配置“的“单一”模式的去掉,然后修改“构件包信息配置”中增加一个构件包配置信息如:构件包:pkg构件包标识:0用户 ip:127.0.0.1端口:1099协议:jnp数据源:
java:ProductDataSource2注意:数据源的配置和应用服务器的协议相关,数据源的配置中在 jboss 环境中数据源的名称前需要加上
java:,websphere 和 weblogic 不用如果需要在多异质的数据库之前保证数据库事务,配置的数据源的方式需要是 XA 模式1、 说明:本文档以连接三个不同的数据源做为例子进行说明,三个数据源中,有两个是 DB2 数据库,有一个是 SybaseIQ 数据库。
2、 在进行连接多个数据源之前,建议首先测试单个数据源连接是否成功。
得到如下图显示 后再进行下一步操作。
1、连接的是 ciisinfo 数据库DB2 数据库2、连接的是 EOS51 数据库DB2 数据库 3、连接的是 anly38 数据库SybseIQ 数据库3、 单个数据源都连接成功之后,我们就开始着手做连接多个数据源。
首先需要修改 (即 primetoneosserverconfig下的 eosconfig.xml 文件,将其中的“是否采用直连方式” single)由“true”改为“false” ,例如:原内容为: db2 org.jnp.interfaces.NamingContextFactory jnp://localhost:1099
java:ProductDataSource
java:comp/UserTransaction true ciisinfo ciisinfo jdbc:db2:ciisinfo COM.ibm.db2.jdbc.app.DB2Driver修改后的内容为: db2 org.jnp.interfaces.NamingContextFactory jnp://localhost:1099
java:ProductDataSource
java:comp/UserTransaction false ciisinfo ciisinfo jdbc:db2:ciisinfo COM.ibm.db2.jdbc.app.DB2Driver4、 其 次 , 修 改 primetonjboss-3.2.5serverdefaultdeployeos4jboss 下 的 ProductDataSource-ds.xml 文件,将需要的数据源配置上。
例如:原内容:ProductDataSourcejdbc:db2:ciisinfoCOM.ibm.db2.jdbc.app.DB2Driverciisinfociisinfo5100修改后的内容为:ProductDataSourcejdbc:db2:ciisinfoCOM.ibm.db2.jdbc.app.DB2Driverciisinfociisinfo5100ProductDataSource1jdbc:db2:eos51COM.ibm.db2.jdbc.app.DB2Driverdb2inst1db2inst15100ProductDataSource2jdbc:sybase:Tds:182.119.171.38:2648/anly38com.sybase.jdbc2.jdbc.SybDataSourceciisanlyciisanly5100可以看出,除了原有的 ProductDataSource,我们又配置了两个数据源,它们的 JNDI 名分别为 ProductDataSource1 和 ProductDataSource2。
5、 到这里,连接多个数据源的配置已经成功,剩下的事情,就是需要去检验我们的配置是 否正确。
我们新建了三个构件包,包名分别为:xx1(连接 ciisinfo 数据库) 、xx51(连 接 EOS51 数据库) 、xxSybaseIQ(连接 anly38 数据库) 1、构件包 xx1 中的数据实体是 ciisinfo 库中的 2、构件包 xx51 中的数据实体是 EOS51 库中的 3、构件包 xxSybaseIQ 中的数据实体是 anly38 库中的6、 三个构件包的程序都已经写好之后,由于我们需要测试的三个构件包中,xx1 是连接数 据源 ProductDataSource 的,而 xx51 是连接数据源 ProductDataSource1 的,xxSybaseIQ 又是连接数据源 ProductDataSource2 的。
因此,在管理控制台中的“应用配置”-“构 件包信息配置”中需要进行如下配置: 由于构件包 xx1 使用的是数据源 ProductDataSource,它是默认数据源,因此构件包 xx1 不需要进行构件包信息配置,当然,进行配置也不会有问题。
配置完成之后,可以去数 据中检查一下表 EOSEJBREGISTER,就会发现表中多了两条记录,如下:DATASOURCENAME IPADDRES NOTE PACKAGE POR PROTOCO UNITI S T L Djava:ProductDataSource 127.0.0.1 51 数 据 xx51 1099 jnp ceshi11 库
java:ProductDataSource 127.0.0.1 SybaseI xxSybaseI 1099 jnp ceshi22 Q Q7、 IPADDRESS 指的是应用服务的 IP 而不是数据库的,PORT 端口是指应用服务的端口, PROTOCOL 是根据应用服务选择的协议,JNP 是 Jboss 应用服务。
8、 由 于 默 认 的 数 据 源 写 明 是
java:ProductDataSource ( eosconfig.xml 文 件 中 的 defaultDataSource 或者管理控制台中的“应用配置”-“数据库配置”-“数据库基本 信息”-“默认数据源”都可以说明这一点) ,因此,我们的构件包 xx1 不需要做特殊 的处理,在展现逻辑调用业务逻辑的时候, “属性设置”如下图: 1、构件包标识“Unit ID”为默认的“0” 构件包 xx51 就需要进行特殊配置,才能使它调用数据源 ProductDataSource1,在展现逻辑调用业务逻辑的时候,“属性设置”如下图: ,这个值是在管理控制台 2、构件包标识“Unit ID”为 “ceshi1” 进行“构件包信息配置”的时候人为定义的一个标识 构件包 xxSybaseIQ 也需要进行特殊配置,才能使它调用数据源 ProductDataSource2,在展现逻辑调用业务逻辑的时候,“属性设置”如下图: ,这个值是在管理控制台 3、构件包标识“Unit ID”为 “ceshi2” 进行“构件包信息配置”的时候人为定义的一个标识9、 到这,构件包配置也已经全部完成,我们唯一剩下需要做的就是登陆,然后分别调用写 的这三个展现逻辑,根据结果去判断是不是来自不同的数据库的数据即可。
只要不抛异 常,能查询出数据,就说明已经正常了。
http://120.0.2.3:7001/console用户名:system 密码:eosversion创建另一个数据weblogic 相关配置参照上面内容重启 EOS 服务和 weblogic 服务.