本文介绍JBOSS EAP 6.2中Oracle数据源的配置方式。结合之前JBOSS EAP 6.2新功能,本文初识JBOSS模块申明式容器这一特性。

模块申明式容器:JBOSS EAP不再有lib的概念,一切都是module。无论是系统调用的lib,用户编制的lib,或者应用程序引用到的第三方lib都以模块的方式构建起来,并在使用的地方申明具体使用哪个模块。

以下分三步介绍数据源的配置:

  1. 将数据库驱动构建为JBOSS内的模块
  2. 为JBOSS容器加载驱动模块
  3. 为JBOSS容器配置数据源

1、将数据库驱动构建为JBOSS内的模块

数据源驱动程序是JAVA获得与数据源连接的接口,可以理解为上面提到的系统调用的lib,所以我们需要将数据源驱动程序构建为一个JBOSS模块,构建分两个步骤:

  1. 将资源放置到正确的位置:%JBOSS_EAP_HOME%/modules目录下
  2. 将资源配置为一个JBOSS模块:module.xml文件的编写

接下来以Oracle为例,构建一个Oracle driver module

1. 创建目录%JBOSS_EAP_HOME%/modules/com/oracle/main/,存放oracle驱动程序:ojdbc14.jar (对应Oracle 10g)

2. 在main中创建moduel.xml配置文件

<?xmlversion="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.oracle">
<resources>
<resource-rootpath="ojdbc14.jar"/>
</resources>
<dependencies>
<modulename="javax.api"/>
<modulename="javax.transaction.api"/>
</dependencies>
</module>

其中:

<module>指明这个模块的名称com.oracle供其他模块设置依赖;

<resource>指明模块的资源名称,资源要与module.xml在同一个文件夹下;

<dependencies>指明该模块所依赖的模块,如module.xml中指明的两个模块也是像构建这恶搞Oracle数据源模块一样实现的,它们可以%JBOSS_EAP_HOME%/modules下找到:

jboss-eap-6.1\modules\system\layers\base\javax\api\main
jboss-eap-6.1\modules\system\layers\base\javax\transaction\api\main

【Module配置小扩展】

  • 资源可以是jar包,也可以是一个文件夹,如系统默认配置:jboss-eap-6.2\modules\system\layers\base\sun\jdk\main
  • 严格的讲只要配置文件和资源在一起就行,只要是modules目录下,具体在什么位置都没关系,但需要注意的是<module>标签中的name要与资源所在的modules下的目录相匹配。
  • module.xml可以映射别的已有的module,如系统默认配置:jboss-eap-6.2\modules\system\layers\base\org\apache\commons\logging\main\module.xml

2、为JBOSS容器加载驱动模块

JBoss容器的配置文件在%JBOSS_EAP_HOME%\standalone\configuration中,集群的配置文件在E:\server\jboss-eap-6.1\domain\configuration中

我们主要看单个主机的%JBOSS_EAP_HOME%\standalone\configuration\standalone.xml





打开standalone.xml首先看到的就是如:





 

  <extensions>
<extension module="org.jboss.as.clustering.infinispan"/>
<extension module="org.jboss.as.connector"/>
<extension module="org.jboss.as.deployment-scanner"/>
<extension module="org.jboss.as.ee"/>
<extension module="org.jboss.as.ejb3"/>
<extension module="org.jboss.as.jaxrs"/>
<extension module="org.jboss.as.jdr"/>
<extension module="org.jboss.as.jmx"/>
<extension module="org.jboss.as.jpa"/>
<extension module="org.jboss.as.jsf"/>
<extension module="org.jboss.as.logging"/>
<extension module="org.jboss.as.mail"/>
<extension module="org.jboss.as.naming"/>
<extension module="org.jboss.as.pojo"/>
<extension module="org.jboss.as.remoting"/>
<extension module="org.jboss.as.sar"/>
<extension module="org.jboss.as.security"/>
<extension module="org.jboss.as.threads"/>
<extension module="org.jboss.as.transactions"/>
<extension module="org.jboss.as.web"/>
<extension module="org.jboss.as.webservices"/>
<extension module="org.jboss.as.weld"/>
</extensions>

每一项都是模块module,他们对应的都是如第一步配置的数据源驱动模块一样的资源,standalone.xml为容器指明并加载这些需要用到的默认的资源。





简单说下standalone有四个部分:

  • extensions:加载容器默认使用的模块
  • manangement:配置容器管理
  • profile:容器使用的子系统配置
  • interfaces:容器对外可接入性的配置
  • socket-binding-group:容器中的服务与机器端口的绑定

后续的文章中再回头介绍standalone配置文件的常用配置,这里就不过多赘述。





数据源属于容器的子系统,所以在profile中<subsystem xmlns="urn:jboss:domain:datasources:1.1">子标签下加载

<datasource>配置数据源,在第三步中要用到

<drivers>配置数据源驱动





因为不知道会用到什么样的数据源,所以在之前默认加载的extensions中没有任何模块指定这个数据源驱动的module。我们需要在<drivers>中加载,oracleDS为例可添加如下标签,

<driver name="oracle" module="com.oracle">
<driver-class>oracle.jdbc.OracleDriver</driver-class>
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
</driver>

其中,<driver>标签中的module属性就是我们在第一步中创建的module.xml中的name:

<module xmlns="urn:jboss:module:1.0" name="com.oracle">

*这里实际上配了两个driver,一个是一般dataSource的一个是xa-dataSource,xa-dataSource在本文最后有简要补充。

3、为JBOSS容器配置数据源

最后步来配置数据源,也就是<datasource>标签,因为都是基础配置,所以直接上代码:

 <datasource jta="true"jndi-name="java:jboss/datasource/OracleDS"pool-name="OracleDS" enabled="true"use-ccm="false">
<connection-url>jdbc:oracle:thin:@192.168.*.*:1521:orcl</connection-url>
<driver-class>oracle.jdbc.OracleDriver</driver-class>
<driver>oracle</driver>
<security>
<user-name>yaoyu</user-name>
<password>yaoyu</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>

其中<driver>中的部分对应的就是之前第二步中<driver>的name

<driver name="oracle"module="com.oracle">





Oracle的数据源这样就配好了。





测试的话可以打开Web-console中的DataSource向中的Test Connection来尝试连接该数据源。

*扩展:XA-DataSource的配置

界面上能看到DataSource 和XA-DataSource,这其实是两种数据源的配置方式,XA是“Globle Transaction”的意思,更具体的参照http://www.blogjava.net/Jeffery001/archive/2010/08/30/330054.html。

需要配XA-DS的,第一步配置驱动模块一样用的也是同一个jar,不同的是在第二步的<driver>中加了xa-datasource,在第三步如下配置

<span style="font-size:18px;"><datasources>

    <xa-datasource jndi-name="java:/JcOracleDS" pool-name="JcOracleDS">

        <driver>oracle</driver>

        <xa-datasource-property name="URL">jdbc:oracle:oci8:@tc</xa-datasourceproperty>

            <security>

            <user-name>admin</user-name>

            <password>admin123</password>

        </security>

        <xa-pool>

        <is-same-rm-override>false</is-same-rm-override>

        <no-tx-separate-pools />

        </xa-pool>

        <validation>

            <valid-connection-checker classname="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"></valid-connection-checker>

            <stale-connection-checker classname="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"></stale-connection-checker>

            <exception-sorter classname="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"></exception-sorter>

        </validation>

    </xa-datasource>

    <drivers>
<driver name="oracle" module="com .oracle">
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xadatasource-class>
</driver>
</drivers> </datasources></span>

总结

本文介绍的是Oracle数据源在JBOSS EAP 6.1中的配置(配置适用JBOSS AS7),分3个步骤完成:

1、将数据库驱动构建为JBOSS内的模块

2、为JBOSS容器加载驱动模块

3、为JBOSS容器配置数据源

除了配置外主要对JBOSS EAP 6.2的“模块申明式容器”这一特征有个简单的认识

JBOSS EAP 6 系列三 Oracle、Mysql数据源的配置(驱动)—认识模块的使用的更多相关文章

  1. JBOSS EAP 6 系列四 EJB实现——调用(贯穿始终的模块)

    本文主要介绍在JBOSS EAP 6.2(或者JBOSS AS7)中模块是如何贯穿EJB实现的始终.延续上一博文<认识模块的使用>的话题继续聊JBOSS做为模块申明式容器的这一特性在EJB ...

  2. JBOSS EAP 6 系列六 公共模块的jar配置到jboss的modules详细配置

    公司项目中遇到并要解决的问题 1:原则上除了自己写的代码之外,公共的jar不应该都在打包的时候打包到ear里面,这样的话包太大,也不符合的分层的逻辑,在jboss容器内部,每个ear的包重复jar都会 ...

  3. MySQL并发复制系列三:MySQL和MariaDB实现对比

    http://blog.itpub.net/28218939/viewspace-1975856/ 并发复制(Parallel Replication) 系列三:MySQL 5.7 和MariaDB ...

  4. JBOSS EAP 6 系列一 新特性

    在项目中,采用的架构是Springmvc+spring+EJB+Jpa等架构,当然服务器是Jboss,本次Jboss我们采用的是JBossEap6.2,Jboss7的新特性与Jboss4.5的大的改变 ...

  5. JBOSS EAP 6 系列五 Managed domains 管理域最主要的功能是“统一部署,统一配置”

    摘要 本文首先介绍Managed Domain的概念,管理域最主要的功能是"统一部署,统一配置".接下来通过一个实例在"统一配置"部分实现一个双机配置起来的域, ...

  6. log4net保存到数据库系列三、代码中xml配置log4net

    园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...

  7. mysql系列三、mysql开启缓存、设置缓存大小、缓存过期机制

    一.开启缓存 mysql 开启查询缓存可以有两种方法来开启一种是使用set命令来进行开启,另一种是直接修改my.ini文件来直接设置都是非常的简单的哦. 开启缓存,设置缓存大小,具体实施如下: 1.修 ...

  8. sqlserver,oracle,mysql等的driver驱动,url怎么写

    oracle driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521 ...

  9. springboot系列三、springboot 单元测试、配置访问路径、多个配置文件和多环境配置,项目打包发布

    一.单元测试 生成的demo里面包含spring-boot-starter-test :测试模块,包括JUnit.Hamcrest.Mockito,没有的手动加上. <dependency> ...

随机推荐

  1. seacms6.5 注入漏洞1

    ---恢复内容开始--- 需要开启/data/admin/isapi.txt   ,当里面的数值为1时,就可以报错注入 存在漏洞的页面:zyapi.php function cj() { global ...

  2. [USACO08JAN]haybale猜测Haybale Guessing

    题目描述 The cows, who always have an inferiority complex about their intelligence, have a new guessing ...

  3. Codeforces 343E Pumping Stations

    Description 题面 题目大意:求一个排列 \(P\),使得 \(\sum_{i=1}^{n-1}maxflow(P_i,P_{i+1})\) 尽量大 Solution 构造出最小割树,那么第 ...

  4. ●POJ 3378 Crazy Thairs

    题链: http://poj.org/problem?id=3378 题解: 树状数组维护,高精度. 依次考虑以每个位置结尾可以造成的贡献. 假设当前位置为i,为了达到5个元素的要求,我们需要求出,在 ...

  5. 2015 多校联赛 ——HDU5289(二分+ST)

    Assignment Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  6. hdu3340 线段树+多边形

    Rain in ACStar Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  7. [bzoj3668][Noi2014]起床困难综合症/[洛谷3613]睡觉困难综合症

    来自FallDream的博客,未经允许,请勿转载,谢谢. 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综 ...

  8. bzoj4514

    4514: [Sdoi2016]数字配对 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1870  Solved: 712[Submit][Statu ...

  9. Python中的条件和循环语句

    条件和循环语句 1. 条件语句 if单用 格式:if 条件表达式 例如:if 5 > 3: print('True') >>> 'True' #当条件满足时才会执行上述操作. ...

  10. Linux中Mysql root用户看不到mysql库问题解决方式

    第一种方式: 1.首先停止MySQL服务:service mysqld stop2.加参数启动mysql:/usr/bin/mysqld_safe --skip-grant-tables &  ...