• Tomcat 6.0+ SQL Server 2005连接池的配


    转自:http://blog.csdn.net/zzz_robinson/article/details/5570748

    Tomcat连接池连接SQL Server 2005 Express

    在Tomcat作为服务器调试JSP时,可以通过配置数据库连接池,实现简单配置。

    下面是配置连接SQL Server 2005 Express的过程,JDBC为Microsoft的Microsoft SQL Server 2005 JDBC Driver1.2。

    首先要保证能够正常调试JSP,也就是安装JSDK,和Tomcat,我选择的较旧的版本,j2sdk1.4.2_06和Tomcat 5.0.16。

    安装完成后配置ClassPath,(安装目录为:D:/j2sdk1.4.2_06和D:/Program Files/Apache Software Foundation/Tomcat 5.0)

    1、配置系统变量JAVA_HOME:D:/j2sdk1.4.2_06

    2、系统变量CATALINA_HOME:/Program Files/Apache Software Foundation/Tomcat 5.0

                       CATALINA_BASE:D:/Program Files/Apache Software Foundation/Tomcat 5.0

    3、配置系统变量classpath:

    .;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;D:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/servlet-api.jar

    4、在系统变量Path最后添加:%JAVA_HOME%/bin

    5、将JDBC1.2安装目录下的sqljdbc.jar,复制到D:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib,将D:/j2sdk1.4.2_06/lib/tools.jar也复制到该目录。

    以上配置完成后重新启动计算机,使设置生效,然后启动Tomcat,打开http://localhost:8080/,Tomcat的欢迎画面说明成功。

    下面是数据库的配置,SQL Server 2005 Express在安装完成后是不允许通过TCP/IP连接的,因此需要配置:

    进入SQL Server 2005 Express配置工具--SQL Server 外围应用配置器,在服务和连接的外围应用配置器中,配置使用TCP/IP连接。如下图:

    配置完成后,重新启动SQLServer服务

    可以配置SQL SERVER安全性,允许设定的用户连接,而不是使用sa进行连接。

    另外值得注意的是,需要设置SQL SERVER使用SQL SERVER的身份验证模式:

    在SQL SERVER Management Studio对象资源管理器中,右击服务器实例名称,在属性窗口中设置使用SQL SERVER和Windows 身份验证模式:

    此时,便可以使用你创建的用户来访问SQL SERVER了,这里我创建了一个数据库Teacherinfo,并创建用户teacher,密码123456,来作为数据库OWER,通过网络访问

    下面开始Tomcat 的配置:

    1、进入http://localhost:8080/,打开Tomcat Administrator,登入,选择Data Sources,然后选择创建新的数据源,名称为MSSQL,需要在程序中使用,可以随便取,最好有标示作用:

    配置说明:

    JNDI Name:注册到JNDI树上的名字(可以随便写)
    Data Source URL:连接数据库的URL
    JDBC Driver Class:Jbdc数据库的驱动名称
    User Name:访问数据库的用户
    Password:访问数据库的密码
    Max. Active Connections:最大活跃连接数,指同时可以有多少个连接,设置为0没有限制
    Max. Idle Connections:最大空闲连接数,表示没有数据库连接时,连接池也必须保持最大空闲连接数,设置为0没有限制
    Max. Wait for Connection:连接建立等待时间,单位为毫秒,设置为-1无限制
    Validation Query::此参数用来查询池中的空闲连接(可以不配置)

    注意:在SQL SERVER 2005中连接项与SQL SERVER 2000不同:

    jdbc:sqlserver://localhost:1433;DatebaseName=teacherinfo
    com.microsoft.sqlserver.jdbc.SQLServerDriver
     
    其他选项根据需要填写,用户名和密码不要填写错了。
    填写完成后,单击SAVE保存,还要单击:Commit Changes按钮提交修改,否则将不会生效
     
    完成后,打开Tomcat的server.xml文件,发现已经在 <GlobalNamingResources>和</GlobalNamingResources>之间添加了如下代码:(所以也可以自己直接添加)

     
     <Resource type="javax.sql.DataSource" name="MSSQL"/>
           <ResourceParams name="MSSQL">
          <parameter>
            <name>url</name>
            <value>jdbc:sqlserver://localhost:1433;DatebaseName=teacherinfo</value>
          </parameter>
          <parameter>
            <name>password</name>
            <value>123456</value>
          </parameter>
          <parameter>
            <name>maxActive</name>
            <value>4</value>
          </parameter>
          <parameter>
            <name>maxWait</name>
            <value>5000</value>
          </parameter>
          <parameter>
            <name>driverClassName</name>
            <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
          </parameter>
          <parameter>
            <name>username</name>
            <value>teacher</value>
          </parameter>
          <parameter>
            <name>maxIdle</name>
            <value>2</value>
          </parameter>
        </ResourceParams>

    2、配置完成了,下面就是如何应用到程序中去了,假设有一个WEB应用程序,mclass可以通过http://localhost:8080/mclass 的形式访问,那么在:D:/Program Files/Apache Software Foundation/Tomcat 5.0/conf/Catalina/localhost目录中应该有一个mclass.xml文件,内容至少应该包含如下:

     <Context path="/mclass" displayName="Welcome to Tomcat" docBase="F:/mclass"></Context>

    现在在<Context></Context>之间添加上数据库连接的内容,否则该程序将无法使用连接池,添加后如下(内容是从server.xml中复制过早来的):

     <Context path="/mclass" displayName="Welcome to Tomcat" docBase="F:/eclipse/workspace/mclass">
      <Resource type="javax.sql.DataSource" name="MSSQL"/>
      <ResourceParams name="MSSQL">
        <parameter>
          <name>url</name>
          <value>jdbc:sqlserver://localhost:1433;DatebaseName=teacherinfo</value>
        </parameter>
        <parameter>
          <name>password</name>
          <value>123456</value>
        </parameter>
        <parameter>
          <name>maxActive</name>
          <value>4</value>
        </parameter>
        <parameter>
          <name>maxWait</name>
          <value>5000</value>
        </parameter>
        <parameter>
          <name>driverClassName</name>
          <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
        </parameter>
        <parameter>
          <name>username</name>
          <value>teacher</value>
        </parameter>
        <parameter>
          <name>maxIdle</name>
          <value>2</value>
        </parameter>
      </ResourceParams>
    </Context>

    3、现在当然还不可以,需要配置程序目录中的web.xml,本程序在F:/mclass

    打开F:/mclass/WEB-INF中的web.xml,添加如下代码,到<web-app></web-app>之间

    <resource-ref>
      <description>sqlserverDB Connection</description>
      <res-ref-name>MSSQL</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
    </resource-ref>

    description是描述,自己定义

    res-ref-name是连接的名称,必须与在Tomcat中连接池的名称一致,此处是MSSQL

    res-type当然是javax.sql.DataSource了

    res-auth是程序中使用的

    至此,配置完全完成,下面就是测试了,首先重新启动Tomcat,以使配置生效,然后在F:/mlass中创建一个文件如test.jsp,内容可以参考如下代码:

     <%@ page contentType="text/html;charset=GBK"%>
    <%@ page import="java.sql.*" %>
    <%@ page import="javax.naming.*" %>
    <%@ page import="javax.sql.*" %>
    <html>
    <head>
    <title>test</title>
    </head>
    <body>
    <%   
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        ResultSetMetaData md = null;
        try
        {
         Context initCtx = new InitialContext();
         DataSource ds = (DataSource)initCtx.lookup("java:comp/env/MSSQL");
         if(ds!=null)
         {
          out.println("已经获得DataSource<br>");     //显示获取的DataSource
          out.println(ds.toString());
          conn = ds.getConnection();
          out.println("conn=" + conn + "<br>");
          stmt = conn.createStatement();
           rs = stmt.executeQuery("select * from teacher");   //获取teacher表中的数据
          md = rs.getMetaData();
          out.println("<table border=1>");
          out.println("<tr align='center'>");

         //获取字段名称,作为表格第一行
          for(int i=0; i<md.getColumnCount();i++)
           out.println("<td>" + md.getColumnName(i+1) + "</td>");  

          out.println("</tr>");

        //显示获取的表格数据
          while(rs.next())
          {
           out.println("<tr>");
           for(int j=0;j<md.getColumnCount();j++)
            out.println("<td>" + rs.getString(j+1) + "&nbsp;</td>");
           out.println("</tr>");        
          }
          out.println("</table>");

           //关闭连接,此处关闭连接,只是将其又放回到连接池中,还可以再次使用
          conn.close();         
         }
        }
      catch(Exception e)
      {
       out.println(e.toString());
       System.out.println(e.toString());
      }
     
    %>

    <</body>
    </html>

  • 相关阅读:
    六十:权限提升-MY&MS&ORA等SQL数据库提权
    五十九:权限提升-Win溢出漏洞及AT&SC&PS提权
    五十八:权限提升-网站权限后台漏洞地第三方获取
    在kaili装git与git-lfs
    机器学习中的最优化算法总结
    动态规划及意义
    对于中变量与类的使用感想
    安装awvs教程参照
    kali乱码问题
    linux与Mac互相粘贴存在障碍,可以用这个命令联系起来
  • 原文地址:https://www.cnblogs.com/wangpei/p/2461736.html
Copyright © 2020-2023  润新知