Introduction 介绍
Tomcat5提供了一个JNDI InitialContext(首要上下文)实现的实例供web应用程序在它之上运行,它的风格和其它J2EE应用服务器是一致的。他的登记是在$CATALINA_HOME/conf/server.xml 文件里,部署文件(/WEB-INF/web.xml)的配置请参考以下的元素:
<env-entry> - 环境进入, 单值参数,它用来指定应用怎么样被操作. <resource-ref> - 资源参考, 典型的应用是指向一个对象的工厂,比如一个JDBC数据源, 一个JavaMail会话, 或者一个被配置进tomcat 5 的自定义对象的工厂. <resource-env-ref> - 资源环境参考, 这是一个Servlet2.4中新加的变量。它更简单地配置了不需要验证信息的资源。
首要上下文的配置是被做为一个web应用首先部署的,它可以被web应用的组件所访问(只读)。所有的配置登记和资源将会被放置于java:comp/env下,它是JNDI命名空间的一部分,如此,一个典型的访问资源(在这个例子中,是一个对JDBC数据源的访问)方法如下:
// 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();
See the following Specifications for more information about programming APIs for JNDI, and for the features supported by Java2 Enterprise Edition (J2EE) servers, which Tomcat emulates for the services that it provides:
请参见以下关于JNDI的APIs详细信息,tomcat提供的J2EE指定的服务器特性如下:
Java Naming and Directory Interface (included in JDK 1.4, available separately for prior JDK versions) J2EE Platform Specification (in particular, see Chapter 5 on Naming)
Configuring JNDI Resources 配置JNDI资源
每一个可用的JDNI资源的配制都在$CATALINA_HOME/conf/server.xml中定义,所用到的元素如下:
<Environment> - 为环境登记配置名称及数值,它将被通过JNDI首要上下文暴露于web应用程序(等同于在web布署器中包含的<env-entry>). <Resource> - 为可用的资源配置名称及数据类型 (等同于在web布署器中包含的<resource-ref>). <ResourceParams> - 配置资源工厂用到的java类, 比如JavaBeans的属性值.<ResourceLink> - 在全局JDNI上下文中添加一个资源链接.
所有这些元素都放置于<Context>元素或<DefaultContext>元素内.
另外,所有的布署器(/WEB-INF/web.xml)中包含的<env-entry>元素都被配置进了首要上下文!仅当conf/server.xml里的<Environment> 元素被允许重载时,conf/server.xml和/WEB-INF/web.xml相一致的内容才被重载。
Tomcat Standard Resource Factories
Tomcat5为我们的web应用提供了几个标准的资源工厂,但是却不通过修改应用布署器给了您更大的弹性(在 $CATALINA_HOME/conf/server.xml 中).以下的几个小节都应用了标准资源工厂。
如果您想知道更多的关于建立,安装,配置,使用自定义资源工厂,请见Adding Custom Resource Factories。
注意:对于标准资源工厂,只有JDBC Data Source和User Transaction才能在其它的平台上使用,并且它们只是在平台实现了J2EE时才需要。所有其它的标准资源工厂,以及你自定义的工厂,都只能在 TOMCAT中使用,而不能被其它平台接受。
一般JavaBean资源
0.介绍
这个资源工厂用来建立任何一个符合标准JavaBeans命名规范的java类。它有一个零参数的 constructor,还有一些类似于setFoo()命名的property setters。当lookup()被使用时,这个工厂每次都会建立一个bean的实例。
使用此工厂的例子如下:
1.建立一个javabean类
建立一个资源工厂可以实现的类。这个例子,建议你用com.mycompany.MyBean类,它应该象下面这样:
package com.mycompany;
public class MyBean {
private String foo = Default Foo;
public String getFoo() {
return (this.foo);
}
public void setFoo(String foo) {
this.foo = foo;
}
private int bar = 0;
public int getBar() {
return (this.bar);
}
public void setBar(int bar) {
this.bar = bar;
}
}
2.定义你需要的资源
下面,修改你的应用布署器(/WEB-INF/web.xml)来声名JNDI名称,最简单的方法是用<resource -env-ref>元素,象这样:
<resource-env-ref>
<description>
Object factory for MyBean instances.
</description>
<resource-env-ref-name>
bean/MyBeanFactory
</resource-env-ref-name>
<resource-env-ref-type>
com.mycompany.MyBean
</resource-env-ref-type>
</resource-env-ref>
注意:必须遵守应用布署器所需要的DTD定义的元素规则。详情见 Servlet Specification
3.编写应用此资源的应用。
一个典型的应用此资源的参考如下:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup(java:comp/env);
MyBean bean = (MyBean) envCtx.lookup(bean/MyBeanFactory);
writer.println(foo = + bean.getFoo() + , bar = +
bean.getBar());
4.配置tomcat的资源工厂
配置资源工厂在$CATALINA_HOME/conf/server.xml文件里面要添加元素,在 上下文元素(或默认的上下文元素)里添加。
<Context ...>
...
<Resource name=bean/MyBeanFactory auth=Container
type=com.mycompany.MyBean/>
<ResourceParams name=bean/MyBeanFactory>
<parameter>
<name>factory</name>
<value>org.apache.naming.factory.BeanFactory</value>
</parameter>
<parameter>
<name>bar</name>
<value>23</value>
</parameter>
</ResourceParams>
...
</Context>
注意资源名称必须符合布署器的规定。
在这个例子中,setBar函数必须在类中有定义。 JDBC Data Sources JDBC数据源
0.介绍
很多web应用都需要通过JDBC访问数据库来支持应用所需要的功能。为了实现这一目的,J2EE服务器需要一个数据源的实现(即一个JDBC连接池)。 tomcat5很好的实现了这一要求,所以你基于数据库的应用在其它的J2EE服务器上不需要修改就可以很好地运行。
JDBC相关信息,请参考以下内容:
http://java.sun.com/products/jdbc/ - JDBC的老家. http://java.sun.com/j2se/1.3/docs/guide/jdbc/spec2/jdbc2.1.frame.html - JDBC 2.1 API 说明.http://java.sun.com/products/jdbc/jdbc20.stdext.pdf - JDBC 2.0 标准扩展 API (包含 javax.sql.DataSource API). 这个包被称为JDBC可选包.http://java.sun.com/j2ee/download.html - J2EE Platform说明 (包含了J2EE必须实现的所有JDBC特性).
1.安装JDBC驱动
要使用JDBC数据源,JNDI资源工厂要求您必须将合适的JDBC驱动放在Tomcat内建类和应用程序中。很方便的实现方法是将驱动放入$CATALINA_HOME/common/lib目录里 :).
2. 定义资源
下面修改你的web应用布署器(/WEB-INF/web.xml),在你将要查找的资源之前定义JNDI名称。约定是这样的:所有的这些名字都被放在JDBC子上下文之下(标准上下文的根目录是 java:comp/env),一个典型的web.xml内容如下:
<resource-ref>
<description>
Resource reference to a factory for java.sql.Connection
instances that may be used for talking to a particular
database that is configured in the server.xml file.
</description>
<res-ref-name>
jdbc/EmployeeDB
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
注意:必须遵守应用布署器所需要的DTD定义的元素规则。详情见 Servlet Specification
3.编写应用此资源的代码
一个典型的应用参考如下:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup(java:comp/env);
DataSource ds = (DataSource)
envCtx.lookup(jdbc/EmployeeDB);
Connection conn = ds.getConnection();
... use this connection to access the database ...
conn.close();
注意应用程序使用到的名字是和应用布署器中一致的,它也必须和定义于$CATALINA_HOME/conf/server.xml 里的资源工厂一致,描述如下:
4. 配置tomcat的资源工厂
配置工厂,请在$CATALINA_HOME/conf/server.xml里添加元素,放置于这个web应用的上下文中(或者放在被<Host> 或 < Engine>元素包围的DefaultContext元素中 )
<Context ...>
...
<Resource name=jdbc/EmployeeDB auth=Container
type=javax.sql.DataSource/>
<ResourceParams name=jdbc/EmployeeDB>
<parameter>
<name>username</name>
<value>dbusername</value>
</parameter>
<parameter>
<name>password</name>
<value>dbpassword</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.hsql.jdbcDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:HypersonicSQL:database</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>8</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>4</value>
</parameter>
</ResourceParams>
...
</Context>
注意资源名称(在这里是jdbc/EmployeeDB)必须要符合web应用布署器的规定。
这个例子采用的是HypersonicSQL数据库JDBC驱动。请修改相应的驱动程序名以及连接URL以符合您所用的数据库。
tomcat标准数据源配置工厂所需要的属性如下:
driverClassName - JDBC 所用到的数据库驱动的类全名. maxActive - 连接池在同一时刻内所提供的最大活动连接数。 maxIdle - 连接池在空闲时刻保持的最大连接数. maxWait - 当发生异常时数据库等待的最大毫秒数 (当没有可用的连接时). password - 连接数据库的密码. url - 连接至驱动的URL. (为了向后兼容, driverName也被允许.) user - 数据库用户名. validationQuery - 这是一个select 的SQL语句,它将被工厂所调用以保证数据库可用。
译:yifi (yifi@tom.com)出处 jakarta.apache.org
分享到:
相关推荐
通过以上步骤,我们已经在Tomcat中成功配置了JNDI,并通过JSP文件演示了如何使用JNDI获取配置的数据源。这种配置方式使得数据库连接信息与应用代码分离,提高了应用程序的可维护性和灵活性。此外,还可以进一步扩展...
* 如果工程 lib 下含有了 jsp-api.jar 和 servlet-api.jar,则应删去使用 tomcat 的,要不报错。 测试办法: * 在工程根路径下添加,测试数据源是否配置成功。 本文档提供了详细的 Tomcat6+Spring+JNDI 配置数据...
在IT行业中,Tomcat是一个广泛使用的开源应用服务器,主要用于运行Java Servlet和JavaServer Pages(JSP)应用程序。在本文中,我们将深入探讨“Tomcat6配置JNDI出错”这一主题,这是一个常见的问题,很多开发者在...
这个资源包中的`lib`文件夹通常包含了一系列的依赖库,如Tomcat提供的Servlet和JSP API jar包,以及c3p0连接池的jar包。这些jar包需要添加到项目的类路径中,以便在编译和运行时能够正确引用。 在实际开发中,我们...
Tomcat,作为流行的开源Java Servlet容器,也支持JNDI服务,以便于应用部署和管理资源。 **一、JNDI基础知识** 1. **JNDI的工作原理**:JNDI通过提供统一的API,隐藏了不同命名和目录服务的实现细节。它允许开发者...
5. **GlobalNamingResources**: Tomcat支持JNDI(Java Naming and Directory Interface),允许在全局范围内注册和查找资源,如数据源、邮件会话等。GlobalNamingResources是这些全局资源的容器,可以在多个Web应用...
5. **Tomcat服务器**:Tomcat是一款开源的Servlet容器,它是Apache软件基金会的Jakarta项目的一部分。在这个项目中,Tomcat6.0作为Web服务器运行酒店管理系统,支持JSP和Servlet的执行。 6. **系统架构**:基于JSP+...
Tomcat是一款开源、免费的Web应用服务器,广泛用于部署Java Servlet和JavaServer Pages(JSP)应用程序。在本话题中,我们将深入探讨Tomcat如何启动以及Servlet在Tomcat中的运行原理。 首先,了解Tomcat的启动流程...
Tomcat作为Servlet容器,遵循Java Servlet和JavaServer Pages (JSP) 规范,支持这两种技术的执行。 在《深入剖析Tomcat》一书中,作者详细介绍了Tomcat的内部工作原理,包括生命周期管理、线程模型、连接器(Coyote...
编写一个简单的Servlet或者JSP页面,尝试通过JNDI获取数据库连接并执行查询,以确保配置正确无误。 通过以上步骤,你已经在Eclipse、MySQL和Tomcat环境中成功配置了JNDI数据源。这种方式使得你的应用程序能够轻松...
7. **JNDI资源**:Tomcat支持JNDI(Java Naming and Directory Interface),可以在server.xml中配置数据源、邮件会话等资源,供Web应用程序使用。 8. **集群与负载均衡**:高级应用中,Tomcat可以通过集群配置实现...
10. **Tomcat服务器**:作为最常见的Servlet容器,Tomcat的安装、配置和调试技巧。 11. **Maven或Gradle构建工具**:用于管理和构建Servlet和JSP项目。 书中的"PDF"标签表明这是电子版资源,方便读者在线阅读或下载...
在Web开发领域,Java技术常常扮演着核心角色,而Tomcat作为一款轻量级的Web服务器和Servlet容器,是Java Web应用的首选平台。本笔记将对Web相关概念、Tomcat服务器以及Servlet入门进行简要介绍。 1. **Web相关概念*...
为了管理多个Servlet,容器(如Tomcat)会使用Servlet映射,将特定的URL请求与Servlet关联起来。 在"Test"这个压缩包文件中,可能包含了一些简单的示例代码,用于演示如何在实际项目中使用JDBC、JNDI和Servlet。...
Tomcat 8.5.94支持JSP 2.3和Servlet 3.1规范,提供对Java EE 7的大部分特性支持,包括WebSocket和JNDI。对于开发者来说,它是一个轻量级且高效的平台,可以快速地进行JSP应用的开发和测试。同时,由于其开源和广泛...
Apache Tomcat5是一款广泛使用的Java JSP(JavaServer Pages)和Servlet容器,它是一个开源的Web服务器,专门用于运行基于Java技术的应用程序。Tomcat5是Apache软件基金会Jakarta项目的一部分,提供了对Java EE...
在IT行业中,Servlet、JSP和JavaBean是Java Web开发中的三大核心技术,它们共同构建了动态网站的基础。本文将深入探讨这些技术以及如何在实际项目中应用它们。 Servlet是Java编程语言的一个接口,用于扩展服务器的...
Apache Tomcat是一款广泛使用的开源Java Servlet容器,它实现了Java EE(现称为Jakarta EE)的Web部分,特别是Servlet、JSP和EL(Expression Language)规范。这两个版本的差异可能包括安全更新、性能优化和一些功能...
在Tomcat 6这样的Servlet容器中配置JNDI,可以让应用程序更加模块化,易于管理和维护。本文将详细介绍在Tomcat 6下配置JNDI连接池的步骤。 首先,我们需要创建一个Web项目。在这个例子中,我们将项目命名为`...
Java Web入门源代码是初学者踏入Web开发领域的宝贵资源,主要涵盖了Servlet、JSP和Filter这三个核心组件。这里将详细解析这些技术以及它们在实际应用中的作用。 Servlet是Java平台上的一个服务器端程序,用于扩展...