Я пытаюсь запустить свой сервер с именем SampleServer. Я использую окно и это то, что я сделал:RMI (java.net.ConnectException: Connection failed: connect)
в CMD:
javaw rmiregistry 1099
cd C:\Users\Home\workspace\RMI\src
java -Djava.security.policy=policy SampleServer 1099
я получаю следующее сообщение об ошибке:
binding //localhost:1099/Sample
New instance of Sample created
Sample server failed:Connection refused to host: localhost; nested exception is:
java.net.ConnectException: Connection refused: connect
Я пробовал использовать другой порт #, такие как 4719 для rmiregistry, но я получаю ту же ошибку. Я убедился, что мой брандмауэр отключен, но проблема сохраняется. Я убедился, что порт еще не используется. Я действительно надеюсь, что кто-то может мне помочь.
Изображение моего рабочего стола с папками проекта, затмение окна и ЦМД открытым: http://s22.postimg.org/uq00qzslr/picyture.png
Код:
SampleServer:
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;
import java.rmi.server.UnicastRemoteObject;
public class SampleServer {
public static void main(String args[]) {
if (args.length != 1) {
System.err.println("usage: java SampleServer rmi_port");
System.exit(1);
}
// Create and install a security manager
if (System.getSecurityManager() == null)
System.setSecurityManager(new RMISecurityManager());
try {
// first command-line argument is the port of the rmiregistry
int port = Integer.parseInt(args[0]);
String url = "//localhost:" + port + "/Sample";
System.out.println("binding " + url);
Naming.rebind(url, new Sample());
// Naming.rebind("Sample", new Sample());
System.out.println("server " + url + " is running...");
}
catch (Exception e) {
System.out.println("Sample server failed:" + e.getMessage());
}
}
}
SampleClient:
import java.rmi.Naming;
import java.rmi.RemoteException;
public class SampleClient {
public static void main(String args[]) {
try {
if (args.length < 3) {
System.err.println("usage: java SampleClient host port string... \n");
System.exit(1);
}
int port = Integer.parseInt(args[1]);
String url = "//" + args[0] + ":" + port + "/Sample";
System.out.println("looking up " + url);
SampleInterface sample = (SampleInterface)Naming.lookup(url);
// args[2] onward are the strings we want to reverse
for (int i=2; i < args.length; ++i)
// call the remote method and print the return
System.out.println(sample.invert(args[i]));
} catch(Exception e) {
System.out.println("SampleClient exception: " + e);
}
}
}
SampleInterface :
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface SampleInterface extends Remote {
public String invert(String msg) throws RemoteException;
}
Пример:
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.server.*;
// this is the class with remote methods
public class Sample
extends UnicastRemoteObject
implements SampleInterface {
private int a;
public Sample() throws RemoteException {
System.out.println("New instance of Sample created");
a = 1;
}
public String invert(String m) throws RemoteException {
// return input message with characters reversed
System.out.println("invert("+m+") a=" + a);
return new StringBuffer(m).reverse().toString();
}
}
политика:
grant {
permission java.security.AllPermission;
};
, но затем я получаю: попытка не распознается как внутренняя или внешняя команда. Я думал, что команда для запуска была запущена rmiregistry, или если это не сработало, чего нет в моем случае, javaw rmiregistry). Является ли конкретная загрузка, которая мне нужна, чтобы сделать эту работу или конкретный каталог? – user2644819
'try' * не * внутренняя или внешняя команда. Убери это. Здесь нет ничего, что говорит об использовании этого. Команда, которую вы хотите, это «rmiregistry». Очевидно, вы не выполняли то, что, по вашему мнению, выполняете. – EJP