`

Java开发(2) - Tomcat配置JNDI数据源

阅读更多

本例使用的数据库为Mysql 5.0,对于其它数据库只是修改一下相应的参数即可,
服务器是Tomcat5.5, 与之间的版本配置连接池最简便


第一步:

将驱动程序(jar包)放到tomcat安装目录下的common\lib文件夹下
第二步:

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

<?xml version="1.0" encoding="UTF-8"?> 
<Context>

 <Resource name="jdbc/test" 
  auth
="Container"
 
  type
="javax.sql.DataSource"

         maxActive
="100" 
  maxIdle
="30"
 
  maxWait
="10000"

         username
="root" password="root" 
  driverClassName
="com.mysql.jdbc.Driver"

         url
="jdbc:mysql://localhost/test"/>
 </Context>

 

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


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

第三步:

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

<?xml version="1.0" encoding="UTF-8"?> 
<web-app 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"
 
version
="2.4">
 

    <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>
 
</web-app>
 

 

说明:
<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 authors
</sql:query>

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

 以下是配置JNDI的其他方法,个人不建议使用,因为修改服务器的
server.xml和web.xml,如果有一点错误,你的容器就会崩溃~

注:连接数据源的方法还有很多,在这里我简要说之:
比如说第二步还可以这么做:

在/tomcat/conf/Catalina/localhost(或其它主机名)/中添加以
虚拟目录名称(你的工程名)命名的XML文件来配置context.
比如我的主机下有个目录dbpool其地址为tomcat/webapps/test我可以这样来配置这个上下文:
在tomcat/conf/Catalina/localhost/目录下创建test.xml文件,内容和上面一样.

还可以:
在/tomcat/conf/server.xml中<host></host>标签之间添加
 

<Context path="/test" docBase="test"
        debug
="5" reloadable="true" crossContext="true">
  <Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"
               maxActive
="100" maxIdle="30" maxWait="10000"
               username
="root" password="root" driverClassName="com.mysql.jdbc.Driver"
               url
="jdbc:mysql://localhost/langzhizun"/>
</Context>

 

其中path是你的工程路径(相对或绝对亦可),其中docBase="test"说明,此主机已经指向到webapps目录下了,回头
来看test这个上下文,它实际目录是位于webapps的目录下的,所以
在Context中我们可以将docBase直接设置为test了。如果它在webapps/dbpool/test下,则设置为dbpool/test就可以了。

附:JNDI——Java Naming and Directory Interface是一套提供naming和 directory功能的 API,
Java应用程式开发者透过使用 JNDI,在naming和 directory方面的应用上就有了共通的准则.

分享到:
评论

相关推荐

    java中使用tomcat提供的JNDI数据源

    java中使用tomcat提供的JNDI数据源

    tomcat-jndi-datasource:将 tomcat-maven-plugin 与 JNDI 数据源一起使用

    tomcat-jndi-数据源将 tomcat-maven-plugin 与 JNDI 数据源一起使用

    java-tomcat7-jndi-mysql-oracle-jdbc:访问Tomcat 7中配置的数据源

    使用 JNDI 示例访问 Tomcat7 数据源描述:访问 Tomcat 7 中配置的两个数据源(Oracle 和 MySQL)的 Web 应用程序添加一名作者技术:Java、Tomcat 7、JDBC 摘要:访问Tomcat 7中配置的数据源的Web应用程序它是什么?...

    springEmbeddedTomcatJNDI:Spring Boot 2.x嵌入式tomcat JNDI数据源(开发配置文件)+ WAR

    Spring Boot 2.x嵌入式tomcat JNDI数据源(开发配置文件)+ WAR 该代码旨在通过JNDI数据源查找保持数据库访问。 在开发中,使用配置了JNDI数据源的嵌入式tomcat运行在部署为WAR时,它将在服务器上查找真实的JDNI...

    TOMCAT7 JNDI修正版

    数据源可以不用写java:comp了,直接写ID和WEBLOGIC一样 数据源可以不用写java:comp了,直接写ID和WEBLOGIC一样数据源可以不用写java:comp了,直接写ID和WEBLOGIC一样

    java数据源配置包JNDI

    java连接数据库所用数据源JAR包 很多人都忘记在在tomcat的lib的文件夹下放这两个包 导致配好的context.xml不管用

    Simple-JNDI:通过JNDI查找访问属性文件。 从JNDI获取数据源

    如果您唯一的目的是测试或使用依赖于Tomcat之外的Tomcat JNDI环境的类,或者仅需要基于JNDI的数据源,请 (不要与Simple-JNDI混淆)。 Simple-JNDI的JNDI实现完全基于内存。 没有启动服务器实例。 一个java.util....

    Connecting-To-Database-Using-JNDI-

    使用 Tomcat 的 JNDI 数据源连接到数据库。 context.xml 是 Tomcat 的文件。 并且部署描述符中有一些 JNDI 代码(/WebContent/Web-INF/web.xml)。

    Tomcat和WebSphere中对jndi的引用

    在创建数据源后,在java中使用数据源时tomca和was的引用方法是不同的

    Tomcat统一配置C3P0连接池

    &lt;!-- 新的数据源 --&gt; &lt;bean id="dataSource2" class="org.springframework.jndi.JndiObjectFactoryBean"&gt; &lt;property name="jndiName"&gt; &lt;value&gt;java:comp/env/jdbc/commonDB &lt;/bean&gt;

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    怎样实现Java与oracle数据库的连接

    比如在Tomcat中配置了一个JNDI数据源,那么在程序中之需要用Java标准的API可以查找到这个数据源,以后数据源配置发生变化了,等等,程序都不需要改动,之需要改改JNDI的配置行。增加了程序的灵活性,也给系统解耦了...

    java web课程设计学生评教系统

    项目描述 此项目是java web的一个课程设计,基本完成了所有功能,基于bootstrap框架写的 运行环境 jdk7+tomcat7+mysql+...1.务必把Education_system\WebRoot\META-INF\context.xml也需要发布,否则找不到jndi数据源

    Java数据编程指南

    Java数据对象(JDO) 概述 JDO对象模型 JDO API JDO实例的生命周期 JDO和EJB 开发可持久类 范例应用程序 配置FFJ 配置数据源 捕获数据库模式 把类映射到数据库对象 编译类 ...

    activiti-explorer

    这是activiti-5.20.0版本的activiti-explorer,数据源改为了JNDI,数据库部署好之后,把本war包放到tomcat里面,然后修改activiti-explorer\META-INF\context.xml里面的数据库配置。

    JDBC 3.0数据库开发与设计

    第2章 JDBC开发环境及配置 2.1 数据库系统 2.1.1 SQL数据库数据库基本操作语句 2.1.2 Microsoft SQL Server数据库设计及ODBC配置 2.1.3 Oracle 数据库的基本说明及其使用简介 2.1.4 MySQL的安装及使用简介 ...

    Jetty中文手册

    在JNDI中配置数据源(DataSource) 内嵌Jetty服务器 内嵌Jetty教程 内嵌Jetty的HelloWorld教程 内嵌Jetty视频 优化Jetty 如何配置垃圾收集 如何配置以支持高负载 在Jetty中部署应用 部署管理器 部署绑定 热部署 ...

Global site tag (gtag.js) - Google Analytics