CN101196830A - 一种j2ee应用服务器高性能jndi服务的实现方法 - Google Patents

一种j2ee应用服务器高性能jndi服务的实现方法 Download PDF

Info

Publication number
CN101196830A
CN101196830A CNA2007101647555A CN200710164755A CN101196830A CN 101196830 A CN101196830 A CN 101196830A CN A2007101647555 A CNA2007101647555 A CN A2007101647555A CN 200710164755 A CN200710164755 A CN 200710164755A CN 101196830 A CN101196830 A CN 101196830A
Authority
CN
China
Prior art keywords
client
server
server end
service
buffer memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2007101647555A
Other languages
English (en)
Other versions
CN100543685C (zh
Inventor
邓水光
陈伟才
吴健
李莹
李武
尹建伟
吴朝晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Wanin Education Multimedia Technology Co.,Ltd.
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CNB2007101647555A priority Critical patent/CN100543685C/zh
Publication of CN101196830A publication Critical patent/CN101196830A/zh
Application granted granted Critical
Publication of CN100543685C publication Critical patent/CN100543685C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及一种J2EE应用服务器高性能JNDI服务的实现方法,命名服务实现过程中,将整个模块划分为3个部分分别实现的,这3个部分分别是:服务器端、客户端、客户端与服务器端的连接;其中,服务器端主要实现命名空间存储结构的设计,以及服务器端的缓存策略;客户端主要实现对服务器端缓存的处理。本发明有益的效果是:将命名上下文与名称操作类分离;采用树形存储结构实现层式命名空间;直接通过套接字编程,使用序列化和MarshalledObject来实现服务;跨虚拟机,同一虚拟机存取不需要通过套接字;客户端端作了Naming Server的缓存,支持引用存储。Naming Server端实现客户端缓存的机制,在JNDI树比较深、树上绑定对象数量比较多的时候可以提高命名服务索引的速度。

Description

一种J2EE应用服务器高性能JNDI服务的实现方法
技术领域
本发明涉及J2EE应用服务器领域,主要是一种J2EE应用服务器高性能JNDI服务的实现方法。
背景技术
JNDI(Java Naming and Directory Interface)即Java命名和目录接口是J2EE平台中的一个重要组件,它是为了简化对高级网络应用开发中使用的目录结构的访问。目录是特殊类型的数据库,提供对其所存储数据的快速访问。传统上,你可以使用不同的应用程序接口去访问不同的目录服务,比如轻量级目录访问协议LDAP和Sun公司的网络信息服务NIS。然而,JNDI提供了一种标准的应用程序接口来访问任何类型的目录,JNDI也可以用于来存取网络上的Java对象。
JNDI是一组标准的Java应用程序接口,它提供了装载现有各种不同命名服务(域名服务系统、轻量级目录访问协议、网络信息服务和文件系统等)的通用接口。JNDI应用程序接口逻辑上可分为:一组用于存取命名服务的客户端应用程序接口和一组允许用户创建命名服务的服务程序接口。
目前,市场上占有率比较高的实现JNDI服务的商业产品中,各有千秋。但是他们都只是针对某一类型的目录服务而设计的,如有的是针对重量级命名和目录服务,而轻量级命名和目录的访问不能得到有效的支持;有的是针对轻量级命名和目录服务,而重量级命名和目录的访问不能得到有效的支持。在国外,著名的开源公司JBoss在JBoss4.0版本中实现了一个完善的重量级的命名服务,因而JBoss命名空间的存储结构只适宜大型的平台。在国内,灰狐也是在参考了JBoss的基础上,在自己的针对较轻量级J2EE平台的实现-JFox中,实现了有自己特点的快速的命名服务,JFox命名空间则是用于较轻量级的平台。这两个JNDI实现同时也代表了当前实现JNDI的两大方向,一个是针对大的企业系统实现功能完善的JNDI,另一个是实现快速的轻量级的JNDI。他们的优势是的有目共睹的,但是,不足也是显而易见的,由于他们支持的命名和目录服务的局限性,导致他们不能高效的访问所有对象。
所以,如何将这两种JNDI的特性融合在一起,开发出一种既可以高效地访问重量级目录服务又能高效地访问轻量级目录服务的JNDI即高性能JNDI成为业界的迫切需要。
发明内容
本发明要解决上述技术所存在的缺陷,提供一种J2EE应用服务器高性能JNDI服务的实现方法,一种基于JNDI标准的既可以支持重量级目录快速访问又可以支持轻量级目录快速访问的高性能JNDI服务。
本发明解决其技术问题所采用的技术方案:本发明提出了一种全新的服务器端命名空间存储结构,其目的在于开发实现一种高稳定的,高性能的命名服务,既能够适用于大型平台,同时又能提高应用于较轻量级平台时的查找效率,为整个系统提供较好的服务基础。
这种J2EE应用服务器高性能JNDI服务的实现方法,命名服务实现过程中,将整个模块划分为3个部分分别实现的,这3个部分分别是:服务器端、客户端、客户端与服务器端的连接;其中,服务器端主要实现命名空间存储结构的设计,以及服务器端的缓存策略;客户端主要实现对服务器端缓存的处理;客户端与服务器端的连接主要是建立客户端与服务器端的连接;
当客户端要通过JNDI查找服务器端某个对象时:
(1)先在客户端缓存中查找;
(2)若查找成功,则直接返回查找结果;
(3)若上一步查找失败,客户端通过客户端与服务器端的连接在服务器上查找;
(4)若服务器端缓存中查找到,则直接返回查找结果;
(5)若上一步查找失败,则在服务器端命名空间存储结构中查找;
(6)若查找成功,则直接返回查找结果,否则查找失败返回。
本发明有益的效果是:
●将命名上下文与名称操作类分离;
●采用树形存储结构实现层式命名空间;
●直接通过套接字编程,使用序列化和MarshalledObject来实现服务;
●跨虚拟机,同一虚拟机存取不需要通过套接字;
●客户端端作了Naming Server的缓存;
●支持引用存储,但是只支持URL类型的引用;
●Naming Server端实现客户端缓存的机制,在JNDI树比较深、树上绑定对象数量比较多的时候可以提高命名服务索引的速度;
●整个空间有一个上下文哈希映射表直接通过命名查找对应的上下文。
附图说明
图1为JNDI Server命名空间的存储结构;
图2为JNDI模块的体系结构图;
具体实施方式
下面结合附图和实施例对本发明作进一步介绍:
这种J2EE应用服务器高性能JNDI服务的实现方法,命名服务实现过程中,将整个模块划分为3个部分分别实现的,这3个部分分别是:服务器端、客户端、客户端与服务器端的连接;其中,服务器端主要实现命名空间存储结构的设计,以及服务器端的缓存策略;客户端主要实现对服务器端缓存的处理;客户端与服务器端的连接主要是建立客户端与服务器端的连接;
当客户端要通过JNDI查找服务器端某个对象时:
(1)先在客户端缓存中查找;
(2)若查找成功,则直接返回查找结果;
(3)若上一步查找失败,客户端通过客户端与服务器端的连接在服务器上查找;
(4)若服务器端缓存中查找到,则直接返回查找结果;
(5)若上一步查找失败,则在服务器端命名空间存储结构中查找;
(6)若查找成功,则直接返回查找结果,否则查找失败返回。
本发明实现方法将按照上面划分的三个部分实现一一介绍如下:
一服务器端的实现
服务器端的实现包括底层的存储实现、命名空间存储结构的设计和服务器端缓存的实现。
1.底层的存储实现
Java命名协议是直接通过套接字编程,使用序列化机制和MarshalledObject来实现服务的,首先将存储的对象通过MarshalledObject封装(串行化),然后存储在NameServer里面,解析时,会将其解封装再返回,MarshalledObject类的神奇之处在于它会根据URL或者远程对象的桩Stub自动重新载入封装的类。
2.服务端的存储结构的实现
为了既能够适用于大型平台,同时又能提高应用于较轻量级平台时的查找效率,服务器端的存储结构采用了平面结构与树状结构的结合。
平面结构是为轻量级平台设计的。使用平面存储结构实现层式命名空间,这样在索引时避开了递归搜索,在对象数量比较少的时候可以提高索引速度,但同时增加了维护上下文的难度,在对象数量比较多的时候索引速度不如树形存储结构。
树状结构是为重量级平台设计的。完全树状结构,每个命名上下文都有一个哈希映射表记录其下面的子命名上下文和资源对象,递归查找直到树的最底层。在对象数量比较多的时候树形存储结构具有明显的优势。
参数传入绝对名称,平面结构+树状结构,整个空间有一个命名上下文哈希映射表,直接通过该名称查找对应的命名上下文,每个命名上下文又有一个哈希映射表记录其下面的子上下文和资源对象,这样便于遍历所有绑定,在建立时有两套哈希映射表要维护,查找时需且仅需经过两次对哈希映射表的查找。
3.Server端的缓存机制
为了设计一种命名空间的存储结构,不仅对于大型的平台较适宜,效率较高,而且对于较轻量级的平台查找效率仍然较高,我们采用了缓存机制等巧妙的手段来寻找一个平衡。服务器端的缓存绑定类负责对命名服务中的绑定项进行缓存,它将命名服务中的绑定缓存到一个哈希映射表实例中。缓存绑定类封装了对绑定的一些操作,如增加新的绑定值,删除已缓存的绑定,查找并获取以缓存的绑定和删除所有已缓存的绑定。
所以,当客户端需要查找一个对象时,首先会在服务器端的缓存哈希表中查找,若缓存哈希表中存在该对象的绑定,则查找成功并返回结果,这样大大提供了查找对象的速度。当缓存哈希表中不存在该对象绑定,先将该对象缓存到服务器端,然后再在服务器端的命名空间查找。当再次查找该对象时,由于该对象已经存在于缓存哈希表,则直接可以查找成功,从而提高了整体的查询速度。
二客户端的实现
客户端主要是实现客户端的缓存。
Client端的缓存机制
由于客户端对某个服务器上的某个对象访问后,在将来某个时刻,该客户端可能会对该对象再次访问。若客户端对每次访问的服务器信息进行跟踪,那么客户端针对同一对象的每一次访问都需要重新查找,这样大大降低了JNDI的查找效率。所以我们在服务器端对已经访问过的服务器相关信息进行了缓存。客户端的缓存服务端类就是负责对已经访问过的服务器地址和端口信息进行了缓存,它将服务器的地址和端口与名称实例最为键值对增加到哈希表中。缓存服务端类封装了一些缓存操作,如增加新的服务器信息记录,删除已缓存的服务器信息,查找并获取以缓存的服务器信息。
所以,在客户端向服务端请求命名实例前,先检查将要访问的服务器地址和端口是否在缓存中,若要访问的服务器地址和端口存在,则直接使用已经存在的服务器上的命名实例。否则,将新的要访问的服务器地址和端口添加到缓存。
三客户端与服务器端连接的实现
客户端与服务器端的连接主要是建立客户端与服务器端的连接。
服务端与客户端的联系
客户端与服务器端之间的联系是通过命名上下文接口是现实的。命名上下文接口的实现类采用了基于Java套接字/远程方法调用的实现思想。它是一种能被远程调用的客户端/服务器端的实现。该实现方法实现了命名存取的优化即在同一虚拟机(即J2EE Server所运行的虚拟机)中进行存取不需要通过套接字。
客户端的命名上下文接口的实现类是ContextImpl,而服务器端的命名上下文接口的实现类是NamingServer类。这两个类都实现了命名上下文接口的方法如查找、绑定、取消绑定、重绑定、枚举所有绑定、销毁指定上下文和创建指定上下文等方法。当客户端需要向服务器请求某项服务时,比如向服务器查找某个对象的绑定,客户端会将该请求委派给服务器端的NamingServer类,由该类来处理查找请求,该类处理请求后将结果返回给客户端。
具体实现方法如下:
图1所示为JNDI模块的体系结构图,它描述了JNDI模块的大体框架。
该体系结构图可以分为两个部分,左部分是与客户端相关的,执行客户端的一些功能,右部分则是与服务器端相关的,执行服务器的功能。这两部分是通过中间的接口Context进行交互的。
服务器端命名服务类负责JNDI服务的启动。客户端通过工厂类初始化上下文工厂创建一个上下文实例。当客服端通过该上下文实例向服务器端查找对象。服务器端将在命名空间内查找对象并将结果返回给客户端。
图2所示为JNDI Server命名空间的存储结构,它描述了客户端向服务器端查找请求时,服务器端是如何在器命名空间查找对象的。
当客户端通过命名上下文接口向服务器端发送查找请求lookup时,客户端先检查将要访问的服务器地址和端口是否在缓存中,若要访问的服务器地址和端口存在,则直接使用已经存在的服务器上的命名实例(即NamingServer类实例)。当客服端找到服务器的命名实例后,服务器端的处理类NamingServer接受并处理该请求。
具体的查找步骤如下:
1.服务器端的缓存绑定类将尝试在其缓存区中直接查找该对象。若缓存哈希表中存在该对象的绑定,则查找成功并将结果返回给客户端。
2.若步1查找失败,先将该对象缓存到服务器端,然后再向下查找上下文哈希映射表空间。该空间结构是平面存储结构,在对象数量比较少的时候可以提高索引速度。这对于轻量级的命名空间查找很有效。若上下文哈希映射表中存在该对象的绑定,则查找成功并将结果返回给客户端。
3.若步2查找失败,服务器端的处理类NamingServer将查找命名空间。该空间结构是完全树状结构,每个上下文(对应于NamingServer)都有一个哈希映射表记录其下面的子上下文和资源对象,递归查找树状结构的最底层。若查到则查找成功并将结果返回给客户端。
4.若步3查找失败,否则整个查找失败并向客户端返回失败信息。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。

Claims (3)

1.一种J2EE应用服务器高性能JNDI服务的实现方法,其特征在于:命名服务实现过程中,将整个模块划分为3个部分分别实现的,这3个部分分别是:服务器端、客户端、客户端与服务器端的连接;其中,服务器端主要实现命名空间存储结构的设计,以及服务器端的缓存策略;客户端主要实现对服务器端缓存的处理;客户端与服务器端的连接主要是建立客户端与服务器端的连接;
当客户端要通过JNDI查找服务器端某个对象时:
(1)先在客户端缓存中查找;
(2)若查找成功,则直接返回查找结果;
(3)若上一步查找失败,客户端通过客户端与服务器端的连接在服务器上查找;
(4)若服务器端缓存中查找到,则直接返回查找结果;
(5)若上一步查找失败,则在服务器端命名空间存储结构中查找;
(6)若查找成功,则直接返回查找结果,否则查找失败返回。
2.根据权利要求1所述的J2EE应用服务器高性能JNDI服务的实现方法,其特征在于:客户端主要是实现客户端的缓存,客户端的缓存服务端类就是负责对已经访问过的服务器地址和端口信息了缓存,它将服务器的地址和端口与名称实例最为键值对增加到哈希表中,缓存服务端类封装了缓存操作;在客户端向服务端请求命名实例前,先检查将要访问的服务器地址和端口是否在缓存中,若要访问的服务器地址和端口存在,则直接使用已经存在的服务器上的命名实例,否则,将新的要访问的服务器地址和端口添加到缓存。
3.根据权利要求1所述的J2EE应用服务器高性能JNDI服务的实现方法,其特征在于:客户端与服务器端的连接主要是建立客户端与服务器端的连接,客户端与服务器端之间的联系是通过命名上下文接口实现的。
CNB2007101647555A 2007-12-12 2007-12-12 一种j2ee应用服务器高性能jndi服务的实现方法 Expired - Fee Related CN100543685C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101647555A CN100543685C (zh) 2007-12-12 2007-12-12 一种j2ee应用服务器高性能jndi服务的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101647555A CN100543685C (zh) 2007-12-12 2007-12-12 一种j2ee应用服务器高性能jndi服务的实现方法

Publications (2)

Publication Number Publication Date
CN101196830A true CN101196830A (zh) 2008-06-11
CN100543685C CN100543685C (zh) 2009-09-23

Family

ID=39547263

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101647555A Expired - Fee Related CN100543685C (zh) 2007-12-12 2007-12-12 一种j2ee应用服务器高性能jndi服务的实现方法

Country Status (1)

Country Link
CN (1) CN100543685C (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102169484A (zh) * 2010-02-26 2011-08-31 威睿公司 虚拟化环境中综合的、相关的和动态的数据搜索
CN101770368B (zh) * 2009-12-30 2012-09-05 飞天诚信科技股份有限公司 .net文件中命名空间的压缩方法和装置
CN112073474A (zh) * 2020-08-19 2020-12-11 深圳市国鑫恒运信息安全有限公司 基于three.js的智慧数据中心管理方法及系统

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101770368B (zh) * 2009-12-30 2012-09-05 飞天诚信科技股份有限公司 .net文件中命名空间的压缩方法和装置
CN102169484A (zh) * 2010-02-26 2011-08-31 威睿公司 虚拟化环境中综合的、相关的和动态的数据搜索
CN102169484B (zh) * 2010-02-26 2014-08-13 威睿公司 虚拟化环境中综合的、相关的和动态的数据搜索
CN112073474A (zh) * 2020-08-19 2020-12-11 深圳市国鑫恒运信息安全有限公司 基于three.js的智慧数据中心管理方法及系统

Also Published As

Publication number Publication date
CN100543685C (zh) 2009-09-23

Similar Documents

Publication Publication Date Title
US11388251B2 (en) Providing access to managed content
EP3391627B1 (en) Shared multi-tenant domain name system (dns) server for virtual networks and corresponding method
JP6188732B2 (ja) マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム
US6862593B2 (en) Separation of database transactions
CN103581213B (zh) 一种共享Hosts文件的应用方法、设备和系统
US20020032775A1 (en) System and method for transmitting and retrieving data via a distributed persistence framework
Rao et al. Accessing files in an internet: The jade file system
CA2538629A1 (en) Method and system for creating, storing, managing and consuming culture specific data
US9740633B2 (en) Updatable address lookup application program interface
CN103761102B (zh) 一种统一数据服务平台及其实现方法
EP4026014B1 (en) Enabling federated query access to heterogeneous data sources
CN108509437A (zh) 一种ElasticSearch查询加速方法
CN106484821A (zh) 一种云计算架构下的混合云存储方法
CN100536472C (zh) 一种网络资源访问控制的方法、模块和服务器
CN103455335A (zh) 一种多级分类的Web实现方法
CN105611000A (zh) 一种域名服务器的dns域名快速检索方法
US20140280154A1 (en) Scalable data transfer in and out of analytics clusters
CN100543685C (zh) 一种j2ee应用服务器高性能jndi服务的实现方法
US20090234858A1 (en) Use Of A Single Service Application Instance For Multiple Data Center Subscribers
CN102307248A (zh) 互联网检索方法及系统
US7689584B2 (en) Hybrid groups
US11303606B1 (en) Hashing name resolution requests according to an identified routing policy
CN106919696A (zh) Seo站点构建方法及seo请求的响应方法
JP2016517078A (ja) ドメイン名サーバが自然言語クエリを処理しコンテキストを決定することを可能にするシステムおよび方法
Chen et al. Grid computing enhances standards-compatible geospatial catalogue service

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: HANGZHOU WANIN EDUCATIONAL MULTIMEDIA INC.

Free format text: FORMER OWNER: ZHEJIANG UNIVERSITY

Effective date: 20120530

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 310027 HANGZHOU, ZHEJIANG PROVINCE TO: 310012 HANGZHOU, ZHEJIANG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20120530

Address after: 1, No. 2, No. 8, No. 310012, Hangzhou economic and Technological Development Zone, Zhejiang

Patentee after: Hangzhou Wanin Education Multimedia Technology Co.,Ltd.

Address before: Hangzhou City, Zhejiang Province, Xihu District Zhejiang 310027 Road 38 East Room 505 Cao Guangbiao computer school of Zhejiang University

Patentee before: Zhejiang University

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090923

Termination date: 20171212

CF01 Termination of patent right due to non-payment of annual fee