`
zc985552943
  • 浏览: 291013 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Babe4ca6-5e6f-33aa-9078-762ee3ccfb7e
云计算--hadoop
浏览量:11866
5e98c2c1-2a82-3388-bc80-7fca0170bb12
redis解说
浏览量:27148
088014c7-4d3f-39ce-b72e-4ebe7046a134
MongoDB读书笔记
浏览量:16006
D2b74847-c860-3e26-96fe-3fa4498d6348
Maven读书笔记
浏览量:27236
688db20f-402d-3a1d-8188-d6153d6c7465
Java通信
浏览量:13677
社区版块
存档分类
最新评论

02_Java通信_JNDI_demo1

阅读更多

下面这个小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运行的结果:
 

 

  • 大小: 37 KB
  • 大小: 37.1 KB
  • 大小: 27.6 KB
1
2
分享到:
评论

相关推荐

    Oracle 官方 JDBC Demo JAVA

    Oracle官方JDBC Demo是Oracle公司提供的Java数据库连接(JDBC)示例代码,旨在帮助开发者理解和使用JDBC驱动程序与Oracle数据库进行交互。这个压缩包包含了一些基础到高级的JDBC操作实例,对于初学者和有经验的开发...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    java RMI demo

    - **JNDI(Java Naming and Directory Interface)**:RMI通常与JNDI结合使用,提供更高级别的命名和目录服务,帮助管理和查找远程对象。 - **RMI配置**:包括设置RMI主机和端口,以及处理SSL安全连接等。这些通常...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    java链接多个数据库配置demo

    1. **JDBC(Java Database Connectivity)**:JDBC是Java中用于连接数据库的标准API,它允许Java应用程序与各种类型的数据库进行交互。通过JDBC,我们可以执行SQL语句、处理结果集以及管理数据库连接。 2. **...

    Java RMI demo

    在这个"Java RMI demo"中,我们可以通过分析和运行提供的代码来理解RMI的工作原理。 1. **RMI基本概念** - **远程接口(Remote Interface)**:定义了客户端可以调用的远程方法,它继承自`java.rmi.Remote`接口。 ...

    SpringLDAP和JNDI的增删改查

    虽然JNDI本身并不提供具体的目录服务,但它提供了统一的接口来与各种目录服务通信。 ### LDAP操作基础 LDAP目录通常包含组织结构数据,如用户、组、部门等。常见的操作有: - **Add**(添加):向目录中添加新的...

    server是java平台的一款demo代码,轻量级便于学习

    在Java中,可以使用HttpURLConnection或者第三方库如Apache HttpClient来实现网络通信。 数据库连接也是常见的需求,Java提供了JDBC(Java Database Connectivity)接口来与各种数据库交互,包括连接管理、SQL语句...

    Jms做的一些的demo

    1. **创建ConnectionFactory**:这是连接到消息服务器的工厂对象,你可以通过JNDI(Java Naming and Directory Interface)查找或直接实例化。 2. **创建Connection**:ConnectionFactory用于创建与消息代理的连接...

    Weblogic提供JMS服务Demo

    Weblogic服务器是一款由Oracle公司开发的企业级应用服务器,它提供了丰富的功能和服务,其中包括Java消息服务(JMS,Java Message Service)。JMS是一种标准接口,允许应用程序创建、发送、接收和读取消息。在这个...

    java基础课程.pdf

    - **定义**:JVM是运行Java字节码的虚拟计算机系统,包含解释器组件,负责Java字节码与操作系统之间的通信,确保Java程序的独立性和安全性。 - **JVM体系结构**:涉及栈、堆、方法区等内存区域,以及类加载器、执行...

    JavaEE学习作业 Java学习资料

    "Java_EE_Demo-master"这个文件名暗示可能包含了一个JavaEE的演示项目,可能有源代码、配置文件、数据库脚本等。通过分析这个项目的代码,你可以学习到如何组织一个JavaEE应用的结构,以及如何集成上述技术来实现...

    ActiveMQ整合Spirng的一个demo

    Apache ActiveMQ是开源的JMS(Java Message Service)提供商,它允许应用程序之间通过异步通信进行解耦。ActiveMQ支持多种协议,包括TCP/IP、HTTP和HTTPS,以及AMQP、STOMP等开放标准,这使得它可以与各种编程语言和...

    ActiveMQ整合spring的Demo

    ActiveMQ整合Spring的Demo是一个典型的Java企业级应用示例,它展示了如何在Spring框架中集成Apache ActiveMQ,以便实现消息队列的功能。ActiveMQ是Apache软件基金会的一个开源项目,它是一个功能丰富的Java消息服务...

    基于glassfish的EJBDemo,包含打包脚本,包含客户端

    通过这个EJBDemo,开发者可以深入理解EJB和Glassfish服务器的工作原理,掌握EJB的开发和部署过程,同时了解客户端如何与EJB通信,这对于理解Java EE架构和企业级应用开发至关重要。 总结,基于Glassfish的EJBDemo...

    (转)JBOSS7.1下开发JMS(HoernetQ)的示例DEMO

    “源码”标签表明这个示例DEMO可能包括了用于演示的Java代码,这些代码将展示如何与HornetQ交互。而“工具”标签则意味着可能涉及到JBoss AS 7.1的安装和配置,以及HornetQ的集成。 【压缩包子文件的文件名称列表】...

    JAVA-Learn:这是我学习 JAVA WEB 相关的资料与 Demo

    6. **JNDI(Java Naming and Directory Interface)**:JNDI提供了一个统一的接口,使得应用程序可以查找和绑定资源,如数据库连接池、EJB等。 7. **JTA(Java Transaction API)**:JTA提供了对分布式事务的管理,...

    一些Java EE面试问答整理

    Java EE面试主要考察开发者对这个平台的理解,包括但不限于应用服务器的配置、EJB(Enterprise JavaBeans)、JMS(Java Message Service)、Servlet、JSP(JavaServer Pages)、JNDI(Java Naming and Directory ...

Global site tag (gtag.js) - Google Analytics