2005-01-11

初次使用RMI

使用RMI远程调用,可以减少客户端与服务端对数据的转化过程
直接使用对象存放数据,但同时引了了些复杂问题
对RMI远程调用应该使用动态代理模式,而不是单纯的直接调用接口
还在对bean的管理问题,是否能与spring很好的接合?

Rem.java
[code:1]/*
* Created 2005-1-8
* (c) songsong zoday@hotmail.com
*/
package com.zoday.beans;
import java.rmi.Remote;
import java.rmi.RemoteException;

/**
* @author songsong
*/
public interface Rem extends Remote {

public String getMessage() throws RemoteException;

}[/code:1]


RemClient.java
[code:1]/*
* Created 2005-1-8
* (c) songsong zoday@hotmail.com
*/
package com.zoday.client;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

import com.zoday.beans.*;

/**
* @author songsong
*/
public class RemClient {

public static void main(String[] args) {
try {
String host = "192.168.0.251";
Rem remObject=(Rem)Naming.lookup("rmi://" + host + "/Rem");
System.out.println(remObject.getMessage());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
}
}
}[/code:1]

RemImpl.java
[code:1]/*
* Created 2005-1-8
* (c) songsong zoday@hotmail.com
*/
package com.zoday.server;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

import com.zoday.beans.*;

/**
* @author songsong
*/
public class RemImpl extends UnicastRemoteObject implements Rem {

public RemImpl() throws RemoteException {

}

public String getMessage() throws RemoteException {
return ("hello songsong");
}

}[/code:1]

RemServer.java
[code:1]/*
* Created 2005-1-8
* (c) songsong zoday@hotmail.com
*/
package com.zoday.server;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;


/**
* @author songsong
*/
public class RemServer {

public static void main(String[] args) {
System.out.println("start");
try {
RemImpl localObject = new RemImpl();
Naming.rebind("//127.0.0.1/Rem", localObject);
} catch (RemoteException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
System.out.println("RMI start success");
}
}[/code:1]

使用rmic 生成stub 程序和 skeleton
客户端只需要用到RemClient.java和Rem.java

http://forum.javaeye.com/viewtopic.php?t=3832&postdays=0&postorder=asc&start=0
评论
发表评论

您还没有登录,请登录后发表评论

songsong
搜索本博客
最近加入圈子
最新评论
评论排行榜