Какая часть сервера RMI должна быть реализована с многопоточностью - PullRequest
0 голосов
/ 06 июня 2018

Я только недавно начал программирование RMI и выполнил большинство частей для требований назначения.Но в моей голове возник такой вопрос, где одно из требований - поддержка нескольких потоков.В основном, в какой части должен быть реализован многопоточный режим?Должен ли я сделать класс Server Runnable или сделать объекты, которые создаются в классе Server Runnable?Вот код моего класса сервера:

public class Server {

public static void main(String args[]) {
    String portNum = "4444";
    try {
        Account_Server_Controller accountController = new Account_Server_Controller();

        BookCategory_Server_Controller categoryController = new BookCategory_Server_Controller();

        Book_Server_Controller bookController = new Book_Server_Controller();

        BookActivity_Server_Controller bookActivityController = new BookActivity_Server_Controller();

        startRegistry(Integer.parseInt(portNum));
        Naming.rebind(ServerLocater.getAccountRegistryURL(), accountController);
        Naming.rebind(ServerLocater.getBookRegistryURL(), bookController);
        Naming.rebind(ServerLocater.getCategoryRegistryURL(), categoryController);
        Naming.rebind(ServerLocater.getBookActivityRegistryURL(), bookActivityController);
        System.out.println("Server is Ready.");
    } catch (NumberFormatException | MalformedURLException | RemoteException e) {
        System.out.println("Exception in Server.main: " + e);
    }
}

private static void startRegistry(int rmiPortNum) throws RemoteException {
    try {
        Registry registry = LocateRegistry.getRegistry(rmiPortNum);
        registry.list();
    } catch (RemoteException ex) {
        System.out.println("RMI registry is not located at port " + rmiPortNum);
        Registry registry = LocateRegistry.createRegistry(rmiPortNum);
        System.out.println("RMI registry created at port " + rmiPortNum);
    }
}

}

1 Ответ

0 голосов
/ 07 июня 2018

Нет.Вам не нужно запускать какие-либо потоки или реализовывать какие-либо Runnables.

Вы просто должны убедиться, что ваши реализации удаленных методов являются поточно-ориентированными.

...