导航:首页 > 编程大全 > java网络高级编程ppt

java网络高级编程ppt

发布时间:2025-10-03 12:06:56

1. java高级编程:基于JNDI的应用开发

基于JNDI的应用开发

JNDI(The Java Naming and Directory Interface Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API 命名服务将名称和对象联系起来 使得我们可以用名称访问对象 目录服务是知指兄一种命名服务 在这种服务里 对象不但有名称 还有属性

命名或目录服务使你可以集中存储共有信息 这一点在网络应用中是重要的 因为这使得这样的应用更协调 更容易管理 例如 可以将打印机设置存储在目录服务中 以便被与打印机有关的应用使用

本文用代码示例的方式给出了一个快速教程 使你可以开始使用JNDI 它

l 提供了JNDI概述 l 描述了JNDI的特点 l 体验了一下用JNDI开发应用 l 表明了如何利用JNDI访问LDAP服务器 例如 Sun ONE 目录服务器 l 表明了如何利用JNDI访问J EE服务 l 提供了示例代码 你可以将其改编为自己的应用

JNDI概述

我们大家每天都不知不觉地使用了命名服务 例如 当你在web浏览器输入URL 时 DNS(Domain Name System 域名系统)将这个符号URL名转换成通讯标识(IP地址) 命名系统中的对象可以是DNS记录中的名称 应用服务器中的EJB组件(Enterprise JavaBeans Component) LDAP(Ligheight Directory Access Protocol)中的用户Profile

目录服务是命名服务的自然扩展 两者之间的关键差别是目录服务中对象可以有属性(例如 用户有email地址) 而命名服务中对象没有属性 因此 在目录服务中 你可以根据属性搜索对象 JNDI允许你访问文件系统中的文件 定位远程RMI注册的对象 访问象LDAP这样的目录服务 定位网络上的EJB组件

对于象LDAP 客户端 应用launcher 类浏览器 网络管理实用程序 甚至地址薄这样的应用来说 JNDI是一个很好的选择

JNDI架构

JNDI架构提供了一组标准的独立于命名系统的API 这些API构建在与命名系统有关的驱动之上 这一层有助于将应用与实际数据源分离 因此不管应用访问的是LDAP RMI DNS 还是其他的目录服务 换句话说 JNDI独立于目录服务的具体实现 只要你有目录的服务提供接口(或驱动) 你就可以使用目录 如图 所示 图 JNDI架构

关于JNDI要注意的重要一点是 它提供了应用编程接口(application programming interface API)和服务提供者接口(service provider interface SPI) 这一点的真正含义是 要让你的应用与命名服务或目录服务交互 必须有这个服务的JNDI服务提供者 这正是JNDI SPI发挥作用的地方 服务提供者基本上是一组类 这些类为各种具体的命名和目录服务实现了JNDI接口?很象JDBC驱动为各种具体的数据库系统实现了JDBC接口一样 作为一个应用开发者 你不必操心JNDI SPI 你只需要确认你要使用的每一个命名或目录服逗空务都有服务提供者

J SE和JNDI

Java SDK 及以上的版本包含了JNDI 对于JDK 和 也有一个标搭袭准的扩展 Java SDK x的最新版本包括了几个增强和下面的命名/目录服务提供者

l LDAP(Ligheight Directory Access Protocol)服务提供者 l CORBA COS(Common Object Request Broker Architecture Common Object Services)命名服务提供者 l RMI(Java Remote Method Invocation)注册服务提供者 l DNS(Domain Name System)服务提供者

更多的服务提供者

可以在如下网址找到可以下载的服务提供者列表

特别有意思的或许是如下网址提供的Windows 注册表JNDI服务提供者 这个服务提供者使你可以访问Windows XP/ /NT/Me/ x的windows注册表

也可以在如下网址下载JNDI/LDAP Booster Pack 这个Booster Pack包含了对流行的LDAP控制的支持和扩展 它代替了与LDAP 服务提供者捆绑在一起的booster pack 关于控制和扩展的更多信息可以在如下网站看到 另一个有趣的服务提供者是Sun的支持DSML v (Directory Service Markup Language 目录服务标记语言)的服务提供者 DSML的目的是在目录服务和XML之间架起一座桥梁

JNDI API

JNDI API由 个包组成

l Javax naming 包含了访问命名服务的类和接口 例如 它定义了Context接口 这是命名服务执行查询的入口 l Javax naming directory 对命名包的扩充 提供了访问目录服务的类和接口 例如 它为属性增加了新的类 提供了表示目录上下文的DirContext接口 定义了检查和更新目录对象的属性的方法 l Javax naming event 提供了对访问命名和目录服务时的时间通知的支持 例如 定义了NamingEvent类 这个类用来表示命名/目录服务产生的事件 定义了侦听NamingEvents的NamingListener接口 l Javax naming ldap 这个包提供了对LDAP 版本 扩充的操作和控制的支持 通用包javax naming directory没有包含这些操作和控制 l Javax naming spi 这个包提供了一个方法 通过javax naming和有关包动态增加对访问命名和目录服务的支持 这个包是为有兴趣创建服务提供者的开发者提供的

JNDI 上下文

正如在前面提到的 命名服务将名称和对象联系起来 这种联系称之为绑定(binding) 一组这样的绑定称之为上下文(context) 上下文提供了解析(即返回对象的查找操作) 其他操作包括 名称的绑定和取消绑定 列出绑定的名称 注意到一个上下文对象的名称可以绑定到有同样的命名约定的另一个上下文对象 这称之为子上下文 例如 如果UNIX中目录/home是一个上下文 那么相对于这个目录的子目录就是子上下文?例如 /home/guests中guests就是home的子上下文 在JNDI中 上下文用接口javax naming Context表示 这个接口是与命名服务交互的关键接口 在Context(或稍后讨论的

DirContext)接口中的每一个命名方法都有两种重载形式

l Lookup(String name) 接受串名 l Lookup(javax naming Name) 接受结构名 例如 CompositeName(跨越了多个命名系统的名称)或CompondName(单个命名系统中的名称) 它们都实现了Name接口 Compound name的一个例子是 cn=mydir cn=Q Mahmoud ou=People posite name的一个例子是 cn=mydir cn=Q Mahmoud ou=People/myfiles/max txt(这里 myfiles/max txt是表示第二部分的文件名) Javax naming InitialContext是实现了Context接口的类 用这个类作为命名服务的入口 为了创建InitialContext对象 构造器以java util Hashtable或者是其子类(例如 Properties)的形式设置一组属性 下面给出了一个例子

Hashtable env = new Hashtable() // select a service provider factory env put(Context INITIAL_CONTEXT_FACTORY sun jndi fscontext RefFSContext ) // create the initial context Context contxt = new InitialContext(env)

INITIAL_CONTEXT_FACTORY指定了JNDI服务提供者中工厂类(factory class)的名称 Factory负责为其服务创建适当的InitialContext对象 在上面的代码片断中 为文件系统服务提供者指定了工厂类 表 给出了所支持的服务提供者的工厂类 要注意的是文件系统服务提供者的工厂类需要从Sun公司单独下载 J SE x没有包含这些类

表 上下文INITIAL_CONTEXT_FACTORY的值 Name Service Provider Factory File System sun jndi fscontext RefFSContextFactory LDAP sun jndi ldap LdapCtxFactory RMI sun jndi rmi registry RegistryContextFactory CORBA snaming CNCtxFactory DNS sun jndi dns DnsContextFactory

lishixin/Article/program/Java/hx/201311/26774

阅读全文

与java网络高级编程ppt相关的资料

热点内容
win7还有升级提示吗 浏览:419
微信的大数据什么意思 浏览:582
discuz搬家视频教程 浏览:195
免费商城网站模板 浏览:881
佳能5d3相机怎样更改文件名 浏览:480
中控dcs文件名 浏览:467
qq422安卓 浏览:622
文件路径限制 浏览:983
文件怎么写保护 浏览:211
0基础怎么学习c语言编程 浏览:277
java网络高级编程ppt 浏览:370
导入失败错误代码7 浏览:885
bat变量文件名 浏览:145
如何学好网络技术 浏览:441
小蚁智能摄像机wifi密码错误 浏览:690
导入一百万条数据怎么做 浏览:619
极速pdf文件的电子签名怎么弄 浏览:439
5s越狱后恢复出厂白苹果了怎么办 浏览:932
Linux显示全部文件内容命令 浏览:757
data怎么改数据 浏览:368

友情链接