tomcat5.5 JDNI 数据源配置

canca canca
2008-09-23 17:51
2
0

1)启动Tomcat服务器,打开浏览器,输入http://localhost:8080/admin(其中localhost是名称服务器或称为主机),
进入 管理界 面的登陆页面,这时候请输入原来安装时要求输入的用户名和密码,登陆到管理界面,

2)选择Resources-Data sources进入配置数据源界面,选择
Data Source Actions ->选择Create New Data Source,进入配置详细信息界面
主要内容例如下:
JNDI Name: ->jdbc/MobileMail

Data Source URL ->jdbc:mysql://localhost:3306/test
JDBC Driver Class->jdbc:microsoft:sqlserver://localhost:1433;databaseName=Email;

3)修改\conf\Catalina\localhost目录下建立一个xml文件,名称为你所发布的web应用的名称.xml,(如MobileMail.xml)打开添加内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/MobileMail" auth="Container" type="javax.sql.DataSource"
maxActive="20" maxIdle="10" maxWait="-1"
username="sa" password=""
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=Email;"
/>
</Context>


内容同conf/server.xml中<GlobalNamingResources>
<Resource name="jdbc/MobileMail" auth="Container" type="javax.sql.DataSource"
maxActive="20" maxIdle="10" maxWait="-1"
username="sa" password=""
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=Email;"
/>
</GlobalNamingResources>

少了这一步会报错:Cannot create JDBC driver of class '' for connect URL 'null'
4)修改web.xml

打开%TOMCAT_HOME%\conf\web.xml,在的前面添加以下内容:
<resource-ref>        
     <description>DB2 Datasource </description>        
     <res-ref-name>jdbc/MobileMail</res-ref-name>        
     <res-type>javax.sql.DataSource</res-type>        
     <res-auth>Container</res-auth>       
   </resource-ref>
    注意res-ref-name填写的内容要与在上文提到的JNDI Name名称一致。
到这里,配置 工作就基本完成了!

5)引用JNDI创建数据源

private static Connection con;

public static Connection getConnection() {
   Context initCtx = null;
   DataSource ds=null;
   try {
    initCtx = new InitialContext();
    Context envCtx = (Context) initCtx.lookup("java:comp/env");
    ds= (DataSource)envCtx.lookup("jdbc/MobileMail");
   } catch (NamingException e1) {
    e1.printStackTrace();
   }
    try {
    con = ds.getConnection( );
   } catch (SQLException e) {
    e.printStackTrace();
   }
   return con;

}

发表评论