JNDI可用于配置数据连接。可用于配置Mail服务器。
JNDI由容器管理。
第一步:将mysql-connector-java-bin.jar包放到tomcat/lib中
第二步:创建一个数据库,创建一个表
修改项目的.class文件的编译目标:
WebContent/WEB-INF/classes第三步:项目的发布方式改为增加配置文件
第四步:配置JNDI
就是在Context节点中,配置Resource资源:
<ContextdocBase="D:/programfiles/eclipse-jee-juno-SR2-win32/wk01/0505/WebContent">
<Resource name="jdbc/jtedu"auth="Container" type="javax.sql.DataSource"
maxActive="4"maxIdle="30" maxWait="10000"
username="root"password="1234" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/oracle?characterEncoding=UTF8"/>
</Context>
第五步:在项目中使用Context类,查找在运行的环境中找这个资源
public class OneServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponseresponse)
throws ServletException, IOException {
try {
//1:声明上下文对象
Context context = new InitialContext();
System.err.println("1:"+context); // InitialContext
//2:获取这个类运行的环境,以下是固定写法,不能修改
Context ctx2 = (Context)context.lookup("java:/comp/env");
System.err.println("2:"+ctx2); //NamingContext
//3:在已经找到的环境中,再找一个资源
Object obj = ctx2.lookup("jdbc/jtedu");
System.err.println("3:"+obj); //BasicDataSource
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出的示例:
第六步,将获取JNDI数据源的代码放到工厂类中
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DataSourceUtils {
private static DataSource ds;
static{
try {
//1:声明上下文对象
Context context = new InitialContext();
System.err.println("1:"+context);
//2:获取这个类运行的环境,以下是固定写法,不能修改
Context ctx2 = (Context)context.lookup("java:/comp/env");
System.err.println("2:"+ctx2);
//3:在已经找到的环境中,再找一个资源
Object obj = ctx2.lookup("jdbc/jtedu");
ds= (DataSource) obj;
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getDataSource(){
return ds;
}
}