import java.rmi.Remote;
import java.rmi.RemoteException;
public interface RemoteInterface extends Remote {
String sayHello(String name) throws RemoteException;
}
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class RemoteObject extends UnicastRemoteObject implements RemoteInterface {
protected RemoteObject() throws RemoteException {
super();
}
public String sayHello(String name) {
return "Hello, " + name + "!";
}
}
import org.jboss.remoting3.Endpoint;
import org.jboss.remoting3.spi.NetworkServerProvider;
import org.xnio.IoFuture;
import org.xnio.OptionMap;
import org.xnio.remoting.Remoting;
public class Server {
public static void main(String[] args) throws Exception {
Endpoint endpoint = Remoting.createEndpoint("server", OptionMap.create());
NetworkServerProvider serverProvider = endpoint.getConnectionProviderInterface(NetworkServerProvider.class);
IoFuture<ServerConnection> futureConnection = serverProvider.createServer("localhost", 8080, OptionMap.create());
ServerConnection connection = futureConnection.get();
RemoteObject remoteObject = new RemoteObject();
connection.registerService("remote-object", remoteObject, null);
Thread.currentThread().join();
}
}
import org.jboss.remoting3.Endpoint;
import org.jboss.remoting3.spi.NetworkClientProvider;
import org.xnio.IoFuture;
import org.xnio.OptionMap;
import org.xnio.remoting.RemoteConnection;
public class Client {
public static void main(String[] args) throws Exception {
Endpoint endpoint = Remoting.createEndpoint("client", OptionMap.create());
NetworkClientProvider clientProvider = endpoint.getConnectionProviderInterface(NetworkClientProvider.class);
IoFuture<RemoteConnection> futureConnection = clientProvider.connect("localhost", 8080, null, OptionMap.create());
RemoteConnection connection = futureConnection.get();
RemoteInterface remoteInterface = connection.getEndpoint().getProxy(RemoteInterface.class, "remote-object");
String result = remoteInterface.sayHello("Alice");
System.out.println(result);
connection.close();
}
}