您的位置:首页 > 运维架构 > Tomcat

Tomcat中使用JNDI引用外部资源

2016-01-15 16:44 441 查看

JNDI

JNDI(Java Naming and Directory Interface )是Java EE中容器服务的重要组成部分. 主要作用是给多种命名和目录服务提供了统一的接口1. 使用JNDI的EE应用可以保存和获取任意类型的Java对象.

其中的命名和目录服务指定范围比较广泛, 包括LDAP(The Lightweight Directory Access Protocol), DNS和NIS(The Network Information Service).

由容器实现者实现JNDI通常被称为JNDI命名上下文(naming context).

命名空间(namespace)

命名环境提供了四个逻辑命名空间: java:comp, java:module,

java:app, and java:global分别提供给组件, 模块, 应用程序以及所有部署程序共享的类.

一个Java EE组件能创建一个
javax.naming.InitialContext
类, 然后再命名空间java:comp/env以及子路径中查找相关的环境上下文.

Tomcat2

Apache Tomcat™ 是java Servlet, JavaServer Pages, Java Expression Language和Java WebSocket技术的一个开源实现.

Tomcat中的JNDI命名上下文3

首先, 在Java EE规范中, 规定了/WEB-INF/web.xml文件中一系列元素用来引用和定义资源.

此外, 在$CATALINA_BASE/conf/server.xml和META-INF/context.xml中的
<Context>
标签中, 也可以定义资源. Tomcat规定了资源配置必须在
<Context>
使用下列标签, 包括:

<Environment>
用来定义有限个暴露给web应用的JNDI
InitialContext
的环境变量.

<Resource>


<ResourceLink>


<Transaction>


以下, 我们用
<Environment>
标签做一个例子来熟悉JNDI的定义.

Environment标签4

你可以像下面这样配置命名值(named value), 它会被当成一个环境条目资源, 这样web程序在环境条目中就能看到这个变量了.

<Context>
...
<Environment name="maxExemptions" value="10"
type="java.lang.Integer" override="false"/>
...
</Context>


<Environment>
标签中有效的属性值如下:

属性描述
description可选, 给人写的描述信息.
name相对于命名空间java:comp/env的名字资源名.
override是否允许
<env-entry>
标签覆盖同名的环境资源. true是允许, false为不允许. 默认为true.
typeJava类型的全限定名.
value资源的值, 必须能转换成定义的Java类型.
[1]:The Java EE tutorial
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tomcat java ee