RMI(java.net.ConnectException: Connection refused: connect)
Ich versuche meinen server mit dem Namen SampleServer. Ich bin mit windows und das ist, was ich getan habe:
in cmd:
javaw rmiregistry 1099
cd C:\Users\Home\workspace\RMI\src
java -Djava.security.policy=policy SampleServer 1099
bekomme ich die folgende Fehlermeldung:
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
Ich habe versucht, mit einem anderen port # wie 4719 für rmiregistry, aber ich die gleiche Fehlermeldung erhalten. Ich stellte sicher, dass meine firewall war deaktiviert, aber das problem weiterhin besteht. Ich stellte sicher, dass der port nicht bereits verwendet wird. Ich hoffe wirklich, dass mir jemand helfen kann.
Bild von meinem desktop mit Ordner des Projekts, eclipse-Fenster angezeigt und cmd öffnen:
http://s22.postimg.org/uq00qzslr/picyture.png
Code:
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;
}
Beispiel:
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();
}
}
Politik:
grant {
permission java.security.AllPermission;
};
InformationsquelleAutor user2644819 | 2013-10-26
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Genau dort zu stoppen. Dies ist schon falsch. 'rmiregistry ist eine ausführbare Datei, nicht der name einer Java-Klasse, Sie können ausführen mit "java" oder "javaw'. Nur 'rmiregistry'.
Dieser Fehler tritt auf, wenn kein Dienst auf dem port, die Sie versuchen, zu verbinden. Wie gesagt von EJP,
rmiregistry
ist ein tool, mit dem kann gestartet werden, indemrmiregistry &
im hintergrund (JDK 7). Ich würde Ihnen empfehlen, dass Sie überprüfen Sie Ihre firewall oder ein Problem mit dem port.