Tomcat6.0配置JNDI数据源

时间:2021-08-17 19:06:11
局部数据源步骤: 
一、拷贝数据库驱动到:D:\我的工具\apache-tomcat-6.0.10\lib下,这里是(ojdbc14.jar) 




二、配置context.xml文件(此步骤两种配法) 

方法一:使用tomcat的context.xml文件 

配置D:\我的工具\apache-tomcat-6.0.10\conf\context.xml中加入以下配置: 

注意:下面配置放到<Context>中 

<Resource name="jdbc/test"  auth="Container" 
type="javax.sql.DataSource" 
username="zsj"  
password="zsj" 
driverClassName="oracle.jdbc.driver.OracleDriver"  
url="jdbc:oracle:thin:@localhost:1521:zsj"  
maxActive="100"  
maxIdle="30"  
maxWait="10000"/> 

方法二:在应用中新建一个context.xml文件进行配置 

在WebRoot目录下META-INF的目录(假如不存在则新建), 
在该目录下创建一个context.xml文件,并且在context.xml文件当添加以下的配置信息: 
<Context> 

< Resource name="jdbc/test"  auth="Container" 
type="javax.sql.DataSource" 
username="zsj"  
password="zsj" 
driverClassName="oracle.jdbc.driver.OracleDriver"  
url="jdbc:oracle:thin:@localhost:1521:zsj"  
maxActive="100"  
maxIdle="30"  
maxWait="10000"/> 

< /Context> 



三、应用的web.xml配置(Tomcat建议在web.xml中添加以下内容,但这不是必须的。) 

<resource-ref> 
    <description>OracleDataSource</description> 

     <res-ref-name>jdbc/test</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
< /resource-ref> 



四、使用数据源连接数据库 


private Connection getConnection() throws NamingException { 
Connection conn = null; 
String   jndi   =   "jdbc/test";      
Context initContext = new InitialContext(); 
  Context envContext  = (Context)initContext.lookup("java:/comp/env");//固定,不需要修改 
  DataSource ds = (DataSource)envContext.lookup(jndi); 
  if(ds !=   null){ 
  try { 
conn = ds.getConnection(); 
} catch (SQLException e) { 
e.printStackTrace(); 

  }  

  return conn; 



public List<String> selectById(int id) throws InstantiationException, IllegalAccessException{
Connection con = null; 
try { 
con = getConnection(); 
} catch (NamingException e1) { 
// TODO Auto-generated catch block 
e1.printStackTrace(); 

List<String> list = new ArrayList<String>(); 
String sql="select * from myusers where id=?"; 
try { 
PreparedStatement pstmt=con.prepareStatement(sql); 
pstmt.setInt(1, id); 
ResultSet rs=pstmt.executeQuery(); 
if(rs.next()){ 
list.add(rs.getString(1)); 
list.add(rs.getString(2)); 
list.add(rs.getString(3)); 
System.out.println(rs.getString(1)); 
System.out.println(rs.getString(2)); 
System.out.println(rs.getString(3)); 

} catch (SQLException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 

return list; 




全局数据源配置: 
一、1、直接在${CATALINA_HOME}\conf\server.xml的GlobalNamingResources标签中增加一下内容: 

<Resource name="jdbc/test"  auth="Container" 
type="javax.sql.DataSource" 
username="zsj"  
password="zsj" 
driverClassName="oracle.jdbc.driver.OracleDriver"  
url="jdbc:oracle:thin:@localhost:1521:zsj"  
maxActive="100"  
maxIdle="30"  
maxWait="10000"/> 

二、在tomcat的context.xml的Context中增加: 


<ResourceLink global="jdbc/test" name="jdbc/test2" type="javax.sql.DataSource"/> 

说明:jdbc/test是全局的JNDI,jdbc/test2是你的应用中使用的JNDI 

当然也可以在应用程序的WebRoot\META-INF\下新建context.xml,然后中增加: 

<Context> 

< ResourceLink global="jdbc/test" name="jdbc/test2" type="javax.sql.DataSource"/> 

< /Context> 


三、直接在代码中使用该JNDI即可(web.xml无需任何配置了) 



hibernate使用tomcat数据源  


1,建立一个context.xml文件放到webroot的META-INF文件夹下。内容如下: 
<Context> 

< Resource name="jdbc/test"  auth="Container" 
type="javax.sql.DataSource" 
username="zsj"  
password="zsj" 
driverClassName="oracle.jdbc.driver.OracleDriver"  
url="jdbc:oracle:thin:@localhost:1521:zsj"  
maxActive="100"  
maxIdle="30"  
maxWait="10000"/> 

< /Context> 

2、配置hibernate.cfg.xml文件 

指定数据库方言 
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>

指定JNDI名称(这里JNDI名称为:jdbc/myhibernate) 


        <property name="connection.datasource">java:comp/env/jdbc/test</property>



spring引用tomcat数据源  


<bean id="dataSource" 

    class="org.springframework.jndi.JndiObjectFactoryBean"> 

    <property name="jndiName" value="java:comp/env/jdbc/sxmicsss" /> 

< /bean>