jboss jndi不依靠spring连接

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信息

11 : 13 : 34 , 250  INFO  [ConnectionFactoryBindingService] Bound ConnectionManager  ' jboss.jca:service=ConnectionFactoryBinding,name=JmsXA '  to JNDI name  ' java:JmsXA '
11 : 13 : 34 , 359  INFO  [WrapperDataSourceService] Bound ConnectionManager  ' jboss.jca:service=DataSourceBinding,name=JNDItymm '  to JNDI name  ' JNDItymm '
11 : 13 : 34 , 406  INFO  [TomcatDeployer] deploy, ctxPath =/ KBS, warUrl = / deploy / KBS.war /
11 : 13 : 34 , 781  INFO  [[ / KBS]] Initializing Spring root WebApplicationContext

设置use-java-context为true或不设置时控制台给出的jndi信息

11 : 25 : 15 , 921  INFO  [ConnectionFactoryBindingService] Bound ConnectionManager  ' jboss.jca:service=ConnectionFactoryBinding,name=JmsXA '  to JNDI name  ' java:JmsXA '
11 : 25 : 15 , 984  INFO  [ConnectionFactoryBindingService] Bound ConnectionManager  ' jboss.jca:service=DataSourceBinding,name=JNDItymm '  to JNDI name  ' java:JNDItymm '
11 : 25 : 16 , 031  INFO  [TomcatDeployer] deploy, ctxPath =/ KBS, warUrl = / deploy / KBS.war /

 


注意对比两次控制台分别打印的信息,从中很容易发现,其实就是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();
}
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值