1. JNDI
JNDI是一套用于java 目录服务的API。Java应用可以通过JNDI按照命名来查找数据和对象。使用JNDI可以将app应用连接到外部服务,比如数据库..
2. Context
Tomcat 在StandardContext 维护了一个NamingResourcesImpl, 这个类在web应用初始化阶段保存了当前应用定义的资源。资源可以在server.xml中的<Context>元素下定义(但是不推荐);或者在自己的web应用的META-INF/context.xml中定义(推荐,因为这样每次更改context信息,就不用重新启动tomcat)。
当web应用启动时,Tomcat会为每个应用创建子Context。除了UserTransaction 位于 “java:comp"下, 其他的信息都位于 “java:comp.env" 下。在JNDI查找资源时,会找到当前应用对应的Context,然后根据命名找到我们想要的信息。
下图是web项目的目录:
web目录结构3.配置DataSource数据源
首先在META-INF/context.xml 中配置数据源信息(也可以在tomcat conf/context.xml 下配置,这样同一tomcat下的其他web应用也可以使用此数据源)。
数据源配置至此,我们就可以通过context找到相应的数据源信息。网上很多教程会在web.xml中添加“resource-ref”的配置,但是从概念上讲,web.xml中定义的是资源的引用,而context.xml定义的是配置的资源。既然已经能直接从context中找到相应的数据源信息,那么web.xml 中的引用岂不是重复的。
4. 实现数据库连接
在我们进行JNDI资源查找时,首先需要手动构造一个IntialContext。然后通过得到的context去上面说的"java:comp/env"下去查找。如下图:(注意:查找的name要与Resource中定义的name一致)
连接到数据库
网友评论