关键字: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\common\lib 局部数据源步骤: 一、拷贝数据库驱动到: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> |
|