环境:JBoss EAP 6.4.0
需求是这样的:
(1)在Domain Mode下,定义在server group 1中的server需要访问数据库demoDB1;定义在server group 2中的server需要访问数据库demoDB2。demoDB1和demoDB2只是数据库的schema不同,其它的都一样。
(2)在Domain Mode下,定义在server group 1中的server 由apache httpd 1 做负载均衡;定义在server group 2中的server 由apache httpd 2 做负载均衡。
如果在使用domain.sh启动EAP 时,使用 -Dproperty=value的形式或者--properties=[property_file]的形式固然可以,但这不是一个在生产环境推荐的方法,并且跟客户的需求有一点出入——客户是希望根据不同的server-group定义不同的环境变量。
以数据库为例说明:
1. 修改domain.xml,找到server-groups,修改如下:
<server-groups>
<server-group name="main-server-group" profile="full">
<jvm name="default">
<heap size="1000m" max-size="1000m"/>
<permgen max-size="256m"/>
</jvm>
<socket-binding-group ref="full-sockets"/>
<system-properties>
<property name="fullprofile.derbydb.name" value="demoDB1"/>
</system-properties>
</server-group>
<server-group name="other-server-group" profile="full-ha">
<jvm name="default">
<heap size="1000m" max-size="1000m"/>
<permgen max-size="256m"/>
</jvm>
<socket-binding-group ref="full-ha-sockets"/>
<system-properties>
<property name="fullhaprofile.derbydb.name" value="demoDB2"/>
</system-properties>
</server-group>
</server-groups>
注意,这里在main-server-group profile="full" 中定义了环境变量fullhaprofile.derbydb.name,值为demoDB1;在other-server-group profile="full-ha" 中定义了环境变量fullhaprofile.derbydb.name,值为demoDB2;
2. 在full profile中,增加DemoDataSource1的定义,其中connection url部分引用了环境变量${fullprofile.derbydb.name:demoDBXXX}
<datasource jndi-name="java:jboss/datasources/DemoDataSource1" pool-name="DemoDataSource1" enabled="true" use-ccm="false">
<connection-url>jdbc:derby://localhost:1527/${fullprofile.derbydb.name:demoDBXXX}</connection-url>
<driver>org.apache.derby</driver>
<security>
<user-name>demo</user-name>
<password>demo</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
为了测试起见,demoDBXXX实际是不存在的数据库schema,这样如果环境变量没有引用成功会报错。
3. 在full-ha profile中,增加DemoDataSource2的定义,其中connection url部分引用了环境变量${fullhaprofile.derbydb.name:demoDBXXX}
<datasource jndi-name="java:jboss/datasources/DemoDataSource2" pool-name="DemoDataSource2" enabled="true" use-ccm="false">
<connection-url>jdbc:derby://localhost:1527/${fullhaprofile.derbydb.name:demoDBXXX}</connection-url>
<driver>org.apache.derby</driver>
<security>
<user-name>demo</user-name>
<password>demo</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
为了测试起见,demoDBXXX实际是不存在的数据库schema,这样如果环境变量没有引用成功会报错。
4. 分别启动 machine1、 machine2、 machine3,在management Console中测试两个数据库连接。
确认两个数据库依然可以连接成功。
需求是这样的:
(1)在Domain Mode下,定义在server group 1中的server需要访问数据库demoDB1;定义在server group 2中的server需要访问数据库demoDB2。demoDB1和demoDB2只是数据库的schema不同,其它的都一样。
(2)在Domain Mode下,定义在server group 1中的server 由apache httpd 1 做负载均衡;定义在server group 2中的server 由apache httpd 2 做负载均衡。
如果在使用domain.sh启动EAP 时,使用 -Dproperty=value的形式或者--properties=[property_file]的形式固然可以,但这不是一个在生产环境推荐的方法,并且跟客户的需求有一点出入——客户是希望根据不同的server-group定义不同的环境变量。
以数据库为例说明:
1. 修改domain.xml,找到server-groups,修改如下:
<server-groups>
<server-group name="main-server-group" profile="full">
<jvm name="default">
<heap size="1000m" max-size="1000m"/>
<permgen max-size="256m"/>
</jvm>
<socket-binding-group ref="full-sockets"/>
<system-properties>
<property name="fullprofile.derbydb.name" value="demoDB1"/>
</system-properties>
</server-group>
<server-group name="other-server-group" profile="full-ha">
<jvm name="default">
<heap size="1000m" max-size="1000m"/>
<permgen max-size="256m"/>
</jvm>
<socket-binding-group ref="full-ha-sockets"/>
<system-properties>
<property name="fullhaprofile.derbydb.name" value="demoDB2"/>
</system-properties>
</server-group>
</server-groups>
注意,这里在main-server-group profile="full" 中定义了环境变量fullhaprofile.derbydb.name,值为demoDB1;在other-server-group profile="full-ha" 中定义了环境变量fullhaprofile.derbydb.name,值为demoDB2;
2. 在full profile中,增加DemoDataSource1的定义,其中connection url部分引用了环境变量${fullprofile.derbydb.name:demoDBXXX}
<datasource jndi-name="java:jboss/datasources/DemoDataSource1" pool-name="DemoDataSource1" enabled="true" use-ccm="false">
<connection-url>jdbc:derby://localhost:1527/${fullprofile.derbydb.name:demoDBXXX}</connection-url>
<driver>org.apache.derby</driver>
<security>
<user-name>demo</user-name>
<password>demo</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
为了测试起见,demoDBXXX实际是不存在的数据库schema,这样如果环境变量没有引用成功会报错。
3. 在full-ha profile中,增加DemoDataSource2的定义,其中connection url部分引用了环境变量${fullhaprofile.derbydb.name:demoDBXXX}
<datasource jndi-name="java:jboss/datasources/DemoDataSource2" pool-name="DemoDataSource2" enabled="true" use-ccm="false">
<connection-url>jdbc:derby://localhost:1527/${fullhaprofile.derbydb.name:demoDBXXX}</connection-url>
<driver>org.apache.derby</driver>
<security>
<user-name>demo</user-name>
<password>demo</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
为了测试起见,demoDBXXX实际是不存在的数据库schema,这样如果环境变量没有引用成功会报错。
4. 分别启动 machine1、 machine2、 machine3,在management Console中测试两个数据库连接。
确认两个数据库依然可以连接成功。
没有评论:
发表评论