1. JNDI的理解
我觉得JNDI就好像是肯德基,在远端提供外卖服务。客户本身看到的,也就是肯德基对外公开的仅仅是一份外卖菜单而已,您需要什么直接打个电话向服务台要就行了,至于汉堡包、薯条是怎么做的,客户不用关心。客户只需要知道怎么打电话,告诉他您的联系方式就行了。而客户拿到套餐后就分为2种情况了,这就取决于服务商——肯德基了。比如说人家服务上需要回收您剩下的废弃物用于二次循环利用(对应于有状态的SessionBean);或者如果说人家服务商不管了,给你送过去就不管了(无状态的SessionBean),您爱怎么用就怎么用,无所谓。其中网上的菜谱和您最终拿到的对象是一个对应关系。菜谱是比较抽象的,您最后拿到的却是实实在在的,为您服务的对象。
官方的说法是:JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。JNDI可访问的现有的目录及服务有:DNS、XNam、Novell目录服务、LDAP(Lightweight Directory Access Protocol轻型目录访问协议)、CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。
2. JNDI的应用
1.在JavaEE中一般是利用JNDI获取应用上下文档中的数据源对象
Context ctx = new InitialContext();
DataSource ds1 = (DataSource) ctx.lookup("java:/oracle1");
|
其中oracle1就是应用上下文中的JNDI名称。
2.利用JNDI获得EJB的SessionBean
Context context = init();
Hello hello = (Hello) context.lookup("HelloEAOImpl/remote-ejb.sessionBean.Hello");
System.out.println(hello.hello("素还真"));
|
用JNDI获取远程的SessionBean接口之后为自己的业务服务。
3.松耦合的方式访问远程、处在应用上下文的对象
对象-绑定代码
//环境设置
String factory = "org.jnp.interfaces.NamingContextFactory";
String serverURL = "jnp://127.0.0.1:1099";
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, factory);
env.put(Context.PROVIDER_URL, serverURL);
//正式绑定
final String testName = "testName";
Context ctx = new InitialContext(env);
JFrame mainWin = new JFrame("服务端控件");
mainWin.setBounds(20,30,400,300);
ctx.rebind(testName,mainWin);
out.print("绑定成功");
|
对象-获取代码
String factory = "org.jnp.interfaces.NamingContextFactory";
String serverURL = "jnp://127.0.0.1:1099";
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, factory);
env.put(Context.PROVIDER_URL, serverURL);
Context context = new InitialContext(env);
JFrame mainWin = (JFrame) context.lookup("testName");
//mainWin.setBounds(20,30,400,300);
mainWin.setVisible(true);
context.close();
|
3. JNDI的使用步骤
1.创建应用上下文Context(可以自己加入配置)
String factory = "org.jnp.interfaces.NamingContextFactory";
String serverURL = "jnp://127.0.0.1:1099";
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, factory);
env.put(Context.PROVIDER_URL, serverURL);
Context context = new InitialContext(env);
|
2.调用Context的lookup方法查找自己想要的对象
JFrame mainWin = (JFrame) context.lookup("testName");
|
3.用查找后的对象为自己的业务提供相关的服务
mainWin.setVisible(true);
|
4.关闭Context
如此一个简单的调用JNDI流程完成。
4. Jboss的JNDI支持
实际上上面的代码已经体现了JBoss对JNDI的支持了,数据源可以通过JBOSS管理界面进行配置,在代码中利用以下代码就可以获取数据源,(此代码有重复)
Context ctx = new InitialContext();
DataSource ds1 = (DataSource) ctx.lookup("java:/oracle1");
|
还有就是绑定EJB的sessionBean,上面代码也有过交代。只是EJB必须以jar的方式部署到JBoss下面,或者打进war包中,和web项目一起发布到JBoss当中。最后一个就是以一种固定的配置上下文、硬编码的方式将命名和对象捆绑起来发布到JBoss中,获取的时候也通过固定的配置获取上下文,从而获取想要的对象。
所以可以看到,一般是数据源、EJB用JNDI捆绑比较多,自己做一个捆绑服务对象、获取的情况相对来说少一些,也不太友好。
分享到:
相关推荐
### JavaEE5学习笔记01-JTA和数据库事务:深入解析与应用 #### 一、JavaEE5概览与核心组件 JavaEE5是Java Enterprise Edition的第五个版本,标志着企业级Java应用的一个重要里程碑。它引入了一系列重要的新特性,...
以上就是JavaEE学习笔记中可能涵盖的关键知识点,它们构成了JavaEE开发的基础,并且每个部分都有深入研究的价值。通过学习和实践这些技术,开发者能够构建出高效、稳定和可扩展的企业级Web应用。
### JavaEE5学习笔记07-Web层与EJB集成总结 #### 一、JavaEE5框架中的Web层与EJB集成概述 在JavaEE5(即Java Platform, Enterprise Edition 5)中,Web层与EJB(Enterprise JavaBeans)的集成是构建企业级应用的...
### JavaEE5学习笔记04-JavaMail使用总结 在JavaEE5的学习过程中,JavaMail是一个非常重要的组件,它提供了发送、接收电子邮件的功能,并且能够与各种不同的邮件服务器进行交互。下面将根据提供的内容,详细解析...
JavaEE学习笔记是Java开发领域中的重要资源,它包含了丰富的技术知识和实践经验,旨在帮助初学者和有经验的开发者深入理解Java企业级应用的开发。JavaEE(Java Platform, Enterprise Edition)是Oracle公司主导的...
本"JavaEE2017最新版基础班学习笔记"涵盖了JavaEE入门所需的基本概念和技术,是新手学习JavaEE的良好参考资料。以下将详细介绍其中可能涉及的关键知识点: 1. **Servlet与JSP**:Servlet是JavaEE中处理HTTP请求的...
这个"Javaee课堂笔记精华总结就业必备"显然是一份针对求职者或初入职场的开发者准备的学习材料,旨在帮助他们掌握JavaEE的核心概念和技术,以提升就业竞争力。 JavaEE平台包括一组服务、APIs和协议,用于构建分布式...
在学习JavaEE的过程中,你需要掌握以下几个核心知识点: 1. **Servlet与JSP**:Servlet是JavaEE中的基础组件,用于接收和响应HTTP请求。它们可以处理动态内容,而JSP(JavaServer Pages)则是一种视图技术,允许...
"javaee思维导图版笔记-吉林大学" 本笔记主要涵盖了Java EE的基础知识,包括Servlet、JSP、JNDI、JPA等方面的内容。 一、Servlet概述 Servlet是Java EE中的一种服务器端组件,用于处理HTTP请求并返回响应。...
《IT学习资料2》-Java 学习笔记.zip 是一份专为Java初学者和进阶者准备的综合学习资源,包含了大量的课程材料和实践指导。这个压缩包中的内容旨在帮助用户全面掌握Java编程语言,从基础语法到高级特性的运用,再到...
【JavaWeb崔希凡全套笔记】是一份全面深入学习JavaWeb和JavaEE技术的重要资源,由知名讲师崔希凡精心编撰。这份笔记总计涵盖了28天的学习内容,旨在帮助学员系统地掌握JavaWeb和JavaEE的核心知识。下面将详细阐述...
【JavaEE技术体系详解】 JavaEE(Java Platform, Enterprise ...达内培训笔记涵盖了这些JavaEE的重要概念和技术,对于初学者和进阶开发者都是宝贵的学习资料,通过深入学习和实践,可以掌握企业级应用开发的关键技能。
### 韩顺平servlet与jsp_...学习这些内容不仅有助于理解JavaEE的核心概念和技术栈,还能帮助开发者掌握如何构建高效、可维护的Web应用。通过实践这些模式和技术,开发者可以提升自己的技能,并为实际项目开发做好准备。
Java EE,原名为J2EE,是Java平台上用于构建企业级分布式应用的框架。...而《J2EE学习笔记》这份资料将是你探索这个领域的宝贵指南,它将帮助你系统性地理解和掌握Java EE的各个方面,为你的编程事业打下坚实的基础。
5. **EJB**:Enterprise JavaBeans是JavaEE的一部分,提供了创建服务器端组件的框架,用于构建可复用的、安全的、分布式的业务逻辑。 6. **JSP内置对象**:包括request、response、session、application、...