最小的RMI例子(jdk6)
编写了一个最小的RMI例子(JDK1.6)
服务器端
package stg.server;import java.rmi.Remote;import java.rmi.RemoteException;public interface Service extends Remote {String echo(String client) throws RemoteException;}?
?
package stg.server;import java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;public class ServiceImpl extends UnicastRemoteObject implements Service {protected ServiceImpl() throws RemoteException {super();}public String echo(String client) throws RemoteException{return "From rmi Server: Hello! " + client;}}?
package stg.server;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;public class Deploy {/** * @param args * @throws NamingException * @throws RemoteException */public static void main(String[] args) throws NamingException, RemoteException {Service service = new ServiceImpl();//registryLocateRegistry.createRegistry(25002);//contextContext namingCtx = new InitialContext();//bindnamingCtx.bind("rmi://localhost:25002/service", service);}}?客户端
?
package stg.client;import javax.naming.Context;import javax.naming.InitialContext;import stg.server.Service;public class Client {public static void main(String[] args) throws Exception {Context namingCtx = new InitialContext();Service service = (Service)namingCtx.lookup("rmi://192.168.8.2:25002/service");String echo = service.echo("StoneGreen");System.out.println(echo);}}??
Exception in thread "main" javax.naming.CommunicationException [Root exception is java.rmi.MarshalException: error marshalling arguments; nested exception is: java.io.NotSerializableException: com.ccl.rmi.util.ServiceImpl]at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:126)at com.sun.jndi.toolkit.url.GenericURLContext.bind(GenericURLContext.java:208)at javax.naming.InitialContext.bind(InitialContext.java:400)at com.ccl.rmi.util.Deploy.main(Deploy.java:30)Caused by: java.rmi.MarshalException: error marshalling arguments; nested exception is: java.io.NotSerializableException: com.ccl.rmi.util.ServiceImplat sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:120)... 3 moreCaused by: java.io.NotSerializableException: com.ccl.rmi.util.ServiceImplat java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)... 5 more