在tomcat中配置JNDI

1.关于tomcatserver.xml配置文件

    在tomcat的配置文件conf/server.xml文件的<Host>标签中加入<Context>标签可以标记当前Web应用,应用随系统启动而加载,如:

<Context
            path=""
            docBase="E:\TestPro\WebRoot"
            reloadable="true" >      
</Context>

    这里讲path属性标记为空,访问系统时就不用加项目名称了,可以直接访问,开发调试比较方便。<Context>代表了运行在<Host>上的单个Web应用,一个<Host>可以有多个<Context>元素,每个Web应用必须有唯一的URL路径,这个URL路径在<Context>中的属性path中设定。 

    <Context>元素的属性的意义
    1)path:指定访问该Web应用的URL入口。 
    2)docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>appBase属性的相对路径,如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径。 
    3)reloadable:如果这个属性设为truetomcat服务器在运行状态下会监视在WEB-INF/classesWEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。 

 

2.tomcat中配置JNDI

如果开发中使用到JNDI,要将数据库信息放入容器中托管,有两种方式:

1)conf/server.xml中增加<Resource>标签

<Context
            path=""
            docBase="E:\TestPro\WebRoot"
            reloadable="true" >
 <Resource name="dbtest" auth="Container"
  type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver"
  url="jdbc:oracle:thin:@192.168.16.23:1521:orcl"
  username="test" password="1234" maxActive="20" maxIdle="10"
  maxWait="-1"/>
</Context>

2)conf/context.xml中增加<Resource>标签

    与上面所述类似,讲Resource标签中的内容加入到Context标签中

以上两种方式不同之处在于第一种只对当前Context对应的应用有效,而第二种则对整个容器中的所有应用有效。

 

3.Java中调用JNDI

     在Java中调用tomcat的JNDI方式如下:

package com.tt.test.db;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpServlet;
import javax.sql.DataSource;

public class TestDBConnection extends HttpServlet {

	@Override
	public void init() throws javax.servlet.ServletException {
		String poolName = "dbtest";
		try {
			Context initCtx = new InitialContext();
			Context envCtx = (Context)initCtx.lookup("java:comp/env");
			DataSource ds = (DataSource)envCtx.lookup(poolName);
			Connection connection = null;
			
			try {
				connection = ds.getConnection();
				if (connection == null || connection.isClosed()) {
					System.out.println("连接失败~");
				} else {
					System.out.println("连接正常");
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	};
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值