最近再看spring,今天看到spring整合jndi,就整理一下jndi的相关资料,写了个简单的开发实例。
先来介绍下jndi
JNDI(The Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。
命名或目录服务使你可以集中存储共有信息,这一点在网络应用中是重要的,因为这使得这样的应用更协调、更容易管理。例如,可以将打印机设置存储在目录服务中,以便被与打印机有关的应用使用。
目录服务是命名服务的自然扩展。两者之间的关键差别是目录服务中对象可以有属性(例如,用户有email地址),而命名服务中对象没有属性。因此,在目录服务中,你可以根据属性搜索对象。JNDI允许你访问文件系统中的文件,定位远程RMI注册的对象,访问象LDAP这样的目录服务,定位网络上的EJB组件。
关于JNDI要注意的重要一点是,它提供了应用编程接口(application programming interface,API)和服务提供者接口(service provider interface,SPI)。
JNDI API由5个包组成: l Javax.naming:包含了访问命名服务的类和接口。例如,它定义了Context接口,这是命名服务执行查询的入口。 l Javax.naming.directory:对命名包的扩充,提供了访问目录服务的类和接口。例如,它为属性增加了新的类,提供了表示目录上下文的DirContext接口,定义了检查和更新目录对象的属性的方法。 l Javax.naming.event:提供了对访问命名和目录服务时的时间通知的支持。例如,定义了NamingEvent类,这个类用来表示命名/目录服务产生的事件,定义了侦听NamingEvents的NamingListener接口。 l Javax.naming.ldap:这个包提供了对LDAP 版本3扩充的操作和控制的支持,通用包javax.naming.directory没有包含这些操作和控制。 l Javax.naming.spi:这个包提供了一个方法,通过javax.naming和有关包动态增加对访问命名和目录服务的支持。这个包是为有兴趣创建服务提供者的开发者提供的。
http://javacrazyer.iteye.com/blog/759485
下面介绍下jboss下jndi的开发实例,其实也可以作为简单的ejb实例的搭建。
首先,搭建ejb项目,发布一个remote接口
1)创建一个ejb工程,将jboss目录下client文件夹中的所有jar包引入
2)创建接口package com.jiangxl.ejb;
public interface HelloWorld {
public String sayHello(String name);
}
3)创建实现类
package com.jiangxl.ejb;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless
@Remote(HelloWorld.class)
public class HelloWorldBean implements HelloWorld {
public String sayHello(String name) {
return name+"说:世界,你好。";
}
}
4)将该工程打成jar包,发布到jboss,这样,一个remote接口发布完成。
下面就开始用jndi进行访问远程发布的接口
1)在src下新建文件jndi.properties,指定jndi提供上,本实例用的是jboss
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099
2)建立客户端访问类
package com.jiangxl.ejb;
import javax.naming.InitialContext;
public class EJBClient {
public static void main(String[] args){
try{
InitialContext context = new InitialContext();
HelloWorld helloWorld = (HelloWorld)context.lookup("HelloWorldBean/remote");
System.out.println(helloWorld.sayHello("小麦"));
}catch(Exception e){
e.printStackTrace();
}
}
}
启动jboss,然后运行main方法,就可以访问远程接口了。
分享到:
相关推荐
NULL 博文链接:https://blueskylan.iteye.com/blog/336447
jndi对数据库操作 数据源对数据库操作 最简单的java
配置了tomcat之后发现jndi好简单啊,可是碰到了hibernate该怎么做呢,本例详细解析
经过实践归纳的,参考了tomcat6.0关于配置JNDI的官方文档。经过测试可以配置成功和使用。
基于JNDI的应用程序开发 在以TOMCAT为WEB服务器的项目中,用JNDI建立数据库连接池实例.
J2SE应用编程JNDI使用实例JNDI using J2SE application programming examples
1.13 Maven入门--概念与实例 1.14 Subversion 1.15 jar war ear区别 1.16 如何在Eclipse中调试JBoss应用 1.17 JBoss 5.0 安装与配置详解 1.18 JBOSS安装配置 1.19 Oracle,MySql,SQL server分页 1.20 Jboss...
Java演示JNDI的使用,在EJB中使用JNDI的例子,首先初始化Context,它是连接JNDI树的起始点,查找对象、打印对象、关闭Context。
jndi获取数据库连接,当前软件版本...Tomcat 为每个在其上运行的 Web 应用都提供了一个 JNDI 的 InitialContext 实现实例 Tomcat中的默认数据源支持基于Commons 项目中的DBCP 1.x连接池,也可以使用实现任何其他连接池
基于Java的实例源码-EJB中JNDI的使用源码例子.zip
Maven_jndi,使用idea的tomcat7插件运行,会报错,内容是无法连接context.xml文件
基于Java的实例开发源码-EJB中JNDI的使用源码例子.zip
Simple-JNDI旨在解决的第二个问题是从应用程序中的任何位置轻松访问应用程序配置。 如果您唯一的目的是测试或使用依赖于Tomcat之外的Tomcat JNDI环境的类,或者仅需要基于JNDI的数据源,请 (不要与Simple-JNDI...
在分析数据库连接池工作原理的基础上,给出了Tomcat服务器数据库连接池的配置实例,以及在JSP页面中使用此连接池进行数据库访问的Java代码。在大型Web站点的开发中,使用数据库连接池技术是必要的,也是可取的。
摘要:Java源码,初学实例,JNDI实例 JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context……
实例111 使用JNDI 396 实例112 各种EJB之间的调用过程 397 实例113 使用B/S结构的EJB 402 实例114 使用C/S结构的EJB组件服务 405 实例115 与时间有关的函数 407 实例116 EJB与UML的对应关系 412 实例117 C/S结构的...
Java中的EJB编程实例代码,内容有:简单的EJB、无状态SessionBean、有状态SessionBean、BMP位图实例、cmp实例、Message-Driven Bean、JNDI的使用、112各种EJB之间的调用、B-S结构EJB、 C-S结构EJB、UML建模与J2EE...
Java中Enterprise JavaBeans(EJB)编程实例代码,内容有:简单的EJB、无状态SessionBean、有状态SessionBean、BMP位图实例、cmp实例、Message-Driven Bean、JNDI的使用、112各种EJB之间的调用、B-S结构EJB、 C-S结构...
EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件...