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

本文介绍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的“模块申明式容器”这一特征有个简单的认识

时间: 2024-10-05 05:08:11

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

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

本文主要介绍在JBOSS EAP 6.2(或者JBOSS AS7)中模块是如何贯穿EJB实现的始终.延续上一博文<认识模块的使用>的话题继续聊JBOSS做为模块申明式容器的这一特性在EJB实现中的完全贯彻. Session bean JBOSS EAP(AS7)中默认的EJB是3.1版本遵循JSR318规范.EJB从3.0开始已经全面引入Annotation的概念,3.0以前的EJB需要在XML文件里面对Bean所做的配置都能通过标签的方式在代码中实现.同时,之前为了工厂模式而做的双接口Hom

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

公司项目中遇到并要解决的问题 1:原则上除了自己写的代码之外,公共的jar不应该都在打包的时候打包到ear里面,这样的话包太大,也不符合的分层的逻辑,在jboss容器内部,每个ear的包重复jar都会调入jboss内部,而造成浪费过多地的服务器资源,会出现不定期的异常. 2:jboss eap 6.*系列,需要模块化配置,需要加载的jar,解决如何在jboss里面配置 3:公共的jar在jboss里面已经配置,加载--但是源码运行的时候不能根据maven的配置,加载jar的路径的问题 第一步:配

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

http://blog.itpub.net/28218939/viewspace-1975856/ 并发复制(Parallel Replication) 系列三:MySQL 5.7 和MariaDB 10的parallel replication对比 作者:沃趣科技MySQL数据库工程师  麻鹏飞 经过上两篇关于MySQL/MariaDB 的Binary Log Group Commit的发展历程和enhanced multi-threaded slave的介绍,相信大家对MySQL 基于Bin

JBOSS EAP 6 系列一 新特性

在项目中,采用的架构是Springmvc+spring+EJB+Jpa等架构,当然服务器是Jboss,本次Jboss我们采用的是JBossEap6.2,Jboss7的新特性与Jboss4.5的大的改变是: 模块申明式容器 JBOSS EAP不再有lib的概念,一切都是module.无论是系统调用的lib,用户编制的lib,或者应用程序引用到的第三方lib都以模块的方式构建起来,并在使用的地方申明具体使用了哪个模块.这就带来两个好处, 按官方的说法提供了一种完全的模块化的类加载系统,JBOSS会根

JBOSS EAP 6.2 -EJB远程调用-客户端的配置

EJB访问方式分为远程客户端访问.本地客户端访问和WebService客户端. 所谓的EJB的远程调用是说客户端与服务端的EJB对象不在同一个JVM进程中. 本地客户端是说客户端与服务端的EJB对象在同一个JVM进程中. WebService客户端可以访问无状态会话Bean的接口,只有在业务逻辑方法被标识为@WebMethod的时候,webService客户端才可以访问到. 远程调用 在没有远程调用的时候,我们需要用到别人的数据了,就直接把别人的接口和实现都拿过来了,接着打到自己的包中,这样做一

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

oracle driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:数据库名" sqlserver driver="com.microsoft.jdbc.sqlserver.SQLServerDriver" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=数据库名

springboot系列三、SpringBoot 单元测试、配置访问配置、项目打包发布、加载和读取多个配置文件

一.概述 平时项目中有如下常见场景: 根据项目配置不同的访问端口和路径 profile多环境配置 springboot启动注解.接收或返回风格参数 配置模板引擎 配置单元测试 打包发布 一.单元测试 生成的demo里面包含spring-boot-starter-test :测试模块,包括JUnit.Hamcrest.Mockito,没有的手动加上. <dependency> <groupId>org.springframework.boot</groupId> <

动态配置 JBOSS ( eap 6.2 ) 数据源

操作环境 windows + jboss eap 6.2 + MyEclipse 10.0 项目用的是jboss eap 6.2,作为Red公司升级后的eap稳定版. 相比之前的 AS 系列,不管是安全性和集群的稳定性,加上天然的出厂配置上都好了非常多. 对于开发人员来讲.省去了非常多工作. 配置远程接口 <interface name="management"> <inet-address value="${jboss.bind.address.manag

JBoss EAP 为应用项目配置PostgreSQL数据源

一.前言 客户在计划将业务向云平台迁移,这些天也在测试将数据库由Oracle替换为开源的PostgrSQL.为什么选PostgreSQL?因为这是对应用程序代码修改最小的方案,没有之一! PostgreSQL数据库的简要信息为:服务器loacalhost,端口5432,数据库projadm,用户名/密码:projadm/proj2013. 开始前,在https://jdbc.postgresql.org/download.html下载与JBoss版本和JDK版本匹配的JDBC驱动包,存放某目录(