Tomcat 5.5 JNDI Resource 配置 (tomcat数据源配置)
转自: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数据源配置)的更多相关文章
- Tomcat中使用JNDI加载JDBC数据源
以前写JDBC的时候总是手工写一个类,用硬代码写上className.url.用户名和密码什么的,然后通过DriverManager获取到Connection.那样写是很方便,但是如果想更改的话,需要 ...
- Tomcat 发布项目 conf/Catalina/localhost 配置 及数据源配置
本文介绍通过在tomcat的conf/Catalina/localhost目录下添加配置文件,来发布项目.因为这样对 tomcat 的入侵性最小,只需要新增一个配置文件,不需要修改原有配置:而且支持动 ...
- SpringBoot配置 druid 数据源配置 慢SQL记录
spring: datasource: url: jdbc:mysql://127.0.0.12:3306/test?autoReconnect=true&useUnicode=true&am ...
- yaml配置和ini配置的数据源配置和数据获取
1.前言 关于yaml和ini的相关理论暂不做记录,不影响代码编写,百度即可. 2.关于配置文件的选择 yaml 和 ini 都使用过, 但是yaml更符合人类使用,已要弃用ini,后期各项目均采用y ...
- tomcat JNDI Resource 配置
最近公司的项目慢慢开始向Maven项目迁移, 部分配置文件公共组也帮我们做了些改动,其中在spring的applicationContext.xml中看到了数据连接bean存在两个,一个是jndi 一 ...
- Spring MVC 使用tomcat中配置的数据源
Spring MVC 使用tomcat中配置的数据源 配置tomcat数据源 打开tomcat目录下的conf目录,编辑sever.xml目录.在<GlobalNamingResources&g ...
- Spring配置DataSource数据源
在Spring框架中有例如以下3种获得DataSource对象的方法: 1.从JNDI获得DataSource. 2.从第三方的连接池获得DataSource. 3.使用DriverManagerDa ...
- Spring中配置DataSource数据源的几种选择
从JNDI获得DataSource. 从第三方的连接池获得DataSource. 使用DriverManagerDataSource获得DataSource. 一.从JNDI获得DataSource ...
- 使用 Tomcat 7 新的连接池 —— Tomcat jdbc pool
Tomcat 在 7.0 以前的版本都是使用 commons-dbcp 做为连接池的实现,但是 dbcp 饱受诟病,原因有: dbcp 是单线程的,为了保证线程安全会锁整个连接池 dbcp 性能不佳 ...
随机推荐
- inline使用
二八法则: 1.将inline限定在最小的,最频繁调用的函数上面.这会使你的调试,二进制升级变得容易,并能将潜在的代码膨胀问题最小化,提高程序运行速度可能性最大化. 2.不要仅仅因为函数模板出现在头文 ...
- vim的基本介绍
vim四种模式: 1.正常模式(Normal-mode) 当我们打开vim时就会进入到正常模式,这个时候是不能编辑的,一般用于浏览文件,包括复制,删除一些文本操作.我们可以通过键盘的上下左右来进行光标 ...
- windows平台下cocos2d-x-3.0beta2创建新项目
我目前使用的版本是cocos2d-x-3.0beta2 前提: 已安装了python2.7.3 已安装了VS2012 打开我的cocos2d-x-3.0beta2所在文件夹F:\Framework\c ...
- Win2003及2008R2重启自动登录设置方法
在windows系统中,使用最多的可能就是远程操作了,关于远程操作的那些事很多用户还是有些迷茫的.如果win2003系统远程重启后,要重新登录系统才能启用远程功能,这就十分的麻烦,如何才能实现重启后的 ...
- 用 ConfigMap 管理配置 - 每天5分钟玩转 Docker 容器技术(159)
Secret 可以为 Pod 提供密码.Token.私钥等敏感数据:对于一些非敏感数据,比如应用的配置信息,则可以用 ConfigMap. ConfigMap 的创建和使用方式与 Secret 非常类 ...
- 【.NET Core】docker Jenkins ASP.NET Core自动化部署
本文基于GitHub演示自动化部署,实际上你可以选择任意的Git托管环境. 使用的模式:DooD(Docker-outside-of-Docker). 本文所有内容均开源 链接 欢迎关注我的GitHu ...
- mongoose多条件模糊查询实例
mongoose多条件模糊查询 这是今天手头项目中遇到的一个问题,关于mongoose如何实现类似于SQL中 nick LIKE '%keyword%' or email LIKE '%keyword ...
- 一个蒟蒻对FFT的理解(蒟蒻也能看懂的FFT)
建议同学们先自学一下"复数(虚数)"的性质.运算等知识,不然看这篇文章有很大概率看不懂. 前言 作为一个典型的蒟蒻,别人的博客都看不懂,只好自己写一篇了. 膜拜机房大佬 HY 一. ...
- 小知识点 取消button动作 和取巧按钮高亮
如果让按钮在点击时不变暗 进行下面设置: 如果使butten失去动画效果进行下面设置:(一般用于图片+文字,效果等于可以加图片班的label,当然label不能加图片)
- Docker 自定义网桥
除了默认的 docker0 网桥,用户也可以指定网桥来连接各个容器. 在启动 Docker 服务的时候,使用 -b BRIDGE或--bridge=BRIDGE 来指定使用的网桥. 如果服务已经运行, ...