JNDI基本应用(转载)
2008-04-03 16:07
281 查看
在J2EE中,JNDI的目的是用来查找J2EE服务器的注册资源(如EJB等),下面介绍JNDI的基本知识。
1.JNDI(Java Naming and Directory Interface)简介
命名服务提供了一种为对象命名的机制,这样你就可以在无需知道对象位置的情况下获取和使用对象。只要该对象在命名服务器上注册过,且你必须知道命名服务器的地址和该对象在命名服务器上注册的JNDI名。就可以找到该对象,获得其引用,从而运用它提供的服务。利用JNDI可以寻找在命名服务器上注册过的所有对象。
JNDI就是为JAVA中命名和目录服务定义的JAVA API,是命名服务的抽象机制。我们可以直接通过JNDI来操作命名服务,而不要与底层的命名服务器交互,大大减轻了程序员的压力。
2.应用JNDI
(1)启动JNDI服务器
在用j2ee –verbose启动J2EE 服务器的同时,也就启动了JNDI服务器。
一般情况下,J2EE服务器启动的同时,JNDI服务器也就启动了。
(2)关闭JNDI服务器
使用命令:
j2ee –stop
关闭JNDI服务器
(3)获得名字服务的初始环境
Contect ctx=new InitailContext();
这样获得的初始环境为默认的命名服务。
假如你想改变提供JNDI服务的类(或厂商)和提供JNDI服务的命名服务器,可以采用以下方法:
Hashtable Env=new Hashtable();
[align=left]Env.put(Context.INITIAL_CONTEXT_FACTORY,”com.sun.enterprise.naming.SerialInitContextFactory”);//指定提供命名服务的类名[/align]
Env.put(Context.PROVIDER_URL,”localhost:1099”);//指定提供命名服务的服务器名和端口
Context ctx=new InitialContext(env);
3.对象绑定
用bind(String name,Object o)方法 ,把对象o绑定到名字name上
例:
import javax.naming.*;
public class TestJNDI{
public static void main(String[] args){
try{
Context ctx=new InitialContext();
Ctx.bind(“ABC”,”JAVA1”);//把JAVA1字符串绑定到ABC 上
}catch(NamingException e){
e.printStackTrace();
}
}
}
如果名字已绑定或命名服务器没有启动,则会出现NamingException异常
4.重新绑定
用ctx.rebind(String name,Object o);来重新绑定JNDI
如:ctx.rebind(“ABC”,”JAVA2”);//现在ABC就绑定到JAVA2字符串
5.解除绑定
ctx.unbind(String name);
不过你要确保该名字存在,否则出现NameNotFoundException 异常
6.查找已绑定的对象
用ctx.lookup(String name);根据name找对象
例:
import javax.naming.*;
public class TestJNDI{
public static void main(String[] args){
try{
Context ctx=new InitialContext();
Object o=ctx.lookup(“ABC”);//根据JNDI名查找绑定的对象
String s=(String)o;//强制转换
}catch(NamingException e){
e.printStackTrace();
}catch(ClassCastException e){
e.printStackTrace();
}
}
}
7.在EJB中的应用(查找EJB HOME对象)
InitialContext ic=new InitialContext();
Object o=ic.lookup(“java:comp/env/ejb/Hello”);//利用JNDI名查找EJB HOME
HelloHome home=(HelloHome)PortableRemoteObject.narrow(lookup,HelloHome.class);//定位EJB //HOME对象
Hello hello=home.create();//用EJB HOME创建EJB对象
1.JNDI(Java Naming and Directory Interface)简介
命名服务提供了一种为对象命名的机制,这样你就可以在无需知道对象位置的情况下获取和使用对象。只要该对象在命名服务器上注册过,且你必须知道命名服务器的地址和该对象在命名服务器上注册的JNDI名。就可以找到该对象,获得其引用,从而运用它提供的服务。利用JNDI可以寻找在命名服务器上注册过的所有对象。
JNDI就是为JAVA中命名和目录服务定义的JAVA API,是命名服务的抽象机制。我们可以直接通过JNDI来操作命名服务,而不要与底层的命名服务器交互,大大减轻了程序员的压力。
2.应用JNDI
(1)启动JNDI服务器
在用j2ee –verbose启动J2EE 服务器的同时,也就启动了JNDI服务器。
一般情况下,J2EE服务器启动的同时,JNDI服务器也就启动了。
(2)关闭JNDI服务器
使用命令:
j2ee –stop
关闭JNDI服务器
(3)获得名字服务的初始环境
Contect ctx=new InitailContext();
这样获得的初始环境为默认的命名服务。
假如你想改变提供JNDI服务的类(或厂商)和提供JNDI服务的命名服务器,可以采用以下方法:
Hashtable Env=new Hashtable();
[align=left]Env.put(Context.INITIAL_CONTEXT_FACTORY,”com.sun.enterprise.naming.SerialInitContextFactory”);//指定提供命名服务的类名[/align]
Env.put(Context.PROVIDER_URL,”localhost:1099”);//指定提供命名服务的服务器名和端口
Context ctx=new InitialContext(env);
3.对象绑定
用bind(String name,Object o)方法 ,把对象o绑定到名字name上
例:
import javax.naming.*;
public class TestJNDI{
public static void main(String[] args){
try{
Context ctx=new InitialContext();
Ctx.bind(“ABC”,”JAVA1”);//把JAVA1字符串绑定到ABC 上
}catch(NamingException e){
e.printStackTrace();
}
}
}
如果名字已绑定或命名服务器没有启动,则会出现NamingException异常
4.重新绑定
用ctx.rebind(String name,Object o);来重新绑定JNDI
如:ctx.rebind(“ABC”,”JAVA2”);//现在ABC就绑定到JAVA2字符串
5.解除绑定
ctx.unbind(String name);
不过你要确保该名字存在,否则出现NameNotFoundException 异常
6.查找已绑定的对象
用ctx.lookup(String name);根据name找对象
例:
import javax.naming.*;
public class TestJNDI{
public static void main(String[] args){
try{
Context ctx=new InitialContext();
Object o=ctx.lookup(“ABC”);//根据JNDI名查找绑定的对象
String s=(String)o;//强制转换
}catch(NamingException e){
e.printStackTrace();
}catch(ClassCastException e){
e.printStackTrace();
}
}
}
7.在EJB中的应用(查找EJB HOME对象)
InitialContext ic=new InitialContext();
Object o=ic.lookup(“java:comp/env/ejb/Hello”);//利用JNDI名查找EJB HOME
HelloHome home=(HelloHome)PortableRemoteObject.narrow(lookup,HelloHome.class);//定位EJB //HOME对象
Hello hello=home.create();//用EJB HOME创建EJB对象
相关文章推荐
- (转载)Linux上iptables防火墙的基本应用教程
- JNDI基本应用----摘自javaweb邮件开发详解
- JNDI的基本应用
- JNDI的基本应用!
- JNDI(一)基本应用
- 用 .NET Memory Profiler 跟踪.net 应用内存使用情况--基本应用篇 (转载)
- JNDI的基本应用
- 转载:TWebBrowser的基本应用 - Z的专栏
- [转载]: delphi中XLSReadWrite控件的使用(3)---基本应用
- JNDI的基本应用
- [转载]FPGA/CPLD重要设计思想及工程应用(时序及同步设计)
- Java 回顾笔记_集合框架-泛型基本应用
- javacc jjtree 写法 以及 jj写法 基本语法 以及应用
- Tomcat(一) Tomcat是什么: Tomcat与Java技术 Tomcat与Web应用 以及 Tomcat基本框架及相关配置
- 基于express,MySQL,ejs实现的一个简单基本的网站后台管理应用
- [转]Xstream基本应用 -- xStream转换XML、JSON
- Ogre wiki 中级教程1 动画,点之间行走及四元数的基本应用
- (转载)[TOMCAT]用web.xml控制Web应用的行为
- 【转载】开发杀手级企业应用10规则
- COM组件设计与应用(十)(转载)