不考虑使用RMI plugin for eclipse插件。
1. 环境:
eclipse 3.6.2
jdk 1.6.0.24
2.一个简单的demo设计:
2.1
2.2
2.2.1 IHello.java
注意:接口 extends Remote;方法throws RemoteException
/**
* Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
*/
package com.yan.dev.rmi.server.service;
import java.rmi.Remote;
import java.rmi.RemoteException;
/**
* Comment for IHello.java
*
* @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
*
* @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
* @version 1.0
* @time 2011-3-21 下午04:10:44
*/
public interface IHello extends Remote {
public void sayHello()throws RemoteException;
}
2.2.2 HelloImpl.java
注意:extends UnicastRemoteObject;无参构造函数
/**
* Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
*/
package com.yan.dev.rmi.server.service.impl;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import com.yan.dev.rmi.server.service.IHello;
/**
* Comment for HelloImpl.java
*
* @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
*
* @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
* @version 1.0
* @time 2011-3-21 下午04:13:28
*/
public class HelloImpl extends UnicastRemoteObject implements IHello {
/**
* @throws RemoteException
*/
public HelloImpl() throws RemoteException {
super();
}
@Override
public void sayHello() {
System.out.println("ok");
}
}
2.2.3 Server.java
注意:localhost可以替换为server的ip地址
/**
* Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
*/
package com.yan.dev.rmi.server;
import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import com.yan.dev.rmi.server.service.IHello;
import com.yan.dev.rmi.server.service.impl.HelloImpl;
/**
* Comment for Server.java
*
* @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
*
* @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
* @version 1.0
* @time 2011-3-21 下午04:11:34
*/
public class Server {
public static void main(String[] args) {
int port =1234;
try {
LocateRegistry.createRegistry(port);
// 创建一个远程对象
IHello hello = new HelloImpl();
Naming.bind("//localhost:"+port+"/hello", hello);
System.out.println("Server start succeed, listening...");
} catch (RemoteException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (AlreadyBoundException e) {
e.printStackTrace();
}
}
}
2.2.4 Client.java
注意:loalhost与server的ip地址一致
/**
* Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
*/
package com.yan.dev.rmi.client;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import com.yan.dev.rmi.server.service.IHello;
/**
* Comment for Client.java
*
* @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
*
* @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
* @version 1.0
* @time 2011-3-21 下午04:17:12
*/
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
try {
IHello hello = (IHello) Naming.lookup("rmi://localhost:1234/hello");
hello.sayHello();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
}
}
}
3运行
运行Server,
运行Client
3.1本机
3.2远程
注意:修改ip地址
eclipse中export server.jar,启动main类选择Server
命令行中运行java -jar server.jar。
运行client连接server。