RMI 与 JNDI集成

luozhangwen 2010-05-21 05:33:02
JNDI诞生的理由似乎很简单。随着分布式应用的发展,远程访问对象访问成为常用的方法。虽然说通过Socket等编程手段仍然可实现远程通信,但按照模式的理论来说,仍是有其局限性的。RMI技术,RMI-IIOP技术的产生,使远程对象的查找成为了技术焦点。JNDI技术就应运而生。JNDI技术产生后,就可方便的查找远程或是本地对象。

服务端:

package com.lzw.jndirmi;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface RmiSimple extends Remote{
public String sayHello() throws RemoteException;
}




package com.lzw.jndirmi;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class RmiSimpleImpl extends UnicastRemoteObject implements RmiSimple {
private static final long serialVersionUID = 1L;

protected RmiSimpleImpl() throws RemoteException {
super();
}

public String sayHello() throws RemoteException {
return "这是lzw's RMI与JNDI集成!!";
}
}



package com.lzw.jndirmi;

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class RmiJndiSever {
public static void main(String[] args) {
try {
LocateRegistry.createRegistry(8080);
RmiSimple server = new RmiSimpleImpl();
Properties properties = new Properties();
//Context.INITIAL_CONTEXT_FACTORY = "java.naming.factory.initial";
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY , "com.sun.jndi.rmi.registry.RegistryContextFactory");
properties.setProperty(Context.PROVIDER_URL, "rmi://localhost:8080");
InitialContext ctx = new InitialContext(properties);
ctx.bind("java:com/lzw.jndirmi/RmiSimple", server);
ctx.close();
System.out.println("RMI与JNDI集成服务启动.等待客户端调用...");
} catch (RemoteException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}

}
}
...全文
303 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
luozhangwen 2010-05-21
  • 打赏
  • 举报
回复
客户端..

package com.lzw.test;

import java.rmi.RemoteException;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.lzw.jndirmi.RmiSimple;

/**
* RMI 与 JNDI集成
* Properties - java build path - project 引入服务端项目
* @author lKF23467
*
*/
public class JndiRmiClient {
public static void main(String[] args) {
Properties properties = new Properties();
//Context.INITIAL_CONTEXT_FACTORY = "java.naming.factory.initial";
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY , "com.sun.jndi.rmi.registry.RegistryContextFactory");
properties.setProperty(Context.PROVIDER_URL, "rmi://localhost:8080");
try {
InitialContext ctx = new InitialContext(properties);
RmiSimple remote = (RmiSimple) ctx.lookup("java:com/lzw.jndirmi/RmiSimple");
System.out.println(remote.sayHello());
} catch (NamingException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
}

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧