| EOS配置多个数据源
1、 说明:本文档以连接三个不同的数据源做为例子进行说明,三个数据源中,有两个是DB2数据库,有一个是SybaseIQ数据库。
2、 在进行连接多个数据源之前,建议首先测试单个数据源连接是否成功。得到如下图显示后再进行下一步操作。

1、连接的是ciisinfo数据库(DB2数据库)

2、连接的是EOS51数据库(DB2数据库)

3、连接的是anly38数据库(SybseIQ数据库)
3、 单个数据源都连接成功之后,我们就开始着手做连接多个数据源。首先需要修改$\primeton\eosserver\config\下的eosconfig.xml文件,将其中的“是否采用直连方式”(即single)由“true”改为“false”,例如:原内容为:
<group name="DBConnect">
<configValue key="dbType">db2</configValue>
<configValue key="context-initial-factory">
org.jnp.interfaces.NamingContextFactory
</configValue>
<configValue key="dbprovider">jnp://localhost:1099</configValue>
<configValue key="defaultDataSource">java:ProductDataSource</configValue>
<configValue key="TxJNDIName">java:comp/UserTransaction</configValue>
<configValue key="single">true</configValue>
<configValue key="username">ciisinfo</configValue>
<configValue key="password">ciisinfo</configValue>
<configValue key="jdbcurl">jdbc:db2:ciisinfo</configValue>
<configValue key="jdbcdriver">COM.ibm.db2.jdbc.app.DB2Driver</configValue>
</group>
修改后的内容为:
<group name="DBConnect">
<configValue key="dbType">db2</configValue>
<configValue key="context-initial-factory">
org.jnp.interfaces.NamingContextFactory
</configValue>
<configValue key="dbprovider">jnp://localhost:1099</configValue>
<configValue key="defaultDataSource">java:ProductDataSource</configValue>
<configValue key="TxJNDIName">java:comp/UserTransaction</configValue>
<configValue key="single">false</configValue>
<configValue key="username">ciisinfo</configValue>
<configValue key="password">ciisinfo</configValue>
<configValue key="jdbcurl">jdbc:db2:ciisinfo</configValue>
<configValue key="jdbcdriver">COM.ibm.db2.jdbc.app.DB2Driver</configValue>
</group>
4、 其次,修改$\primeton\jboss-3.2.5\server\default\deploy\eos4jboss\下的ProductDataSource-ds.xml文件,将需要的数据源配置上。例如:原内容:
<?xml version="1.0" encoding="GB2312"?>
<datasources>
<local-tx-datasource>
<jndi-name>ProductDataSource</jndi-name>
<connection-url>jdbc:db2:ciisinfo</connection-url>
<driver-class>COM.ibm.db2.jdbc.app.DB2Driver</driver-class>
<connection-property name="user">ciisinfo</connection-property>
<connection-property name="password">ciisinfo</connection-property>
<min-pool-size>5</min-pool-size>
<max-pool-size>100</max-pool-size>
</local-tx-datasource>
</datasources>
修改后的内容为:
<?xml version="1.0" encoding="GB2312"?>
<datasources>
<local-tx-datasource>
<jndi-name>ProductDataSource</jndi-name>
<connection-url>jdbc:db2:ciisinfo</connection-url>
<driver-class>COM.ibm.db2.jdbc.app.DB2Driver</driver-class>
<connection-property name="user">ciisinfo</connection-property>
<connection-property name="password">ciisinfo</connection-property>
<min-pool-size>5</min-pool-size>
<max-pool-size>100</max-pool-size>
</local-tx-datasource>
<local-tx-datasource>
<jndi-name>ProductDataSource1</jndi-name>
<connection-url>jdbc:db2:eos51</connection-url>
<driver-class>COM.ibm.db2.jdbc.app.DB2Driver</driver-class>
<connection-property name="user">db2inst1</connection-property>
<connection-property name="password">db2inst1</connection-property>
<min-pool-size>5</min-pool-size>
<max-pool-size>100</max-pool-size>
</local-tx-datasource>
<local-tx-datasource>
<jndi-name>ProductDataSource2</jndi-name>
<connection-url>jdbc:sybase:Tds:182.119.171.38:2648/anly38</connection-url>
<driver-class>com.sybase.jdbc2.jdbc.SybDataSource</driver-class>
<connection-property name="user">ciisanly</connection-property>
<connection-property name="password">ciisanly</connection-property>
<min-pool-size>5</min-pool-size>
<max-pool-size>100</max-pool-size>
</local-tx-datasource>
</datasources>
可以看出,除了原有的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
|
IPADDRESS
|
NOTE
|
PACKAGE
|
PORT
|
PROTOCOL
|
UNITID
|
|
java:ProductDataSource1
|
127.0.0.1
|
51数据库
|
xx51
|
1099
|
jnp
|
ceshi1
|
|
java:ProductDataSource2
|
127.0.0.1
|
SybaseIQ
|
xxSybaseIQ
|
1099
|
jnp
|
ceshi2
|
7、 由于默认的数据源写明是java:ProductDataSource(eosconfig.xml文件中的defaultDataSource或者管理控制台中的“应用配置”->“数据库配置”->“数据库基本信息”->“默认数据源”都可以说明这一点),因此,我们的构件包xx1不需要做特殊的处理,在展现逻辑调用业务逻辑的时候,“属性设置”如下图:

1、构件包标识“Unit ID”为默认的“0”
构件包xx51就需要进行特殊配置,才能使它调用数据源ProductDataSource1,在展现逻辑调用业务逻辑的时候,“属性设置”如下图:

2、构件包标识“Unit ID”为 “ceshi1”,这个值是在管理控制台
进行“构件包信息配置”的时候人为定义的一个标识
构件包xxSybaseIQ也需要进行特殊配置,才能使它调用数据源ProductDataSource2,在展现逻辑调用业务逻辑的时候,“属性设置”如下图:

3、构件包标识“Unit ID”为 “ceshi2”,这个值是在管理控制台
进行“构件包信息配置”的时候人为定义的一个标识
8、 到这,构件包配置也已经全部完成,我们唯一剩下需要做的就是登陆,然后分别调用写的这三个展现逻辑,根据结果去判断是不是来自不同的数据库的数据即可。只要不抛异常,能查询出数据,就说明已经正常了。 |