JNDI-( Java Name and Driectory Interface)
2014-03-08 15:57
274 查看
JNDI– Java Name and Driectory Interface。
JNDI主要用于在容器中配置某些资源,让所有项目可以使用。
JNDI可以提供:
1:数据库连接池。
自定义连接池
第三方连接池
Dbcp
C3p0
JNDI
2:邮件服务器定义。
3:加载任意的类,让所有项目都可以使用。
JNDI:[定义在tomcat容器中,所有项目必须要通过查找的方式获取这个服务
Javax.naming.Context 环境(ENV)上下文。
它的一个了类:InitialContext
Tomcat支持JNDI,到tomcat的docs查看说明:
配置JNDI:
由于 JNDI需要在server.xml中进行配置,所以就不用发布项目。
第一步:在tomcat/conf/server.xml中配置:
<Context path="/aaa" docBase="D:/programfiles/MyEclipse10/wk3/day25/WebRoot"> <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql:///db909?characterEncoding=UTF8" username="root" password="1234" maxActive="10" maxIdle="30" maxWait="-1"/> </Context>
name为JNDI的名字
auth JNDI的拥有者
第二步:将mysql-connection.jar放到tomcat/lib目录下
第三步:在java项目中引用
在代码中直接查询这个jndi:第一种获取的方式:
public class TwoServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { //1声明Context上下文查找对象 Context ctx = new InitialContext(); //第二步:查找apache环境 Context ctx1 = (Context) ctx.lookup("java:/comp/env"); //第三步:从环境中找jNDI Object obj = ctx1.lookup("jdbc/mysql"); System.err.println(obj); //第四步:测试连接是否成功 DataSource ds = (DataSource) obj; Connection con = ds.getConnection(); System.err.println(">>"+con); } catch (Exception e) { e.printStackTrace(); } } }
第二种:
try { //1声明Context上下文查找对象 Context ctx = new InitialContext(); //第二步:查询 Object obj = ctx.lookup("java:/comp/env/jdbc/mysql"); System.err.println(obj); DataSource ds = (DataSource) obj; Connection con = ds.getConnection(); System.err.println(">>"+con); Statement st = con.createStatement(); ResultSet rs = st.executeQuery("select * from users"); while(rs.next()){ System.err.println(rs.getString(1)); } } catch (Exception e) { e.printStackTrace(); }
配置的方式:
标准的池:
public class DatasourceUtils { private static DataSource ds; static{ try{ Context ctx = new InitialContext(); ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/mysql"); }catch(Exception e){ e.printStackTrace(); } } public static DataSource getDs(){ return ds; } }
相关文章推荐
- java招聘技术准备
- java instanceof操作符
- Java中的this
- java 局部变量的作用域最小化
- Java 时间格式一
- java 类的成员变量
- Think in Java之构造器的真正调用顺序
- java 变量的作用域
- myeclipse 自动为类、方法生成注释
- Struts2数据传输的背后机制:ValueStack(2)
- 超实用 增强IDE提示功能(MyEclipse、Eclipse、ADT)---瞬间效率备增
- 精选30道Java笔试题解答
- Eclipse常用快捷键集合
- java.util.concurrent.Callable<V>
- Struts2数据传输的背后机制:ValueStack(1)(值栈)(转载)
- Java之HashMap
- Java汉字转拼音库,Pinyin4j
- Java多线程浅学习
- Java3D快速上手
- Java线程死锁模拟