下面这个小demo会将一个对象绑定到一个JNDI服务器上,然后通过JNDI客户端获得这个对象。
PS:我们姑且这样叫:JNDI服务器,JNDI客户端这样理解起来可能比较简单
1.建立一个普通的Java项目
2.导入JDK
在JDK 5的rt.jar中一共找到了4种SUN自带的JNDI实现:LDAP,CORBA,RMI,DNS。
这4种JNDI要正常运行还需要底层的相应服务。我们没有LDAP或CORBA服务器,也就无法启动这两种JNDI服务,DNS用于查域名。唯一可以在main()中启动的就是基于RMI的JNDI服务。
PS:因为只是一个理解性的demo所以没有必要那么认真,下一个demo我们将连接weblogic服务器,获得服务器上的连接,那么我们看到的会更加直观。
3.开发绑定对象
在使用RMI来绑定对象,我们的对象必须继承接口:Remote;然后由于对象要在网络中传输,所以对象还得序列化即:继承接口——Serializable
package com.hh.jndi2; import java.io.Serializable; import java.rmi.Remote; /** * * @title Person * @description 使用RMI实现JNDI对象绑定到服务器上,对象必须继承Remote。对象要在网络中传输必须要序列化,所以继承Serializable * @author hadoop * @version * @copyright (c) SINOSOFT * */ public class Person implements Remote,Serializable { /** * @title long * @description TODO * @author hadoop * @param Person.java * @return TODO * @throws */ private static final long serialVersionUID = 1L; private String name; private String password; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String toString(){ return "name:"+name+" password:"+password; } }
4.开发测试类
package com.hh.jndi2; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.naming.spi.NamingManager; public class Test { /** * * @title initPerson * @description 绑定一个对象到JNDI服务上 * @author hadoop * @throws Exception */ public static void initPerson() throws Exception{ //配置JNDI工厂和JNDI的url和端口。如果没有配置这些信息,将会出现NoInitialContextException异常 LocateRegistry.createRegistry(3000); System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); System.setProperty(Context.PROVIDER_URL, "rmi://localhost:3000"); ////初始化 InitialContext ctx = new InitialContext(); //实例化person对象 Person p = new Person(); p.setName("zc"); p.setPassword("123"); //将person对象绑定到JNDI服务中,JNDI的名字叫做:person。 ctx.bind("person", p); ctx.close(); } /** * * @title findPerson * @description 通过JNDI获得person对象 * @author hadoop * @throws Exception */ public static void findPerson() throws Exception{ //因为前面已经将JNDI工厂和JNDI的url和端口已经添加到System对象中,这里就不用在绑定了 InitialContext ctx = new InitialContext(); //通过lookup查找person对象 Person person = (Person) ctx.lookup("person"); //打印出这个对象 System.out.println(person.toString()); ctx.close(); } public static void main(String[] args) throws Exception { initPerson(); findPerson(); } }
5.demo的结构:
6.demo运行的结果:
相关推荐
Oracle官方JDBC Demo是Oracle公司提供的Java数据库连接(JDBC)示例代码,旨在帮助开发者理解和使用JDBC驱动程序与Oracle数据库进行交互。这个压缩包包含了一些基础到高级的JDBC操作实例,对于初学者和有经验的开发...
Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...
- **JNDI(Java Naming and Directory Interface)**:RMI通常与JNDI结合使用,提供更高级别的命名和目录服务,帮助管理和查找远程对象。 - **RMI配置**:包括设置RMI主机和端口,以及处理SSL安全连接等。这些通常...
Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...
1. **JDBC(Java Database Connectivity)**:JDBC是Java中用于连接数据库的标准API,它允许Java应用程序与各种类型的数据库进行交互。通过JDBC,我们可以执行SQL语句、处理结果集以及管理数据库连接。 2. **...
在这个"Java RMI demo"中,我们可以通过分析和运行提供的代码来理解RMI的工作原理。 1. **RMI基本概念** - **远程接口(Remote Interface)**:定义了客户端可以调用的远程方法,它继承自`java.rmi.Remote`接口。 ...
虽然JNDI本身并不提供具体的目录服务,但它提供了统一的接口来与各种目录服务通信。 ### LDAP操作基础 LDAP目录通常包含组织结构数据,如用户、组、部门等。常见的操作有: - **Add**(添加):向目录中添加新的...
在Java中,可以使用HttpURLConnection或者第三方库如Apache HttpClient来实现网络通信。 数据库连接也是常见的需求,Java提供了JDBC(Java Database Connectivity)接口来与各种数据库交互,包括连接管理、SQL语句...
1. **创建ConnectionFactory**:这是连接到消息服务器的工厂对象,你可以通过JNDI(Java Naming and Directory Interface)查找或直接实例化。 2. **创建Connection**:ConnectionFactory用于创建与消息代理的连接...
Weblogic服务器是一款由Oracle公司开发的企业级应用服务器,它提供了丰富的功能和服务,其中包括Java消息服务(JMS,Java Message Service)。JMS是一种标准接口,允许应用程序创建、发送、接收和读取消息。在这个...
- **定义**:JVM是运行Java字节码的虚拟计算机系统,包含解释器组件,负责Java字节码与操作系统之间的通信,确保Java程序的独立性和安全性。 - **JVM体系结构**:涉及栈、堆、方法区等内存区域,以及类加载器、执行...
"Java_EE_Demo-master"这个文件名暗示可能包含了一个JavaEE的演示项目,可能有源代码、配置文件、数据库脚本等。通过分析这个项目的代码,你可以学习到如何组织一个JavaEE应用的结构,以及如何集成上述技术来实现...
Apache ActiveMQ是开源的JMS(Java Message Service)提供商,它允许应用程序之间通过异步通信进行解耦。ActiveMQ支持多种协议,包括TCP/IP、HTTP和HTTPS,以及AMQP、STOMP等开放标准,这使得它可以与各种编程语言和...
ActiveMQ整合Spring的Demo是一个典型的Java企业级应用示例,它展示了如何在Spring框架中集成Apache ActiveMQ,以便实现消息队列的功能。ActiveMQ是Apache软件基金会的一个开源项目,它是一个功能丰富的Java消息服务...
通过这个EJBDemo,开发者可以深入理解EJB和Glassfish服务器的工作原理,掌握EJB的开发和部署过程,同时了解客户端如何与EJB通信,这对于理解Java EE架构和企业级应用开发至关重要。 总结,基于Glassfish的EJBDemo...
“源码”标签表明这个示例DEMO可能包括了用于演示的Java代码,这些代码将展示如何与HornetQ交互。而“工具”标签则意味着可能涉及到JBoss AS 7.1的安装和配置,以及HornetQ的集成。 【压缩包子文件的文件名称列表】...
6. **JNDI(Java Naming and Directory Interface)**:JNDI提供了一个统一的接口,使得应用程序可以查找和绑定资源,如数据库连接池、EJB等。 7. **JTA(Java Transaction API)**:JTA提供了对分布式事务的管理,...
Java EE面试主要考察开发者对这个平台的理解,包括但不限于应用服务器的配置、EJB(Enterprise JavaBeans)、JMS(Java Message Service)、Servlet、JSP(JavaServer Pages)、JNDI(Java Naming and Directory ...