JNDI详细配置及使用
来源:互联网 发布:dbc2000 传奇数据库表 编辑:程序博客网 时间:2024/06/15 18:51
JNDI在项目中使用很多,下面介绍一下JNDI在TOMCAT中的几种配置和使用
一.在tomcat中配置数据源
1.配置全局JNDI数据源,应用到单个应用
①找到Tomcat的server.xml中GlobalNamingResources节点,在节点下加一个全局数据源
oracle、mysql、sqlServer配置如下:
参照:http://blog.csdn.net/samjustin1/article/details/52265796
1 <!-- Global JNDI resources 2 Documentation at /docs/jndi-resources-howto.html 3 --> 4 <GlobalNamingResources> 5 <!-- Editable user database that can also be used by 6 UserDatabaseRealm to authenticate users 7 --> 8 <Resource name="UserDatabase" auth="Container" 9 type="org.apache.catalina.UserDatabase"10 description="User database that can be updated and saved"11 factory="org.apache.catalina.users.MemoryUserDatabaseFactory"12 pathname="conf/tomcat-users.xml" />13 <!--14 |- name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,15 为了不与其他的名称混淆,所以使用jdbc/oracle,现在配置的是一个jdbc的关于oracle的命名服务。16 |- auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效17 |- type:此名称所代表的类型,现在为javax.sql.DataSource18 |- maxActive:表示一个数据库在此服务器上所能打开的最大连接数19 |- maxIdle:表示一个数据库在此服务器上维持的最小连接数20 |- maxWait:最大等待时间。10000毫秒21 |- username:数据库连接的用户名22 |- password:数据库连接的密码23 |- driverClassName:数据库连接的驱动程序24 |- url:数据库连接的地址25 -->26 <!--配置Oracle数据库的JNDI数据源-->27 <Resource 28 name="jdbc/oracle"29 auth="Container" 30 type="javax.sql.DataSource"31 maxActive="100" 32 maxIdle="30" 33 maxWait="10000"34 username="scott" 35 password="orcl"36 driverClassName="oracle.jdbc.driver.OracleDriver"37 url="jdbc:oracle:thin:@192.168.1.229:1521:lead"/>3839 <!--配置MySQL数据库的JNDI数据源-->40 <Resource 41 name="jdbc/mysql"42 auth="Container" 43 type="javax.sql.DataSource"44 maxActive="100" 45 maxIdle="30" 46 maxWait="10000"47 username="root" 48 password="root"49 driverClassName="com.mysql.jdbc.Driver"50 url="jdbc:mysql://192.168.1.144:3306/leadtest?useUnicode=true&characterEncoding=utf-8"/>51 52 <!--配置SQLServer数据库的JNDI数据源-->53 <Resource 54 name="jdbc/sqlserver"55 auth="Container" 56 type="javax.sql.DataSource"57 maxActive="100" 58 maxIdle="30" 59 maxWait="10000"60 username="sa" 61 password="p@ssw0rd"62 driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"63 url="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo"/>64<!--
-->
65 </GlobalNamingResources>
②到要应用此JNDI数据源的工程Context节点,增加对全局数据源的引用ResourceLink
- <Context docBase="WebApp" path="/WebApp" reloadable="true">
- <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" />
- </Context>
2.单个应用独享数据源
找到Tomcat的server.xml找到工程的Context节点,添加一个私有数据源
- <Context docBase="WebApp" path="/WebApp" reloadable="true" source="org.eclipse.jst.jee.server:WebApp">
- <Resource
- name="jdbc/mysql"
- scope="Shareable"
- type="javax.sql.DataSource"
- factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
- url="jdbc:mysql://localhost:3306/test"
- driverClassName ="com.mysql.jdbc.Driver"
- username="root"
- password="root"
- />
- </Context>
3.配置全局JNDI数据源,应用到所有Tomcat下部署的应用
①同第一种配置的第一步相同
找到Tomcat的server.xml中GlobalNamingResources节点,在节点下加一个全局数据源
4 <GlobalNamingResources> 8 <Resource name="UserDatabase" auth="Container" 9 type="org.apache.catalina.UserDatabase"10 description="User database that can be updated and saved"11 factory="org.apache.catalina.users.MemoryUserDatabaseFactory"12 pathname="conf/tomcat-users.xml" />38 39 <!--配置MySQL数据库的JNDI数据源-->40 <Resource 41 name="jdbc/mysql"42 auth="Container" 43 type="javax.sql.DataSource"44 maxActive="100" 45 maxIdle="30" 46 maxWait="10000"47 username="root" 48 password="root"49 driverClassName="com.mysql.jdbc.Driver"50 url="jdbc:mysql://192.168.1.144:3306/leadtest?useUnicode=true&characterEncoding=utf-8"/>65 </GlobalNamingResources>
②找到Tomcat的context.xml,在Context节点下加一个ResourceLink节点对第一步配置的数据源进行引用
这个XML配置文件的根节点就是<Context>
- <Context>
- <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" />
- <WatchedResource>WEB-INF/web.xml</WatchedResource>
- <Context>
二、项目工程的web.xml文件中引用资源
数据源配置完成之后。下面在项目目录下的web.xml中做一下配置
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 6 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 7 <welcome-file-list> 8 <welcome-file>index.jsp</welcome-file> 9 </welcome-file-list>10 11 <!-- 12 JNDI配置的资源引用:13 • res-ref-name:表示引用资源的名称14 • res-type:此资源对应的类型为javax.sql.DataSource15 • res-auth:容器授权管理16 -->17 <!--Oracle数据库JNDI数据源引用 -->18 <resource-ref>19 <description>Oracle DB Connection</description>20 <res-ref-name>oracleDataSource</res-ref-name>21 <res-type>javax.sql.DataSource</res-type>22 <res-auth>Container</res-auth>23 </resource-ref>2425 <!--MySQL数据库JNDI数据源引用 26 <resource-ref>27 <description>MySQL DB Connection</description>28 <res-ref-name>mysqlDataSource</res-ref-name>29 <res-type>javax.sql.DataSource</res-type>30 <res-auth>Container</res-auth>31 </resource-ref>32 33 <!--SQLServer数据库JNDI数据源引用 -->34 <resource-ref>35 <description>SQLServer DB Connection</description>36 <res-ref-name>sqlserverDataSource</res-ref-name>37 <res-type>javax.sql.DataSource</res-type>38 <res-auth>Container</res-auth>39 </resource-ref>40<!--
-->
41 </web-app>
3、使用JNDI数据源获取数据库连接
配置完数据源连接池之后,就可以按照以下的步骤进行访问:
• 初始化名称查找上下文
• 通过JNDI名称找到DataSource
• 通过DataSource取得一个连接
• 操作数据库
• 关闭数据库,关闭的时候是将连接放回到连接池之中
• 通过JNDI名称找到DataSource
• 通过DataSource取得一个连接
• 操作数据库
• 关闭数据库,关闭的时候是将连接放回到连接池之中
jsp测试页面代码如下:
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ page import="java.sql.*,javax.sql.*,javax.naming.*" %> 3 4 <!DOCTYPE HTML> 5 <html> 6 <head> 7 <title>JNDI数据源测试</title> 8 </head> 9 10 <body> 11 <% 12 Connection connOracle = null; 13 try { 14 //1、初始化名称查找上下文 15 Context ctx = new InitialContext(); 16 //InitialContext ctx = new InitialContext();亦可 17 //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟的是DataSource名 18 /* 19 DataSource名在web.xml文件中的<res-ref-name>oracleDataSource</res-ref-name>进行了配置 20 <!--Oracle数据库JNDI数据源引用 --> 21 <resource-ref> 22 <description>Oracle DB Connection</description> 23 <res-ref-name>oracleDataSource</res-ref-name> 24 <res-type>javax.sql.DataSource</res-type> 25 <res-auth>Container</res-auth> 26 </resource-ref> 27 */ 28 DataSource ds = (DataSource)ctx.lookup("java:comp/env/oracleDataSource"); 29 //3、通过DataSource取得一个连接 30 connOracle = ds.getConnection(); 31 out.println("Oracle Connection pool connected !!"); 32 //4、操作数据库 33 } catch (NamingException e) { 34 System.out.println(e.getMessage()); 35 } catch (SQLException e) { 36 e.printStackTrace(); 37 } finally { 38 //5、关闭数据库,关闭的时候是将连接放回到连接池之中 39 connOracle.close(); 40 } 41 %> 42 <hr/>106 </body>107 </html>
参照:http://blog.csdn.net/samjustin1/article/details/52265796
我们知道Tomcat内置是dbcp数据库连接池,如果打算使用c3p0配置jndi数据源,可参考如下配置
C3P0数据源的配置
- <Resource name="jdbc/mysql_c3p0" scope="Shareable"
- type="com.mchange.v2.c3p0.ComboPooledDataSource"
- factory="org.apache.naming.factory.BeanFactory"
- jdbcUrl="jdbc:mysql://localhost:3306/test"
- driverClass="com.mysql.jdbc.Driver"
- user="root"
- password="root" />
本文参考文章:
http://blog.csdn.net/samjustin1/article/details/52265796
http://blog.csdn.net/dyllove98/article/details/7706218
0 0
- JNDI详细配置及使用
- tomcat6中配置jndi及jndi在spring中的使用
- tomcate + jndi 详细配置
- tomcate + jndi 详细配置
- tomcat数据源配置及JNDI使用
- MyEclipse10 JNDI的使用及配置
- MyEclipse10 JNDI的使用及配置
- Jetty配置Jndi数据源及使用
- 使用JNDI配置数据源
- Tomcat配置JNDI数据源的方式及使用
- tomcat配置jndi+spring使用jndi数据源
- tomcat配置jndi+spring使用jndi数据源
- 史上最全最详细JNDI数据源配置说明
- 使用spring配置jndi数据源
- tomcat中配置使用JNDI
- birt使用JNDI配置数据源
- 什么是jndi,什么时候使用jndi,tomcat配置jndi,spring使用jndi数据源
- Spring配置JNDI及通过JNDI获取DataSource
- mediacodec mp4v2应用
- iOS性能优化:Instruments使用实战
- Rxjava与Rxandroid结合实现网络请求
- 【Android】不同的View引起软键盘无法关闭问题解决方案
- java线程&&并发-实践笔记
- JNDI详细配置及使用
- 又一段旅程
- bitmap 图像压缩方法
- 575. Distribute Candies
- Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
- Android mdpi hdpi xdpi
- K-means聚类算法
- js对象的深拷贝和浅拷贝
- 程序1--互不重复的三位数