首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

Jboss7停配置mysql和oracle数据源

2012-08-03 
Jboss7下配置mysql和oracle数据源??? 按照https://community.jboss.org/wiki/DataSourceConfigurationInAS

Jboss7下配置mysql和oracle数据源

??? 按照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包,命令如下:

在oracle的module.xml文件中写入

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

<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也很有用

热点排行