`
minstrel
  • 浏览: 47409 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Jboss7下配置mysql和oracle数据源

    博客分类:
  • java
阅读更多

    按照https://community.jboss.org/wiki/DataSourceConfigurationInAS7的说法,首先我们如果在开发和测试环境下,可以直接把jdbc驱动程序放在你的应用之内的类路径上,然后通过注解@DataSourceDefinition来定义和引用你数据源。这种方式绕开了jboss的服务管理层,所以你可能自己需要弄个连接池来管理你的数据源。

    另外你可以在jboss服务器的管理下定义数据源,这样你就可以在jboss服务器层面来管理你的数据源,这样就可以使用到服务器的管理优势,以可以使用服务器提供的连接池,jboss7提供的连接池管理模块是IronJacamar,详细信息参见http://www.jboss.org/ironjacamar/docs.html

    DataSourceConfigurationInAS7这个上面说服务器层面安装jdbc驱动程序有两种方式,一个是部署安装方式,一个是以模块方式安装。

    部署安装就是把兼容jdbc4的驱动Jar包放到deployments的路径下,然后系统就会自动部署。jboss是推荐使用部署安装方式的,说是在集群环境下,这种部署会自动传播到所有的cluster上去。我一开始也很心动这种配置方式,但是我找到的所有mysql的jdbc驱动,jobss都报non-JDBC4-compliant,所以最后放弃这种驱动部署方式,后来发现oracle的驱动ojdbc6.jar是兼容jdbc4的,这个应该可以,但是我已经通过模块方式安装好了,懒得再回头弄了,哪位以这种方式配置好的,可以通知让我看看。

    但我还是把部署安装方式安装mysql的方法翻译给大家,以便有兴趣的人安装这个方法试一试。

------------------------以下是翻译mysql驱动的部署安装方式,我没有试验成功--------------------------

注意mysql的jdbc驱动程序是兼容jdbc4的。mysql的驱动(截至到5.1.18)是jdbc4类型的驱动,但是它的jdbcCompliant()方法经常返回false,原因是这个驱动没有全部通过SQL92全兼容测试,MySQL这样说的,因此,你需要修改一下mysql的驱动包,修改方式如下:

      1,进入或新建一个空的目录

      2,新建一个子目录"META-INF"

      3,新建子目录"META-INF/services"

      4,新建一个文件"META-INF/services/java.sql.Driver",在这个文件中添加一行,内容是这个驱动的权限定名,mysql的就是com.mysql.jdbc.Driver

      5,使用jar命令工具来更新这个JAR包,命令如下:

jar -uf jdbc-driver.jar META-INF/services/java.sql.Driver

  请注意我们以部署方式安装驱动时,需要在配置配置文件的datasource标签的driver标签时指定出部署的文件名(这个我们后面再会提到)

------------------------以上是翻译mysql驱动的部署安装方式,我没有试验成功--------------------------

 

    模块安装就是在jboss服务器的根目录下有一个modules的文件夹,我们在这个目录下新建com/mysql/jdbc/main和com/oracle/ojdbc6/main目录,然后把mysql-connector-java-5.1.20-bin.jar和ojdbc6.jar分别放入这两个目录中,并分别在这两个目录下新建一个文件module.xml,在mysql的module.xml文件中写入:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql.jdbc">
  <resources>
    <resource-root path="mysql-connector-java-5.1.20-bin.jar"/>
        <!-- Insert resources here -->
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>

在oracle的module.xml文件中写入

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.oracle.ojdbc6">
  <resources>
    <resource-root path="ojdbc6.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>

  然后在配置文件(standalone下standalone.xml,domain下domain.xml)中的profile标签下增加这段:

<subsystem xmlns="urn:jboss:domain:datasources:1.0">
    <datasources>
        <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
            <connection-url>jdbc:mysql://yourmysqlhost:host/yourDB</connection-url>
            <driver>mysql</driver>
            <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
            <pool>
                <min-pool-size>1</min-pool-size>
                <max-pool-size>10</max-pool-size>
                <prefill>true</prefill>
            </pool>
            <security>
                <user-name>sb</user-name>
                <password>2b</password>
            </security>
            <statement>
                <prepared-statement-cache-size>32</prepared-statement-cache-size>
                <share-prepared-statements>true</share-prepared-statements>
            </statement>
        </datasource>             
        <datasource jndi-name="java:/hzocs" pool-name="hzocs" enabled="true" use-java-context="true">
           <connection-url>jdbc:oracle:thin:@youroraclehost:port:sid</connection-url>
           <driver>oracle</driver>
          <pool>
          <min-pool-size>1</min-pool-size>
						<max-pool-size>10</max-pool-size>
						<prefill>true</prefill>
						<use-strict-min>false</use-strict-min>
						<flush-strategy>FailingConnectionOnly</flush-strategy>
					</pool>
					<security>
						<user-name>sb</user-name>
						<password>2b</password>
					</security>
					<validation>
						<validate-on-match>false</validate-on-match>
						<background-validation>false</background-validation>
						<use-fast-fail>false </use-fast-fail>
					</validation>
					<statement>
						<prepared-statement-cache-size>100</prepared-statement-cache-size>
						<track-statements>nowarn</track-statements>
					</statement>
					<timeout>
						<blocking-timeout-millis>10000</blocking-timeout-millis>
						<idle-timeout-minutes>1</idle-timeout-minutes>
					</timeout>
				</datasource>
         <xa-datasource jndi-name="java:jboss/datasources/ExampleXADS" pool-name="ExampleXADS">
            <xa-datasource-property name="URL">jdbc:mysql://yourmysqlhost:prot/yourDB</xa-datasource-property>
            <driver>mysql</driver>
            <xa-pool>
                <min-pool-size>1</min-pool-size>
                <max-pool-size>20</max-pool-size>
                <prefill>true</prefill>
            </xa-pool>
            <security>
                <user-name>sb</user-name>
                <password>2b</password>
            </security>
        </xa-datasource>
        <xa-datasource jndi-name="java:/hzocsXA" pool-name="hzocsXA" enabled="true" jta="true" use-java-context="true">
        	<driver>oracle</driver>
        	<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
			    <xa-datasource-property name="URL">jdbc:oracle:thin:@youroraclehost:prot:sid</xa-datasource-property> 
			    <new-connection-sql>call DBMS_APPLICATION_INFO.SET_MODULE('MyApp ','myDS')</new-connection-sql> 
			    <security>
			        <user-name>sb</user-name>
			        <password>sb</password>
			    </security>									
					<xa-pool>
						<min-pool-size>5</min-pool-size>
						<max-pool-size>20</max-pool-size>
						<is-same-rm-override>false</is-same-rm-override>
						<flush-strategy>FailingConnectionOnly</flush-strategy>
					</xa-pool>
			    <validation>
				    <validate-on-match>false</validate-on-match>	
  					<background-validation>false</background-validation>
  					<use-fast-fail>false</use-fast-fail>
						<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"></valid-connection-checker>
						<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"></stale-connection-checker>
						<exception-sorter class-name="org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter"></exception-sorter>
				  </validation>							    
			    <!--<timeout>
			      <blocking-timeout-millis>10000</blocking-timeout-millis>
						<idle-timeout-minutes>1</idle-timeout-minutes>
			    </timeout>-->
					<statement>
						<prepared-statement-cache-size>20</prepared-statement-cache-size>
						<track-statements>nowarn</track-statements>
					</statement>
				</xa-datasource>
				
        <drivers>
					<driver name="mysql" module="com.mysql.jdbc">
						<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
					</driver>
					<driver name="oracle" module="com.oracle.ojdbc6">
						<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
					</driver>
				</drivers>								
    </datasources>
</subsystem><!--日,格式乱了,懒得搞了-->

  DataSourceConfigurationInAS7文中说如果驱动是部署安装的那么我加粗的driver标签内容应该是部署的驱动文件名。

 好了,启动服务器,应该看到如下4条信息:

(MSC service thread 1-2) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS]
(MSC service thread 1-2) JBAS010400: Bound data source [java:/hzocs]
(MSC service thread 1-2) JBAS010400: Bound data source [java:/hzocsXA]
(MSC service thread 1-2) JBAS010400: Bound data source [java:jboss/datasources/ExampleXADS] 

好了我们测试一下这4个数据源是否成功.

[standalone@localhost:9999 /] /subsystem=datasources/data-source=ExampleDS:test-connection-in-pool
{
    "outcome" => "success",
    "result" => [true]
}
[standalone@localhost:9999 /] /subsystem=datasources/data-source=hzocs:test-connection-in-pool
{
    "outcome" => "success",
    "result" => [true]
}
[standalone@localhost:9999 /] /subsystem=datasources/xa-data-source=hzocsXA:test-connection-in-pool
{
    "outcome" => "success",
    "result" => [true]
}
[standalone@localhost:9999 /] /subsystem=datasources/xa-data-source=ExampleXADS:test-connection-in-pool
{
    "outcome" => "success",
    "result" => [true]
}

 测试通过。

其实我们配置文件中的那么多标签选项是怎么获得的呢,我们可以先看看datasource管理器共支持多少标签:

/subsystem=datasources:read-resource(recursive=true)

 具体标签意义可以网上搜一搜,读一读IronJacamar也很有用

分享到:
评论

相关推荐

    EJB3.0+Struts2.0+Jboss+ Enterprise Application Project 示例

    EJB3.0+Struts2.0+Jboss Enterprise Application Project 示例 用jboss数据源可连接mysql ms-sql oracle 本地远程接口用单态模式实现

    java餐饮管理系统源码-docker-jboss-liferay:码头工人-jboss-liferay

    java餐饮管理系统源码 概述 安装在 Jboss Enterprise Application Server ...数据库用作外部数据源。 您应该在变量JBOSS_AS_DB_DRIVER_NAME定义您的数据库类型,唯一的选择是: mysql oracle-11g orac

    分布式数据层TDDL.zip

    支持mysql和oracle数据库7.基于jdbc规范,很容易扩展支持实现jdbc规范的数据源8.无server,client-jar形式存在,应用直连数据库9.读写次数,并发度流程控制,动态变更10.可分析的日志打印,日志流控,动态变更TDDL必须...

    jbpm配置心得体会(结合各种数据库)

    JBPM工作流引擎在JBOSS中结合各种数据库的环境搭建

    ssh(structs,spring,hibernate)框架中的上传下载

     文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...

    JAVA上百实例源码以及开源项目源代码

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    JBOSS tomcat resin jetty 容灾 日志框架 开源框架 slf4j 框架实现 log4j logback commong logging jdk logger 测试框架 测试框架 junit easymock testng mockito bug管理 禅道 jira 开发...

    DataPower

    应用服务器:WebLogic9.2/WebSphere6.2/Jboss4.0/GlassFish JavaEE5/Oracle ApplicationServer10.1 开发模式:采用mvc开发模式, 页面流+标签库+控制器 持久层:hibernate3+ejb3 数据库:mysql4.12/oracle10g/...

    JAVA上百实例源码以及开源项目

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    Web安全深度剖析(张柄帅)

    5.5.1 严格的数据类型 100 5.5.2 特殊字符转义 101 5.5.3 使用预编译语句 102 5.5.4 框架技术 103 5.5.5 存储过程 104 5.6 小结 105 第6章 上传漏洞 106 6.1 解析漏洞 106 6.1.1 IIS解析漏洞 106 6.1.2 Apache解析...

Global site tag (gtag.js) - Google Analytics