转自:http://blog.csdn.net/fenglibing/article/details/4528512

Tomcat 5.5 JNDI Resource 配置

Author Blog:http://blog.csdn.net/fenglibing

该文是对Tomcat 5.5 JNDI Resource配置的翻译,文章中主要提到对<resource-ref>的配置操作,有我做一些取舍,原文的地址为:

http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html

一、简介

在Tomcat 5 中,每个WEB应用程序的初使化环境(InitialContext)可以配置于$CATALINA_HOME/conf/server.xml的<Context>节点中,也可以配置每个WEB应用程序环境(Context)于单独的XML文件中,如将每个WEB应用的配置放于$CATALINA_HOME/conf/Catalina/localhost目录下,名称可以为任意。

Tomcat 5为整个服务维护一个独立的全局资源命名空间,它们被配置于$CATALINA_HOME/conf/server.xml的<GlobalNameingResources>节点,你可以通过使用<ResourceLink>节点开放这些资源给WEB应用程序。

这些定义的资源,可以被定义于你当前的WEB应用的WEB应用布署描述(/WEB-INF/web.xml)文件中的以下节点使用:

l         <env-entry> :环境实体(Environment entry),一个单值参数(a single-value parameter)可以用于配置应用程序如何操作。

l         <resource-ref>:资源引用(Resource reference),典型的应用为JDBC DataSource、JavaMail Session,或者配置于Tomcat5中的自定义对象工厂。

l         <resource-env-ref>:资源环境引用(Resource environment reference),增加于Servlet 2.4中的resource-ref校验,这种可以简化资源配置,不需要授权信息。

InitialContext在WEB应用程序初使化的时候就被配置了,并且可以被WEB应用程序访问(只读的方式),所有配置的实体及资源,都放于JNDI命名空间的"java:comp/env"区。因此一个典型的资源访问,这里指对JDBC DataSource的访问,就像下面这样:

//Obtain our environment naming context

Context initCtx = new InitialContext();

Context envCtx = (Context) initCtx.lookup("java:comp/env");

//Look up our data source

DataSource ds = (DataSource)

envCtx.lookup("jdbc/EmployeeDB");

//Allocate and use a connection from the pool

Connection conn = ds.getConnection();

... use this connection to access the database ...

conn.close();

二、配置JNDI资源

每个可访问的JNDI资源配置于<Context>节点的如下节点:

l         <Environment> - 为scalar environment实体配置名称及值,这些实体通过JNDI InitialContext开发给WEB应用程序(与在WEB应用布署描述文件(/WEB-INF/web.xml)中增加<env-entry>节点配置相同)。

l         <Resource> - 配置应用于WEB应用程序的资源名称及数据类型(与在WEB应用布署描述文件(/WEB-INF/web.xml)中增加<resource-ref>节点配置相同)。

l         <ResourceLink> - 为定义于全局JNDI环境中的资源增加链接,这些资源链访问定义于<Server>节点下的<GlobalNamingResources>的资源。

l         <Transaction> - 为在java:comp/UserTransaction中有效的初使化UserTransaction对象实例增加资源工厂。

三、TOMCAT标准资源工厂

Tomcat 5 包括一系列的标准资源工厂,它们可以为你的WEB应用程序提供服务,并且配置灵活(配置于$CATALINA_HOME/conf/server.xml),不需要修改WEB应用程序及布署描述。

注意:在标准资源工厂中,只有"JDBC Data Source"及"User Transaction"工厂可以移植到其它非TOMCAT平台,其它的标准资源工厂,包括你编写的自定义资源工厂,都只可以在TOMCAT下运行,不可以移植到其它的平台。

JDBC数据源



Tomcat6.0数据源配置

方法一:

1.配置tomcat下的conf下的context.xml文件,在之间添加连接池配置:

<Resource name="jdbc/mydb"

       auth="Container"

       type="javax.sql.DataSource"

       driverClassName="oracle.jdbc.driver.OracleDriver"

       url="jdbc:oracle:thin:@localhost:1521:mydb"

       username="bmgis"

       password="bmgis"

       maxActive="100"

       maxIdle="30"

       maxWait="10000" />

2.配置你的应用下的web.xml中的之间加入:

<resource-ref>

    <description>DB Connection</description>

    <res-ref-name>jdbc/mydb</res-ref-name>

    <res-type>javax.sql.DataSource</res-type>

    <res-auth>Container</res-auth>

</resource-ref>

在以往的tomcat当中还需要在web.xml指定相应的resource,在tomcat 5.5以后的版本不写也可以,但建议还是配置。

3.把连接数据库的第三方驱动放到${CATALINA_HOME}/lib下面就ok了

4.测试程序test.jsp如下:

<%@ page import="javax.naming.*"%>

<%@ page import="java.sql.*"%>

<%@ page import="javax.sql.*"%>

<%

Context initContext = new InitialContext();

Context envContext  = (Context)initContext.lookup("java:/comp/env");

DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");

Connection conn = ds.getConnection();

conn.close();

%>



1、安装JDBC驱动

将JDBC驱动放于目录$CATALINA_HOME/common/lib

2、/WEB-INF/web.xml增加配置

<resource-ref>

<description>JDBC数据源配置实例</description>

<res-ref-name>jdbc/TestDB</res-ref-name>

<res-type>javax.sql.DataSource </res-type>

<res-auth>Container</res-auth>

</resource-ref>

3、配置TOMCAT资源工厂

<Context ...>

...

<Resource name="jdbc/TestDB" auth="Container"

type="javax.sql.DataSource"

factory="org.apache.commons.dbcp.BasicDataSourceFactory"

username="dbusername" password="dbpassword"

driverClassName="net.sourceforge.jtds.jdbc.Driver"

url="jdbc:jtds:sqlserver://testServer:1433/DB"

maxActive="8" maxIdle="4"/>

...

</Context>

相关属性说明:

name:JDBC数据源的名称。

auth:

type:当前配置资源的类别。

factory:数据源工厂,默认为"org.apache.commons.dbcp.BasicDataSourceFactory"。

driverClassName - 驱动的全路径类名。

maxActive - 当前数据源支持的最大并发数。

maxIdle - 连接池中保留最大数目的闲置连接数。

maxWait - 当连接池中无连接时的最大等待毫秒数,在等当前设置时间过后还无连接则抛出异常。

username - 访问数据库的用户名

password - 访问数据库的密码

url - JDBC驱动的连接字符串

validationQuery - 在返回应用之前,用于校验当前连接是否有效的SQL语句,如果指定了,当前查询语句至少要返回一条记录。

4、实例JAVA程序

Context initCtx = new InitialContext();

Context envCtx = (Context) initCtx.lookup("java:comp/env");

DataSource ds = (DataSource)

envCtx.lookup("jdbc/TestDB");

Connection conn = ds.getConnection();

... use this connection to access the database ...

conn.close();

JavaMail Session

Tomcat 5 包括一个标准的、用于创建javax.mail.Session session实例的资源工厂,该工厂将会自动连接配置于server.xml中的SMTP服务器。在这种情况下,具体的应用完全不用去管email服务的配置环境,只需要在需要的时候,做简单的请求、获取预配置的session。

1、安装JAR包

点击这里下载JavaMail的JAR包,JavaMail依赖于Java Activation Framework,因而也需要下载

2、在web.xml配置

<resource-ref>

<description>JavaMail配置</description>

<res-ref-name>mail/Session</res-ref-name>

<res-type>javax.mail.Session</res-type>

<res-auth>Container</res-auth>

</resource-ref>

3、配置$CATALINA_HOME/conf/server.xml

<Context ...>

...

<Resource name="mail/Session" auth="Container"

type="javax.mail.Session"

mail.smtp.host="localhost"/>

...

</Context>

注:默认的邮件服务端口为25,如果不是,则需要修改mail.smtp.host属性为指定的主机,如mail.smtp.host="localhost:26"。

4、JAVA示例程序

......

Context initCtx = new InitialContext();

Context envCtx = (Context) initCtx.lookup("java:comp/env");

Session session = (Session) envCtx.lookup("mail/Session");

Message message = new MimeMessage(session);

message.setFrom(new InternetAddress(request.getParameter("from"));

InternetAddress to[] = new InternetAddress[1];

to[0] = new InternetAddress(request.getParameter("to"));

message.setRecipients(Message.RecipientType.TO, to);

message.setSubject(request.getParameter("subject"));

message.setContent(request.getParameter("content"), "text/plain");

Transport.send(message);

......

Tomcat 5.5 JNDI Resource 配置 (tomcat数据源配置)的更多相关文章

  1. Tomcat中使用JNDI加载JDBC数据源

    以前写JDBC的时候总是手工写一个类,用硬代码写上className.url.用户名和密码什么的,然后通过DriverManager获取到Connection.那样写是很方便,但是如果想更改的话,需要 ...

  2. Tomcat 发布项目 conf/Catalina/localhost 配置 及数据源配置

    本文介绍通过在tomcat的conf/Catalina/localhost目录下添加配置文件,来发布项目.因为这样对 tomcat 的入侵性最小,只需要新增一个配置文件,不需要修改原有配置:而且支持动 ...

  3. SpringBoot配置 druid 数据源配置 慢SQL记录

    spring: datasource: url: jdbc:mysql://127.0.0.12:3306/test?autoReconnect=true&useUnicode=true&am ...

  4. yaml配置和ini配置的数据源配置和数据获取

    1.前言 关于yaml和ini的相关理论暂不做记录,不影响代码编写,百度即可. 2.关于配置文件的选择 yaml 和 ini 都使用过, 但是yaml更符合人类使用,已要弃用ini,后期各项目均采用y ...

  5. tomcat JNDI Resource 配置

    最近公司的项目慢慢开始向Maven项目迁移, 部分配置文件公共组也帮我们做了些改动,其中在spring的applicationContext.xml中看到了数据连接bean存在两个,一个是jndi 一 ...

  6. Spring MVC 使用tomcat中配置的数据源

    Spring MVC 使用tomcat中配置的数据源 配置tomcat数据源 打开tomcat目录下的conf目录,编辑sever.xml目录.在<GlobalNamingResources&g ...

  7. Spring配置DataSource数据源

    在Spring框架中有例如以下3种获得DataSource对象的方法: 1.从JNDI获得DataSource. 2.从第三方的连接池获得DataSource. 3.使用DriverManagerDa ...

  8. Spring中配置DataSource数据源的几种选择

    从JNDI获得DataSource. 从第三方的连接池获得DataSource. 使用DriverManagerDataSource获得DataSource. 一.从JNDI获得DataSource ...

  9. 使用 Tomcat 7 新的连接池 —— Tomcat jdbc pool

    Tomcat 在 7.0 以前的版本都是使用 commons-dbcp 做为连接池的实现,但是 dbcp 饱受诟病,原因有: dbcp 是单线程的,为了保证线程安全会锁整个连接池 dbcp 性能不佳 ...

随机推荐

  1. python实现tab键自动补全

    一.查询python安装路径,一般默认是/usr/lib64/ [root@host2 ~]# python Python (r266:, Jul , ::) [GCC (Red Hat -)] on ...

  2. 笔记8 AOP练习2

    场景描述: 一张唱片有好多磁道,假设每个磁道只有一首歌,现在需要记录每首歌的播放次数,然后输出. 主要业务:歌曲播放 辅助功能:记录播放次数(切面) 1.创建唱片接口,CompactDiscs.jav ...

  3. AD域中添加了一个策略导致的问题

    AD域中添加了一个策略,导致浏览器报了一个错,点击下拉菜单选不了.查了资料说是添加信任站点就好,结果信任站点是置灰的,服务器有这个问题,本地是好的. 解决办法:本地服务器有个ie增强设置,关掉就好.

  4. python基础(1)

    1.python中三元表达式 类比于C.C++.Java中都有的三目运算符,python中使用下面语句实现三元表达式 true_part if condition else false_part. c ...

  5. Linux学习之CentOS(一)--CentOS6.5环境搭建

    一.前言 作为一个从事运维工作好几年的老运维来说,linux系统怎能不学呢?所以,这几天自己准备学习一下linux操作系统.废话不多说,直奔主题. 要学linux开发,首先得要安装linux系统吧,这 ...

  6. audioplayer.js插件的使用及小bug

    之前在项目里用audioplayer.js做的一个页面,改了布局样式,还有插件自身有个bug就是audio添加autoplay属性后有两个音频播放,其中一个无法控制,会一直播放,我查看了官网的demo ...

  7. c# datatable row

    在指定索引位置插入新行 string fzmc = rs["fzmc"].ToString(); string mkmc = rs["mkmc"].ToStri ...

  8. lgp20151222 java中如何将Object类型转换为int类型

    if (object instanceof Integer) {    Integer.parseInt(object.toString()); } 很简单是不是?我就想提醒下自己,java有个特殊词 ...

  9. JAX-RPC 与 JAX-WS 的比较

    引言 Web 服务已经出现很久了.首先是 SOAP,但 SOAP 仅描述消息的情况,然后是 WSDL,WSDL 并不会告诉您如何使用 Java™ 编写 Web 服务.在这种情况下,JAX-RPC 1. ...

  10. Jupyter Notebook 快速入门

    Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特性,以 ...