1、JBoss服务器mysql数据源配置
在..\jboss-5.0.1.GA\server\default\deploy这个文件下建立mysql-ds.xml,如果不知道可以去..\jboss-5.0.1.GA\docs\examples\jca复制一个;//这下面大部分的数据源文件都有
文件内容格式如下
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>JNDItymm</jndi-name><!--项目中使用这个名字来访问数据库--> <use-java-context>false</use-java-context> <connection-url>jdbc:mysql://192.168.0.24:3306/tymm</connection-url><!--数据库连接字符串--> <driver-class>com.mysql.jdbc.Driver</driver-class><!--数据库驱动,这里用的是SQL Server的连接方式--> <user-name>root</user-name><!--连接数据库用户名--> <password>123</password><!--连接数据库密码--> <min-pool-size>10</min-pool-size> <!--数据库连接池最小大小--> <max-pool-size>100</max-pool-size> <!--数据库连接池最大大小--> <idle-timeout-minutes>15</idle-timeout-minutes><!--超时设置--> </local-tx-datasource> </datasources>
解释一下上面的意思
jndi-name:不用多说了,当然是为该jndi取一名称这里使用JNDItymm
其他几个属性不做过多解释
use-java-context:属性默认为true,如未配置该属性或该属性配置为true,那么jboss在启动的时候jndi的名称前会加上java: 这里我们jndi的名称为JNDItymm,那么未配置该属性或该属性为true的话,你在spring中使用jndi时指定的jndiName就应该为java:JNDItymm,若配置为false,那么jboss服务器不会为你加上java: 你在spring中jndiName应当配置为JNDItymm,即与jndi-name属性值等同。这里为了方便期间设置该属性为false
拷贝oracle驱动
拷贝oracle驱动 mysql-jdbc.jar到jboss的如下目录
..\jboss-4.2.3.GA\server\default\lib
切记数据库驱动拷贝到..\jboss-4.2.3.GA\server\default\lib目录下,否则即使你jndi配置的再怎么正确都会报如下错误,该错误在jboss启动的时候并不会报出,只有在正式遇数据库进行交互的时候才会报此错误,大概错误是这样的。此处花了好长时间才解决。
如果需要跟spring结合的话
配置spring配置文件
在applicationContext.xml中配置如下信息:
<bean name="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>JNDItymm</value> </property> </bean>
此种方式指定jndiName为JNDItymm并未java:前缀,需要你手动在jboss的jndi配置文件中设置use-java-context属性为fasle,若未设置该属性或设置为true那么此处应该是这样子的
<bean name="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>java:JNDItymm</value> </property> </bean>
需要你手动加上java:前缀后面跟jboss下配置的jndi的名称
其实这里的配置主要是根据jboss服务器启动时控制台给出的信息来配置的
设置use-java-context为false时控制台给出的jndi信息
设置use-java-context为true或不设置时控制台给出的jndi信息
注意对比两次控制台分别打印的信息,从中很容易发现,其实就是use-java-context属性的作用。关于该属性,大家可以去参看jboss的官方文档。这里就不细说了。
到此jboss下配置jndi 以及整合spring已经成功配置起来了,接下来就是一些细化了,大家可以去查询jboss的关于jndi配置的文档。
其实在jboss下配置jndi远远比在tomcat下配置jndi简单的多。
总结下来就这几步
拷贝jndi模板到server\default\deploy目录下,并做修改,这里面模板文件均是以数据库类型-ds.xml命名的。
拷贝数据库驱动到\server\default\lib目录和jboss安装目录\lib下即可。
//大部分代码是参考了这篇博客
http://www.blogjava.net/sxyx2008/archive/2010/09/08/331382.html
java代码
Connection conn =null; PreparedStatement prep=null; ResultSet rs=null; try{ Context tx =new InitialContext(); DataSource ds = (DataSource) tx.lookup("JNDItymm"); conn=ds.getConnection(); prep=conn.prepareStatement("select * from userinfo"); rs=prep.executeQuery(); if(rs!=null){ while(rs.next()){ System.out.println("userName:"+rs.getString("userName")+"\tpassword:"+rs.getString("password")); } } }catch(Exception e){ e.printStackTrace(); } finally{ if(rs!=null)rs.close(); if(prep!=null)prep.close(); if(conn!=null)conn.close(); }