首页 > 其他分享 >Tomcat6.0配置JNDI数据源完整例子(5.5与此配置相同)

Tomcat6.0配置JNDI数据源完整例子(5.5与此配置相同)

时间:2023-05-06 16:05:31浏览次数:35  
标签:xml 5.5 tomcat color 数据源 JNDI context


关键字:Tomcat6.0配置JNDI数据源

注意事项:tomcat JDK 一定要和 应用程序的JDK 版本一致(本例中统一JDK1.6)

说明:tomcat5.5与6.0的配置略有不同,即:tomcat的lib位置不同(其他完全一致),
6.0位置是:D:\我的工具\apache-tomcat-6.0.10\lib下

5.5位置是:D:\我的工具\apache-tomcat-5.5.17\[color=red]common[/color]\lib


[color=red]局部数据源步骤:[/color]
一、拷贝数据库驱动到: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; 

 }



[color=red]全局数据源配置:[/color]
一、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无需任何配置了)


[color=red]hibernate使用tomcat数据源[/color]


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> 



[color=red]spring引用tomcat数据源[/color] 



<bean id="dataSource" 


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


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


</bean>





通过以上步骤 JNDI数据源配置完毕!附件是:一个现成例子,欢迎下载!!

标签:xml,5.5,tomcat,color,数据源,JNDI,context
From: https://blog.51cto.com/u_7450530/6250443

相关文章

  • 5.5
    #include<iostream>usingnamespacestd;#include<string>classpeople{public:   voidsetValue(intm,stringstr){       age=m;       name=str;   }   voiddisplay(){       cout<<"姓名:"<<name<<......
  • 2023.5.5
    1//new在堆区开辟数据,手动开辟,手动释放2#include<iostream>3usingnamespacestd;4//1.new的基本语法5int*func()6{7//new返回的是指针8int*p=newint(10);9returnp;10}11voidtest01()12{13int*p=func();14co......
  • 5.5笔记
    1、格式化输入输出   CPU、内存、I/O设备在快速发展的过程中,有一个核心矛盾一直存在,就是三者之间的速度差异   平衡三者之间鸿沟的有效手段就是引入缓存   键盘---->stdin(内存,行缓冲区,标准输入缓冲区)---->程序---->stdout(内存,行缓冲区,标准输出缓冲区)---->屏幕 ......
  • 2023.5.5 《动手学深度学习》第3、4章
    今天继续学习《动手学习深度学习》第3章:线性神经网络、第4章:多层感知机,今天学到的内容主要有这两章的概念,另外,完成了Kaggle房价预测的代码复现(Kaggle_HousePricePrediction.ipynb)。一、理论部分:1、概念解释:超参数:可以调整但不在训练过程中更新的参数称为超参数2、DL操作数......
  • 5.5
          请定义一个分数类,拥有两个整数的私有数据成员,分别表示分子和分母(分母永远为正数,符号通过分子表示)。     重载运算符加号"+",实现两个分数的相加,所得结果必须是最简分数。输入:    第一行的两个数分别表示第一个分数的分子和分母(分母不为......
  • 5.5 2.4
    一、问题描述一个口袋中有12个球,已知其中三个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少颜色搭配。二、分析8个红球中,m个红球,n个白球,黑球为8-n-m个。m[0,3]  n[0,3]   8-n-m<=6 三、代码#include<iostream>usingnamespacestd;intmain(){intm=0;//......
  • 5.5每日总结
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd&qu......
  • 每日总结-23.5.5
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd&qu......
  • 5.5
    #include"time_user.h"  time_user::time_user(void){}  time_user::~time_user(void){} voidtime_user::timeset(){   cin>>h>>m>>s;} voidtime_user::timedis(){   cout<<h<<":"<<m<&l......
  • 2023.5.5——软件工程日报
    所花时间(包括上课):6h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习并开会。我了解到的知识点:1.了解了一些数据库的知识;2.了解了一些python的知识;3.了解了一些英语知识;5.了解了一些Javaweb的知识;4.了解了一些数学建模的知识;6.了解了一些计算机网络的知识;......