RMI NULL-Pointer-Exeception wenn der RMI-Proxy eine Methode deligiert

eclipseworker

Bekanntes Mitglied
Wenn ich die compute-Method über den Client aufrufe, endet der mit einer NULL-Pointer exception, die für mich total unerklärlich ist, weil ich in einer einfachern Version wo der Server die Funktion selbst bereitstellt alles gut funktioniert. Der andere Service funktioniert auch gut.
Mein Code:
Java:
import java.rmi.AlreadyBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

public class ProxyComputeServer extends GeneralProxy implements  ComputeService{
   
   private Server backgroundServer;
   

   public ProxyComputeServer(Server backgroundServer) throws RemoteException, AlreadyBoundException {
       super(backgroundServer, Server.computeServiceName, "Computeproxy");
        Registry registry = LocateRegistry.getRegistry();
        ComputeService computeSort = (ComputeService) UnicastRemoteObject.exportObject(this, 0);
         registry.bind(Server.computeServiceName, computeSort);
   }
   
   /**
    * The boolean rightToCompute should simulate a right checking system.
    * @param inputString
    * @param rightToSort
    * @return
    * @throws RemoteException
    */
   @Override
   public String compute(int intputTime, boolean rightToCompute) throws RemoteException {
       if(rightToCompute) return backgroundServer.compute(intputTime);
       return "Sorry, you don't have the right to compute something.";
   }

}
ProxyServer
Java:
import java.io.Closeable;
import java.io.IOException;
import java.rmi.Remote;

public abstract class GeneralProxy implements Closeable, Remote{
    protected Server backgroundServer;
    private String serviceName;
    private String proxyName;
   

    public GeneralProxy(Server backgroundServer, String serviceName, String proxyName) {
        this.backgroundServer=backgroundServer;
        this.serviceName=serviceName;
        this.proxyName=proxyName;
    }
   
    @Override
    public void close() throws IOException {
        backgroundServer.quitProxy(proxyName, serviceName, this);
       
    }

}
GeneralProxy
Java:
/**
* A two instant server with 2 Services.
*/


import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.NotBoundException;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.Arrays;
import java.util.Scanner;

public class Server {
    private int name;

    public Server(int name) {this.name=name;}
    public static String sortServiceName="strsort";
    public static String computeServiceName="compute";
   
   public void quitProxy(String name, String serviceName, Remote closer) throws RemoteException{
          System.out.println("quit");
        Registry registry = LocateRegistry.getRegistry();
        try {
          UnicastRemoteObject.unexportObject(closer, false);
          System.out.println("Unbind "+serviceName+".");
            registry.unbind(serviceName);
        } catch (NotBoundException e) {
          throw new RemoteException("Could not unregister service, quiting anyway", e);
        }

        new Thread() {
          @Override
          public void run() {
            System.out.println("Shutting down Server "+name+" ...");
            try {
              sleep(2000);
            } catch (InterruptedException e) {
              // I don't care
            }
            System.out.println("done (Server "+name+" closed)");
            System.exit(0);
          }

        }.start();
    }

    public static void main(String args[]) {

        try {
            Server bigServer = new Server(1);
            LocateRegistry.createRegistry(1099);
            ProxyComputeServer computeProxy=new ProxyComputeServer(bigServer);
            ProxySortServer sortProxy=new ProxySortServer(bigServer);
            System.out.println("Server ready");
            try (Scanner sc = new Scanner(System.in);){
                if(sc.nextLine().equals("shutdown")){
                    computeProxy.close();
                    sortProxy.close();
                }
            }
        } catch (Exception e) {
            System.err.println("Server exception: " + e.toString());
            e.printStackTrace();
        }
    }


    public String compute(int inputTime) {
        try {
            Thread.sleep(inputTime*1000);
        } catch (InterruptedException e) {
            return "Server "+name+": The computation couldn't be completed.";
        }
        return "Server "+name+": You have waited "+inputTime+" seconds.";
       
    }


    public String sort(String inputString) {
        char[] chars = inputString.toCharArray();
        Arrays.sort(chars);
        return  "Server "+name+": "+(new String(chars));
    }
}
Server
Java:
/**
* This client lets the user compute Staff.
*/

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.Scanner;
import java.util.concurrent.ThreadLocalRandom;


public class ComputeClient {

    private ComputeClient() {}

    public static void main(String[] args) {
        String host = args[0];
        System.setProperty("java.rmi.server.hostname",host);
        try {
            Registry registry = LocateRegistry.getRegistry(host);
            ComputeService stubcompute = (ComputeService) registry.lookup("compute");
            boolean noUserInput=true;
            try (Scanner sc = new Scanner(System.in);){
                noUserInput=false;
               
                    System.out.println("How long should the calculation take?");
                    int i=sc.nextInt();
                    String s=stubcompute.compute(7, true);
                    System.out.println(s);
            }
            if(noUserInput){
                System.out.println("Something went wrong with the input. Enjoy this computation.");
                System.out.println(stubcompute.compute(ThreadLocalRandom.current().nextInt(1, 21), true));
               
            }
        } catch (Exception e) {
            System.err.println("Client exception: " + e.toString());
            e.printStackTrace();
        }
    }
}
ComputeClient
Java:
import java.rmi.Remote;
import java.rmi.RemoteException;

public interface ComputeService extends Remote{
    String compute(int inputTime, boolean rightToCompute) throws RemoteException;
}
ComputeService
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T JasperReports mit Null Pointer Allgemeine Java-Themen 3
S Null Pointer Exception bei BufferedReader Allgemeine Java-Themen 4
E Queue: Wie kann hier ein null-Pointer Exception auftreten?! Allgemeine Java-Themen 11
L null pointer exception Allgemeine Java-Themen 10
J Null Pointer in der compare-Methode des Comparators? Allgemeine Java-Themen 18
knuckles12 null pointer exception bei arrays Allgemeine Java-Themen 6
B Null Pointer Exception bei Canvas-objekt-Aufruf Allgemeine Java-Themen 12
G Nicht abgefangene Null-Pointer-Exception Allgemeine Java-Themen 2
S Null Pointer Exception Allgemeine Java-Themen 10
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
Zrebna SonarLint: Warum kein Null-Referencing-CodeSmell-Hint hier? Allgemeine Java-Themen 23
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
8u3631984 Argument Captor liefert NULL zurück Allgemeine Java-Themen 2
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
J Zahlen Abstand zur Null bestimmen Allgemeine Java-Themen 11
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
S An internal error occurred during: Launching null argument Allgemeine Java-Themen 1
S Validation Null aber nicht Blank und muss Email sein Allgemeine Java-Themen 22
L Google Guice Field Injection returns null Allgemeine Java-Themen 2
J Java Objekte = null, Garbagecollector Allgemeine Java-Themen 12
N MsgPack - Null Check Allgemeine Java-Themen 5
DanielsLPecke Compiler-Fehler Warum ist der String null? Allgemeine Java-Themen 10
M Warten bis Variabel nicht null ist Allgemeine Java-Themen 18
Thallius Simple JSON Parser Error null Allgemeine Java-Themen 6
M Null byte in verschiedenen charsets Allgemeine Java-Themen 2
S Lambda Ausdrücke: @FunctionalInterface Instanzen auf null prüfen Allgemeine Java-Themen 9
B [Android] EditText-Object ist null - Nimmt nicht den Wert des enthaltenen Textfeldes ein Allgemeine Java-Themen 2
D Java Process OutputStream ist null Allgemeine Java-Themen 4
O log4j, Problem bei Ausgabe null-Wert Allgemeine Java-Themen 0
T InvalidClassException - Read null attempting to read class descriptor for object Allgemeine Java-Themen 8
D Problem mit führender Null bei Schlüsselerzeugung Allgemeine Java-Themen 5
T Variablenübergabe liefert immer null Allgemeine Java-Themen 13
K Image beim catchen ist immer null Allgemeine Java-Themen 9
B Load of Known null Value Allgemeine Java-Themen 9
W Kleine Frage zu Null-Pinter-Exception Allgemeine Java-Themen 21
T Array Sortieren (null Werte ans Ende) Allgemeine Java-Themen 2
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
Tobse Vererbung null aus Elternklasse "dominant"? Allgemeine Java-Themen 15
I newInstance() liefert null zurück Allgemeine Java-Themen 4
R Attribut null Allgemeine Java-Themen 6
C Regex: Zahl ohne führende Null Allgemeine Java-Themen 13
E rückgabewert ist immer null Allgemeine Java-Themen 2
N List auf null prüfen Allgemeine Java-Themen 2
TiME-SPLiNTER Von Unix, InputStreams und Null Bytes Allgemeine Java-Themen 2
R dateFormat - Uhr fängt nicht bei null an Allgemeine Java-Themen 2
P Null in ArrayList Allgemeine Java-Themen 3
N Strings mit null wiedergabe Splitten Allgemeine Java-Themen 4
mongole Formatter + null Allgemeine Java-Themen 4
X Prozess-Objekt nach Ausführung der destroy-Methode null oder nicht null ? Allgemeine Java-Themen 10
A Umgang mit null Allgemeine Java-Themen 16
L Object = null? Allgemeine Java-Themen 16
nrg Leere Objektreferenz mit != null vergleichen Allgemeine Java-Themen 4
T Set.contains() auch false wenn value == null? Allgemeine Java-Themen 4
D Matrix, ArrayList, null-Zellen Allgemeine Java-Themen 6
F Hibernate speichern - Null Allgemeine Java-Themen 5
T WeakHashMap: Wie "null" effizient abfangen? Allgemeine Java-Themen 5
N Null Durchblick in Java, Jobwechsel? Allgemeine Java-Themen 19
M nichtreferenzierte Objekte auf NULL setzen -> Performance Allgemeine Java-Themen 4
S JFreeChart LineChart Punkte über NULL Werte hinweg verbinden Allgemeine Java-Themen 5
N Array mit null Werten filtern Allgemeine Java-Themen 5
S Combobox --> liefer null? Allgemeine Java-Themen 3
A java.net.UnkownHostException: null bei jar-File Allgemeine Java-Themen 16
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
R if (obj == null || obj.isEmpty()) Allgemeine Java-Themen 21
P <null> in einer DB abfragen Allgemeine Java-Themen 4
P Image auf einem Panel mit null-Layout Allgemeine Java-Themen 8
M getResourceAsStream immer null Allgemeine Java-Themen 4
R Array komplett auf null setzen Allgemeine Java-Themen 10
A JasperReport Detail bringt null bei Datenübergabe Allgemeine Java-Themen 4
S instanceof und null Allgemeine Java-Themen 7
M Führende Null in einem Datum Allgemeine Java-Themen 3
L null != null ? Allgemeine Java-Themen 16
Redfrettchen Rückgabe nicht sinnvoll: Exception oder null zurück? Allgemeine Java-Themen 9
B Null- oder IllegalArgumentException Allgemeine Java-Themen 12
C ImageIO die read-Methode liefert mir ein null- Wert zurück Allgemeine Java-Themen 10
K Exception im Konstruktor / Objekt == null Allgemeine Java-Themen 7
Z bedeutung (übersetzung) von null? Allgemeine Java-Themen 5
T Exception im Constructor -> null-Referenz zurückgeben Allgemeine Java-Themen 6
C Objekte null setzen? Allgemeine Java-Themen 7
Curtis_MC Pointer mit ArrayList vergleichen Allgemeine Java-Themen 6
Survari Variablen Java Function Pointer Allgemeine Java-Themen 8
R Inputstream lesen mit Pointer Allgemeine Java-Themen 0
T C DLL einbinden und Pointer übergeben Allgemeine Java-Themen 13
D Pointer in Java Allgemeine Java-Themen 8
B List Pointer zurücksetzen Allgemeine Java-Themen 10
M JNA Pointer Allgemeine Java-Themen 2
G Pointer und Referenzen Allgemeine Java-Themen 3
F Pointer oder Reference? Allgemeine Java-Themen 8
T JNI: jcharArray: warning: cast to pointer from integer of. Allgemeine Java-Themen 5
O Pointer/reference on method Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben