RMI多线程骨架

时间:2013-06-26 16:54:10

标签: java multithreading rmi

我的应用程序使用rmi来服务客户端请求来操纵数据库上的数据(使用JDBC)。我希望该骨架为每个客户端的操作请求运行一个线程。我只需要像

这样的东西
public MySkeleton implement MyInterface {
    public string method1() {
        myThread.start();
    }

或其他什么?

2 个答案:

答案 0 :(得分:4)

您无需执行任何特殊操作,RMI框架会自动为您自动分离新线程。尝试使用最简单的服务器,您将看到每次新客户端连接时,总是能够直接连接到服务器:

public interface Server extends java.rmi.Remote {
    void doIt () throws java.rmi.RemoteException;
}

public class ServerImpl extends java.rmi.server.UnicastRemoteObject implements Server {
    public ServerImpl() throws java.rmi.RemoteException {
            super();
    }

    public void doIt () {
            System.out.println ("Starting in " + Thread.currentThread().getName());
            try { Thread.sleep(10000); } catch(InterruptedException t) {}
            System.out.println ("Stopping in " + Thread.currentThread().getName());
    }

    public static void main (String[] argv) throws Exception {
            java.rmi.registry.LocateRegistry.createRegistry(1099);
            java.rmi.Naming.rebind ("//localhost/Server", new ServerImpl ());
    }
}

public class Client {
    public static void main(String[] argv) throws Exception {
            ((Server) java.rmi.Naming.lookup("Server")).doIt();
    }
}

答案 1 :(得分:3)

  

我希望骨架为每个客户端的操作请求运行一个线程。

RMI已经做到了。

  

我只需要像

这样的东西

不,不。只需正常编写方法即可。 RMI将为您多线程。