tomcat JNDI Resource 配置
最近公司的项目慢慢开始向Maven项目迁移, 部分配置文件公共组也帮我们做了些改动,其中在spring的applicationContext.xml中看到了数据连接bean存在两个,一个是jndi 一个是datasource.对jndi的数据连接不上很熟悉, 所以就搜索了相关的资料,在此做一下笔记。
在spring的applicationContext.xml文件中
jndi的写法如下:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/b2b</value>
</property>
</bean>
datasource的写法如下:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.sybase.jdbc3.jdbc.SybDriver" />
<property name="url" value="jdbc:sybase:Tds:192.168.102.12:5000/test" />
<property name="username" value="developtest" />
<property name="password" value="1234567890" />
<property name="maxIdle" value="1" />
<property name="maxActive" value="3" />
<property name="maxWait" value="10000" />
<property name="logAbandoned" value="true" />
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="120" />
</bean>
上面使用datasource的写法,就直接配置好了数据源。而jndi的写法除此之外还需要在web项目中的web.xml中添加一个节点来申明资源的引用,web.xml如下:
<web-app>
...
<resource-ref>
<description>b2bjoy Datasource</description>
<res-ref-name>jdbc/b2b</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
...
</web-app>
最后在tomcat的conf目录下的context.xml增加一个reource节点来开放这些资源给WEB应用程序。
<Context>
...
<Resource name="jdbc/b2b" auth="Container"
type="javax.sql.DataSource"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
username="developtest" password="1234567890"
driverClassName="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://testServer:1433/DB"
maxActive="8" maxIdle="4"/>
...
</Context>
至此,将数据源切换成jndi模式,启动web项目,就能正常连接到数据源了,那么jndi配置是怎么回事,下面就来讲述一下.
Tomcat 5.5 JNDI Resource 配置
一、简介
在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)文件中的以下节点使用:
- <env-entry> :环境实体(Environment entry),一个单值参数(a single-value parameter)可以用于配置应用程序如何操作。
- <resource-ref>:资源引用(Resource reference),典型的应用为JDBC DataSource、JavaMail Session,或者配置于Tomcat5中的自定义对象工厂。
- <resource-env-ref>:资源环境引用(Resource environment reference),增加于Servlet 2.4中的resource-ref校验,这种可以简化资源配置,不需要授权信息。
InitialContext在WEB应用程序初使化的时候就被配置了,并且可以被WEB应用程序访问(只读的方式),所有配置的实体及资源,都放于JNDI命名空间的"java:comp/env"区。因此一个典型的资源访问,这里指对JDBC DataSource的访问。
二、配置JNDI资源
每个可访问的JNDI资源配置于<Context>节点的如下节点:
- <Environment> - 为scalar environment实体配置名称及值,这些实体通过JNDI InitialContext开发给WEB应用程序(与在WEB应用布署描述文件(/WEB-INF/web.xml)中增加<env-entry>节点配置相同)。
- <Resource> - 配置应用于WEB应用程序的资源名称及数据类型(与在WEB应用布署描述文件(/WEB-INF/web.xml)中增加<resource-ref>节点配置相同)。
- <ResourceLink> - 为定义于全局JNDI环境中的资源增加链接,这些资源链访问定义于<Server>节点下的<GlobalNamingResources>的资源。
- <Transaction> - 为在java:comp/UserTransaction中有效的初使化UserTransaction对象实例增加资源工厂。
三、TOMCAT标准资源工厂
Tomcat 5 包括一系列的标准资源工厂,它们可以为你的WEB应用程序提供服务,并且配置灵活(配置于$CATALINA_HOME/conf/server.xml),不需要修改WEB应用程序及布署描述。
注意:在标准资源工厂中,只有"JDBC Data Source"及"User Transaction"工厂可以移植到其它非TOMCAT平台,其它的标准资源工厂,包括你编写的自定义资源工厂,都只可以在TOMCAT下运行,不可以移植到其它的平台。
JDBC数据源
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);
......
以上简述转自:http://blog.csdn.net/fenglibing/article/details/4528512
tomcat JNDI Resource 配置的更多相关文章
- Tomcat 5.5 JNDI Resource 配置 (tomcat数据源配置)
转自:http://blog.csdn.net/fenglibing/article/details/4528512 Tomcat 5.5 JNDI Resource 配置 Author Blog:h ...
- Linux - tomcat -jndi数据源配置
Linux - tomcat -jndi数据源配置 tomcat/conf/context .xml 文件中修改如下 <Resource name="/jdbc/--" au ...
- Tomcat JNDI + spring配置
http://hi.baidu.com/lzpsky/item/f9a727ba823257eb4ec7fd27 一.简介 JNDI : Java Naming and Directory Inter ...
- Hibernate Tomcat JNDI数据源配置(转)
简述: 配置JNDI 查找Tomcat 中server.xml中定义的数据源 步骤: 1. 修改elipse的数据源server.xml 主要修改如下, 1. 添加下面这段Context文本 其中St ...
- Tomcat 6 部署工程总结,使用JNDI数据源配置
工程需要用JNDI数据源方式部署到tomcat,参考网上文章后,经过配置测试,摸索出来了. 环境说明: 数据库:Oracle9i Web服务器:tomcat-6.0.33 tomcat启动方式 ...
- tomcat dbcp 基于jndi当配置java.sql.SQLException: Already closed
最近发现了一个现象,观察到的生产环境,不要有一段时间操作,然后另一个操作,首先将有一个数据库连接:java.sql.SQLException: Already closed.,例如下列: error ...
- TOMCAT下的JNDI的配置
一.第一种配置局部JNDI 1.在tomcat的conf目录下的server.xml的<host>标签内,添加: <Context path="/TestMvcMode&q ...
- Tomcat连接池配置与实现/JNDI
方法一: 在Tomcat的conf/context.xml中配置在Tomcat\apache-tomcat-6.0.33\conf目录下的context.xml文件中配置默认值如下: <?xml ...
- Tomcat - JNDI 配置
1. Create Your JavaBean Class Create the JavaBean class which will be instantiated each time that th ...
随机推荐
- Python使用wxPython、py2exe编写桌面程序-乾颐堂
Python是支持可视化编程,即编写gui程序,你可以用它来编写自己喜欢的桌面程序.使用wxPython来做界面非常的简单,只是不能像C#一样拖动控件,需要自行写代码布局.在完成编写之后,由于直接的p ...
- Jmeter中正则表达式不区分大小写进行匹配
(?i)<r i="([A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12})" ...
- 第十届Mockplus ▪ UXPA用户体验西南赛区决赛成功举行
九月的重庆,秋意渐浓. 伴随着凉爽的秋风,第十届Mockplus·UXPA国际用户体验创新大赛(UXD Award2018)西南赛区决赛于9月16日下午在四川美术学院-虎溪校区成功举办.来自西南区域各 ...
- C语言 链表基本函数
#include <stdio.h> #include <malloc.h> typedef struct my_node mynode; struct my_node{ ...
- eclipse怎样检出SVN项目
首先确定你的eclipse安装了svn插件.查看eclipse是否安装插件的方法:打开eclipse->文件->新建->其他 ,在弹出的选择向导窗口中如果能搜索到svn,说明ecli ...
- 2018.09.29 bzoj3675: [Apio2014]序列分割(斜率优化dp)
传送门 斜率优化dp经典题目. 首先需要证明只要选择的K个断点是相同的,那么得到的答案也是相同的. 根据分治的思想,我们只需要证明有两个断点时成立,就能推出K个断点时成立. 我们设两个断点分成的三段连 ...
- mysql date_sub用法
查询一天: select * from table where to_days(column_time) = to_days(now()); select * from table where dat ...
- HDU 1513 && POJ 1159 Palindrome (DP+LCS+滚动数组)
题意:给定一个字符串,让你把它变成回文串,求添加最少的字符数. 析:动态规划是很明显的,就是没有了现思路,还是问的别人才知道,哦,原来要么写,既然是回文串, 那么最后正反都得是一样的,所以我们就正反求 ...
- NATAPP打穿内网
前一篇博文写了ngrok作为内网穿透工具现在开始开始学习另外一种内 网穿透natapp(他也是基于ngrok的一种高速内网穿透服务)多的介绍就 不说了,开始进入正题. 第一步:先登录natapp官网( ...
- 201709021工作日记--Volley源码解读(四)
接着volley源码(三)继续,本来是准备写在(三)后面的,但是博客园太垃圾了,写了半天居然没保存上,要不是公司这个博客还没被限制登陆,鬼才用这个...真是垃圾 继续解读RequestQueue的源码 ...