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
直接使用对象存放数据,但同时引了了些复杂问题
对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







评论排行榜