Tomcat中使用JNDI引用外部资源

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值