Не работает удалённый сервис

96
19 апреля 2021, 20:50

В программе есть 1 интерфейс и 2 класса:

import java.rmi.Remote;
import java.rmi.*;
public interface MyRemote extends Remote {
    public String sayHello() throws RuntimeException;
}
import java.rmi.server.UnicastRemoteObject;
import java.rmi.*;
import java.rmi.server.*;
public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote {
    public String sayHello(){
        return  "Сервер говорит: Привет";
    }
    public MyRemoteImpl() throws RemoteException {}
    public static void main(String[] args) {
        try {
            MyRemote service = new MyRemoteImpl();
            Naming.rebind("Удалённый привет", service);
        }catch (Exception ex){
            ex.printStackTrace();
        }
    }
}
import java.rmi.*;
public class MyReoteClient {
    public static void main(String[] args) {
        new MyReoteClient().go();
    }
    public void go(){
        try {
            MyRemote service = (MyRemote) Naming.lookup("rtm://127.0.0.1/Remote Hello");
            String s = service.sayHello();
            System.out.println(s);
        }catch (Exception ex){
            ex.printStackTrace();
        }
    }
}

Пытаюсь запустить, выдаёт ошибку. Подскажите, пожалуйста, чего не работает При запуске MyRemoteImpl, выдаёт ошибку:

java.rmi.server.ExportException: remote object implements illegal remote interface; nested exception is: 
    java.lang.IllegalArgumentException: illegal remote method encountered: public abstract java.lang.String MyRemote.sayHello() throws java.lang.RuntimeException
    at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:228)
    at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:383)
    at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:320)
    at java.rmi.server.UnicastRemoteObject.<init>(UnicastRemoteObject.java:198)
    at java.rmi.server.UnicastRemoteObject.<init>(UnicastRemoteObject.java:180)
    at MyRemoteImpl.<init>(MyRemoteImpl.java:11)
    at MyRemoteImpl.main(MyRemoteImpl.java:15)
Caused by: java.lang.IllegalArgumentException: illegal remote method encountered: public abstract java.lang.String MyRemote.sayHello() throws java.lang.RuntimeException
    at sun.rmi.server.Util.checkMethod(Util.java:267)
    at sun.rmi.server.Util.getRemoteInterfaces(Util.java:246)
    at sun.rmi.server.Util.getRemoteInterfaces(Util.java:216)
    at sun.rmi.server.Util.createProxy(Util.java:146)
    at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:226)
    ... 6 more

При запуске MyReoteClient:

java.net.MalformedURLException: invalid URL String: rtm://127.0.0.1/Remote Hello
    at java.rmi.Naming.parseURL(Naming.java:243)
    at java.rmi.Naming.lookup(Naming.java:96)
    at MyReoteClient.go(MyReoteClient.java:9)
    at MyReoteClient.main(MyReoteClient.java:5)
Caused by: java.net.URISyntaxException: Illegal character in path at index 22: rtm://127.0.0.1/Remote Hello
    at java.net.URI$Parser.fail(URI.java:2848)
    at java.net.URI$Parser.checkChars(URI.java:3021)
    at java.net.URI$Parser.parseHierarchical(URI.java:3105)
    at java.net.URI$Parser.parse(URI.java:3053)
    at java.net.URI.<init>(URI.java:588)
    at java.rmi.Naming.intParseURL(Naming.java:273)
    at java.rmi.Naming.parseURL(Naming.java:237)
    ... 3 more
READ ALSO
Удаление элементов из List&lt;Integer&gt; через Stream

Удаление элементов из List<Integer> через Stream

Дано - входящий List<Integer>По нему нужно пройтись через Stream, если сумма всех чисел чётная - удалить все чётные

91
Как в java hibernate создать колонку в бд, если она остутсвует

Как в java hibernate создать колонку в бд, если она остутсвует

Проблема вот в чёмУ меня есть класс

95
Пишу клиент-серверное приложение, от сервера клиенту сообщение приходит, а от клиента серверу не приходит

Пишу клиент-серверное приложение, от сервера клиенту сообщение приходит, а от клиента серверу не приходит

Пишу клиент-серверное приложение, от сервера клиенту сообщение приходит, а от клиента серверу не приходитПричём не выводится никакой ошибки,...

97
Считывание меток через метод RFIDWithUHF.readTagFromBuffer не возвращает Tid, а только EPC

Считывание меток через метод RFIDWithUHF.readTagFromBuffer не возвращает Tid, а только EPC

Внезапно возникла проблема при считывании меток, стандартный метод

110