1.关于tomcat的server.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:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-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
package com.yhd.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 = "cmsplat"; 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(); } }; }
原文地址:http://blog.csdn.net/dongdong9223/article/details/44084023