设为首页 收藏本站
查看: 915|回复: 0

[经验分享] Jboss7下配置mysql和oracle数据源

[复制链接]
YunVN网友  发表于 2016-8-13 06:17:48 |阅读模式
  按照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也很有用

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-256868-1-1.html 上篇帖子: Oracle hcheck脚本检查 数据字典一致性 说明 下篇帖子: 基于Oracle数据库的数据分页原理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表