tomcat jndi sqlserver2005 配置

 

本例使用的数据库为Ms SQL Server 2005,对于其它数据库只是修改一下相应的参数即可,
服务器是Tomcat7.0, 与之间的版本配置连接池最简便
自己总结了一下,希望起到一个抛砖引玉的作用

总结:
第一步:

将驱动程序(jar包)放到tomcat安装目录下的common\lib文件夹下(注意:我一开始是将jar包加在工程目录WEB-INF的lib里面,所以提示找不到对应的驱动。其实只要在common\lib加入驱动jar包就可以了。)
第二步:

在Tomcat的webapps目录随便创建一个工程目录,例如JNDITest。在JNDITest目录下创建META-INF目录,在此目录下创建一个context.xml文件,里面的内容如下:

<?xml version="1.0" encoding="UTF-8"?> 
<Context>
 <Resource name="jdbc/test"             <!--这个与等会web配置中的value/name对应-->
  auth="Container"                                   <!--这个可以不用(可选属性)-->
  type="javax.sql.DataSource"               <!--这个与等会web配置中的type对应-->
  maxActive="100" 
  maxIdle="30" 
  maxWait="10000"
  username="sa" password="" 
  driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
  url="jdbc:sqlserver://localhost:1433;DatabaseName=JNDITest"/>
 </Context>

 

附注如下:
Tomcat标准数据源资源工厂配置项如下:
* driverClassName - 所使用的JDBC驱动类全称。
* maxActive - 同一时刻可以自数据库连接池中被分配的最大活动实例数。
* maxIdle - 同一时刻数据库连接池中处于非活动状态的最大连接数。
* maxWait - 当连接池中没有可用连接时,连接池在抛出异常前将等待的最大时间,单位毫秒。
* password - 传给JDBC驱动的数据库密码。
* url - 传给JDBC驱动的连接URL。
* user - 传给JDBC驱动的数据库用户名。
* validationQuery - 一个SQL查询语句,用于在连接被返回给应用前的连接池验证。
* 如果指定了该属性,则必为至少返回一行记录的SQL SELECT语句。

*auth:指定管理Resource的Manager,由两个可选值:Container和Application。Container表示由容器来创建和管理Resource,Application表示由WEB应用来创建和管理Resource。如果在web application deployment descriptor中使用<resource-ref>,这个属性是必需的,如果使用<resource-env-ref>,这个属性是可选的。


jdbc/test是数据源的名称(随意写,要和web.xml文件中 <res-ref-name>jdbc/test</res-ref-name> 一样即可),
其他的参数按照自己的实际情况进行修改,例如数据库的名称、账号、密码。

第三步:

在JNDITest目录下创建WEB-INF目录,创建web.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

<!--配置jstl标签:这个需要将jstl.jar、standar.jar导入WEB-INF的lib里面-->
   <jsp-config>
     <taglib>
       <taglib-uri>/tags/struts-bean</taglib-uri>
       <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>
     </taglib>
     <taglib>
       <taglib-uri>/tags/struts-html</taglib-uri>
       <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>
     </taglib>
     <taglib>
       <taglib-uri>/tags/struts-logic</taglib-uri>
       <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>
     </taglib>
     <taglib>
       <taglib-uri>/tags/struts-nested</taglib-uri>
       <taglib-location>/WEB-INF/tld/struts-nested.tld</taglib-location>
     </taglib>
     <taglib>
       <taglib-uri>/tags/struts-tiles</taglib-uri>
       <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>
     </taglib>
   </jsp-config>
 
   <!--database JNDI name configuration 配置1-->
 <env-entry>
  <env-entry-name>JNDIname</env-entry-name>
  <env-entry-type>javax.sql.DataSource</env-entry-type>
  <env-entry-value>jdbc/test</env-entry-value>
 </env-entry>

<!--database JNDI name configuration 配置1-->

<!--database JNDI name configuration 配置2

   <resource-ref> 
        <description>DB Connection</description> 
        <res-ref-name>jdbc/test</res-ref-name> 
        <res-type>javax.sql.DataSource</res-type> 
        <res-auth>Container</res-auth> 
    </resource-ref> 
                                                                      配置2-->

</web-app>


配置1类似配置2,两种选其一。

配置2说明:
<resource-ref>
<descrtiption>引用资源说明</descrtiption>
<res-ref-name>引用资源的JNDI名</res-ref-name>
<res-type>引用资源的类名</res-type>
<res-auth>管理者(Container)</res-auth><!--Container-容器管理 Application-Web应用管理-->
</resource-ref>
第四步:

写个jsp,试一下吧!

<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*,com.DBConnection" %>
<%
  try
  {
   //初始化查找命名空间
   Context ctx = new InitialContext(); 
   //InitialContext ctx = new InitialContext();亦可 
   //找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟你的DataSource名
   DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/test");
   //取出连接
   Connection conn = ds.getConnection();
System.out.println("connection pool connected !!");   
  } catch (NamingException e) {
   System.out.println(e.getMessage());
  } catch (SQLException e) {
   e.printStackTrace();
  }finally
  {
   //注意不是关闭,是放回连接池.
   conn.close();
  }

}
%>


或写个JSP用标签库测试一下:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<sql:query var="rs" dataSource="jdbc/test">
select * from test
</sql:query>

<html>
  <head>
    <title>DB Test</title>
  </head>
  <body>
<c:forEach var="row" items="${rs.rows}">
    ${row.id}<br/>
</c:forEach>
  </body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值