tomcat 配置jndi datasource

 1)在server.xml中配置数据源

       <Context path="/jndi" docBase="D:/Documents and Settings/sunxf/workspace/jndi" > 
<Resource name="jdbc/myoracle" auth="Container" type="javax.sql.DataSource"/> 
<ResourceParams name="jdbc/myoracle"> 
<parameter> 
<name>username</name> 
<value>sunxf</value> 
</parameter> 
<parameter> 
<name>password</name> 
<value>sunxf</value> 
</parameter> 
<parameter> 
<name>driverClassName</name> 
<value>oracle.jdbc.driver.OracleDriver</value> 
</parameter> 
<parameter> 
<name>url</name> 
<value>jdbc:oracle:thin:@127.0.0.1:1521:SUNXF</value> 
</parameter> 
</ResourceParams> 
</Context>

 


2)在web.xml中配置:

      <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
 <res-auth>Container</res-auth>
</web-app>

 


3)编写JSP测试:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ page import="javax.naming.*,javax.sql.DataSource, java.sql.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'javabeansource.jsp' starting page</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->

  </head>
 
  <body>
    <%Context initContext = new InitialContext();
 Context envContext  = (Context)initContext.lookup("java:/comp/env");
 DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
 Connection conn = ds.getConnection();
    out.println("ok");
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("select id from t1");
    while(rs.next()){
    out.println(rs.getInt(1));};
    %>
  </body>
</html>


4)结果:

  http://localhost:8088/jndi/WebRoot/javabeansource.jsp

ok 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808

 

 

 

 

在Tomcat 下 配置SQLServer连接池 的方法总结
2009-04-29 18:11

一.在tomcat_home/common下放入jdbc的三个驱动程序(一定要的哦),可以在微软的网站上去下载,安装的SQLSERVER2k默认的用户名是sa,密码是空,但密码为空并不代表没有密码,所以你的url中一定要定义username和 password,最好是重设定一下密码
二.出现不能引用错误的话一般就是路径没有写对,tomcat默认的路径是tomcat_home/webapps/不过使用5.5.x的话,按下面方法就行,不需要配置路径,而且也不用在youwebapp/WEB-INF/web.xml文件配置引用
三. tomcat5.5.x版的server.xml配置与tomcat5.0的配置不同,下面列举三种在tomcat5.5.x的配置方法,如果配置不正确会出现javax.naming.NameNotFoundException: Name is not bound in this Context 错误
方式一、全局数据库连接池
1、通过管理界面配置连接池,或者直接在tomcat/conf/server.xml的GlobalNamingResources中增加
<Resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>
2、在tomcat/webapps/myapp/META-INF/context.xml的Context中增加:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
这样就可以了。
方式二、全局数据库连接池
1、同上
2、在tomcat/conf/context.xml的Context中增加:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
方式三、局部数据库连接池
只需在tomcat/webapps/myapps/META-INF/context.xml的Context中增加:
<Resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>
参数说明:
driveClassName:JDBC驱动类的完整的名称;
maxActive:同时能够从连接池中被分配的可用实例的最大数;
maxIdle:可以同时闲置在连接池中的连接的最大数;
maxWait:最大超时时间,以毫秒计;
password:用户密码;
url:到JDBC的URL连接;
user:用户名称;
validationQuery:用来查询池中空闲的连接。
以上三种方式在tomcat 5.5.4下都可以。另外,sql server的jdbc driver是从微软网站上下载的sql server jdbc (sp3)。
四. 报错org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)此是一个小问题,因为我的SQLSERVER2K的服务改成手动的,所以每次启动后就要手动的启动SQLSERVER2K,由于一下子不记的启动了,所以报些错误,所以如果你经常要用到SQLSERVER2K的话,最好不要将其改为手动启动


web 界面配置方法

认为最简单的方法,Tomcat4.1.29为例
1、把数据库的驱动文件Copy到Tomcat你的webapp下WEB-INF/lib文件夹中
2、启动TOmcat,进入管理员界面(TOmcat主页左上角有链接,如果不知道密码,请打开Tomcat文件中conf文件夹下tomcat-users.xml文件,用记事本就可以打开,里面有admin的用户名和密码,admin的默认密码为空)
3、点击左栏 Tomcat Server=》Service=》Host=》你的Webapp的Context=》Resources=》Data Sources
4、在右栏的Data Source Actions 下拉框中选择 Create NEw Data Source=》然后配置DataSource信息

如下,以MSSQL为例:
JNDI Name: jdbc/mssql
Data Source URL: jdbc:microsoft:sqlserver://192.168.0.52:1433;databaseName=abu
JDBC Driver Class:com.microsoft.jdbc.sqlserver.SQLServerDriver
User Name:abu
Password: abu
Max. Active Connections: 4
Max. Active Connections: 2
Max. Wait for Connection: 5000
Validation Query://可以不填


5、点击Save按钮=》点击页头的 Commit Changes按钮
6、重新启动服务,在测试页面中输入如下代码

<table width="663" border="0"> <tr> <td width="383"><%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
DataSource ds = null;
try{
InitialContext ctx=new InitialContext();
ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mssql");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
String strSql = " select * from ttt";
ResultSet rs = stmt.executeQuery(strSql);
while(rs.next()){
System.out.println(rs.getString(1));
}
}
catch(Exception ex){
ex.printStackTrace();
}
%>
7、在控制台就应该能看见打印出来的东西了。 </td> <td width="270" valign="top"> </td> </tr> </table>


</td> </tr> <tr>

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值