Remote Method Invocation RMI - Problem

werdas34

Bekanntes Mitglied
Hallo,

zurseit haben wir das Thema RMI und nun haben wir eine Aufgabe bekommen. Ich habe die Aufgabe bearbeitet und würde mich freuen wenn jemand von euch Zeit findet da drüber zu schauen. Habe das Gefühl das ich am Prinzip vorbei gearbeitet habe aber dazu gleich mehr.

Also zur Aufgabe:
Es gibt Kunde, Konto und Bank. Kunden können mehrere Konten verwalten bei mehreren Banken.

Kunde kann bei einer Bank (Interface)
Konto erstellen(mit Name, Passwort und Kontostand => anfangs 0 und ein Key für die Bank)
einzahlen mit EIngabe des Namens und Key
abheben mit Eingabe des Namens, Passwort, Menge und Key
Kontostand angeben lassen durch Eingabe von Name, Passwort und Key

Dazu sollen benutzerdefinierte Exception geworfen werden.

Falls weitere Details gebraucht werden liefere ich sie, aber erstmal gehts darum ob ich das Prinzip RMI richtig umgesetzt habe.

Meine Bedenken
- UserFunctionImpl hat die Funktionen aus dem Kunden Inteface implementiert. Damit ich in die Konten-Objekte ein und auszahlen kann habe ich eine setKonto() Methode geschrieben, damit ich das Konto-Objekt in die "Klasse" UserFunctionImpl setzen kann. Ist unschön, und auch so ein Ding wobei ich mir denke, da habe ich was falsch gemacht.

- Laut Aufgabenstellung soll der Kunde den Key, Name und Passwort eingeben, um halt Aktionen am Konto auszuführen. Da ich mehrere Banken habe weiß ich nicht wie der Kunde einfach nen Key eingeben soll ohne zu wissen zur welcher Bank dieser Key gehört.
userF.payIn(key, name, pw, amount){
KontoInter k = bank1.getKonto(key); //bei mehreren Banken nicht klar welches Konto gemeint ist
..... }
Ich hätte halt das auseinandergezogen. Nach dem Motto der Kunde geht zuerst zur Bank und gibt da dann den Key ein.
KontoInter k = bank.getKonto(key)
userF.setKonto(k) // Bedenken #1 - siehe oben
userF.payIN() ....

Ich hoffe es ist klar was ich meine.

Nun der gesamte Code:
Java:
import java.util.HashMap;
import java.util.Map;

public class Bank {
    private Map<Integer, KontoInter> map;

    public Bank() {
        this.map = new HashMap<Integer, KontoInter>();
    }

    public void addKonto(int key, KontoInter konto) {
        this.map.put(key, konto);
    }

    public KontoInter getKonto(int key) {
        return this.map.get(key);
    }
}


//Schnittstellendefinition:Datenstruktur -> Complex
import java.io.*;
import java.util.List;

public class KontoInter implements Serializable {
    public static final long serialVersionUID = 1L;
    public double cash;
    public String owner;
    public String password;

    public KontoInter(String owner, String password) {
        this.cash = 0.0;
        this.owner = owner;
        this.password = password;
    }

    public double getCash() {
        return cash;
    }

    public String getOwner() {
        return owner;
    }

    public String getPassword() {
        return password;
    }

    public void setCash(double cash) {
        this.cash = cash;
    }

}


//Schnittstellendefinition:Exception -> ComplexException
import java.rmi.*;

public class FinanceException extends Exception {

    public FinanceException(String msg) {
        super(msg);
    }
}


//Schnittstellendefinition: Anwendungsmethode -> ComplexAdder
import java.rmi.*;

public interface UserFunction extends Remote {
    KontoInter createKonto(String name, String password) throws RemoteException, FinanceException;

    public void setKonto(KontoInter konto) throws RemoteException, FinanceException;

    void payIn(String name, double amount) throws RemoteException, FinanceException;

    void takeOff(String name, String password, double amount) throws RemoteException, FinanceException;

    KontoInter showKonto(String name, String password) throws RemoteException, FinanceException;

}


// Schnittstellenimplementierung -> ComplexAdderImpl
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.*;

public class UserFunctionImpl extends UnicastRemoteObject implements UserFunction {
    private static final long serialVersionUID = 1L;
    private KontoInter konto;

    public UserFunctionImpl(String name, Registry reg) throws RemoteException {
        try {
            reg.rebind(name, this);
        } catch (Exception e) {
            System.out.println("Exception: " + e.getMessage());
        }
    }

    public void setKonto(KontoInter konto) {
        this.konto = konto;
    }

    public synchronized KontoInter createKonto(String name, String password) throws RemoteException, FinanceException {
        return new KontoInter(name, password);
    }

    public synchronized void payIn(String name, double amount) throws RemoteException, FinanceException {
        if (!name.equals(konto.getOwner())) {
            throw new FinanceException("Wrong name");
        }
        double newCash = konto.getCash() + amount;
        konto.setCash(newCash);
    }

    public synchronized void takeOff(String name, String password, double amount)
            throws RemoteException, FinanceException {
        if (!name.equals(konto.getOwner()) || !password.equals(konto.getPassword())) {
            throw new FinanceException("Wrong log in data");
        }
        double newCash = konto.getCash() - amount;
        if (newCash < 0) {
            throw new FinanceException("Not enough money");
        }
        konto.setCash(newCash);
    }

    public synchronized KontoInter showKonto(String name, String password) throws RemoteException, FinanceException {
        if (!name.equals(konto.getOwner()) || !password.equals(konto.getPassword())) {
            throw new FinanceException("Wrong log in data");
        }
        return konto;
    }

}


import java.rmi.*;
import java.rmi.registry.*;

public class Server {
    public static void main(String args[]) {
        try {
            Registry reg = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
            UserFunctionImpl user = new UserFunctionImpl("UserFunctionImpl", reg);
            System.out.println("Server ready...");
        } catch (Exception e) {
            System.out.println("Exception:" + e.getMessage());
        }
    }
}

import java.rmi.*;
import java.rmi.registry.*;

public class Client {
    public static void main(String args[]) {
        try {
            Registry reg = LocateRegistry.getRegistry(Registry.REGISTRY_PORT);
            UserFunction userF = (UserFunction) reg.lookup("UserFunctionImpl");

            Bank bank1 = new Bank();
            Bank bank2 = new Bank();
            KontoInter k1 = userF.createKonto("Hans", "1234");
            KontoInter k2 = userF.createKonto("Peter", "5678");
            KontoInter k3 = userF.createKonto("Jana", "9876");
            bank1.addKonto(1, k1);
            bank1.addKonto(2, k2);
            bank2.addKonto(3, k3);

            userF.setKonto(k1);
            userF.payIn("1Hans", 150.3);
            System.out.println(userF.showKonto("Hans", "1234").getCash());
            System.out.println("Test");

        } catch (Exception e) {
            System.out.println("Exception: " + e.getMessage());
        }
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
nonickatall Ausführbarkeit von Code testen bzw. Remote Debugging Java Basics - Anfänger-Themen 4
S Java Programm auf remote pc steuern Java Basics - Anfänger-Themen 2
G Funktion "Remote Java Application" in Eclipse Java Basics - Anfänger-Themen 2
orkano Text einer remote-HTML Seite auslesen Java Basics - Anfänger-Themen 3
T Umgehen eines remote mySQL-Zugriffes? Java Basics - Anfänger-Themen 14
R finaler Wert in outerMethod von method in InnerMethodClass Java Basics - Anfänger-Themen 2
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
P myClass?.method() in Java Java Basics - Anfänger-Themen 4
T setFill method Java Basics - Anfänger-Themen 3
H Methode mit Array als Rückgabe This method must return a result of Type int[] Java Basics - Anfänger-Themen 2
N The method setSaldo(double) in the type Konto is not applicable for the arguments (int, int) Java Basics - Anfänger-Themen 2
A startsWith method und substring Java Basics - Anfänger-Themen 2
I Java Generics factory method Java Basics - Anfänger-Themen 2
V the static method should be accessed is a static way Java Basics - Anfänger-Themen 6
N Erste Schritte "non-static method" oder "XYZ can not be resolved" Java Basics - Anfänger-Themen 21
K Eigene Annotations, Pre-/Post-/Call-Method Java Basics - Anfänger-Themen 6
B Threads Thread sleep() Method einfache Frage Java Basics - Anfänger-Themen 8
G Was als main Method Java Basics - Anfänger-Themen 6
M Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 10
E Array to String Method Reverse Java Basics - Anfänger-Themen 5
D Methoden undefined method Java Basics - Anfänger-Themen 13
S Method mit Eingabe abrufen Java Basics - Anfänger-Themen 1
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
U Method References Java Basics - Anfänger-Themen 1
UnityFriday method getPrevious in class List<ContentType> cannot be applied to given types Java Basics - Anfänger-Themen 29
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6
B Methoden The method mirror(double[]) in the type Convolution is not applicable for the arguments (double) Java Basics - Anfänger-Themen 8
J easy remove method Java Basics - Anfänger-Themen 1
M abstract method does not override or implement.... Java Basics - Anfänger-Themen 7
R The method printf(String, Object[]) in the type printStrem in not applicable for the arguments ... Java Basics - Anfänger-Themen 3
M Deklaration und Initialisierung bei Method Erstellung Java Basics - Anfänger-Themen 12
K Variablen RETURN in Case-Switch / This method must return a result of type Item Java Basics - Anfänger-Themen 4
W Compiler-Fehler "non-static method cannot be referenced"-Problem Java Basics - Anfänger-Themen 6
K String equalIgnoreCase() Method Java Basics - Anfänger-Themen 19
E non-static method und static context Java Basics - Anfänger-Themen 15
L Command Prompt / Main Method / String Java Basics - Anfänger-Themen 9
M Methoden "Non-static method xy cannot be referenced from a static context" Java Basics - Anfänger-Themen 20
T selection method does not contain a main type Java Basics - Anfänger-Themen 7
U UML Factory Method Java Basics - Anfänger-Themen 4
R Compiler-Fehler Cannot find symbol (Method printIn) Java Basics - Anfänger-Themen 3
H non-static method cannot be referenced from a static context Java Basics - Anfänger-Themen 2
L Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 6
B Object "Method" in TreeSet, Fehler beim Vergleichen/Comparable Java Basics - Anfänger-Themen 9
M Problem mit Static Method Java Basics - Anfänger-Themen 8
W Main-method in Object-classes Java Basics - Anfänger-Themen 5
J Compiler findet method nicht Java Basics - Anfänger-Themen 12
M This method must return a result of type int Java Basics - Anfänger-Themen 13
M Fehlermeldung: the method.... ist undefined for the type object Java Basics - Anfänger-Themen 6
S this method must return a result of type double Java Basics - Anfänger-Themen 2
G Collections.binarySearch(LinkedList): cannot find method Java Basics - Anfänger-Themen 6
Y Theorie: Abstract Method Java Basics - Anfänger-Themen 6
C Methoden numberField.getDouble no such method error Java Basics - Anfänger-Themen 4
F Mal wieder: Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 9
F Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 3
Q non-static method blub cannot be referenced from a static context Java Basics - Anfänger-Themen 6
E Netbeans, "class does not have a main method" Java Basics - Anfänger-Themen 8
L no such method error: main() Java Basics - Anfänger-Themen 2
O Abstract Method & Generics Java Basics - Anfänger-Themen 10
N public class -> public method -> variable private? Java Basics - Anfänger-Themen 10
R Could not find main method Java Basics - Anfänger-Themen 3
U Boolean istGleich() Method Java Basics - Anfänger-Themen 15
Luk10 method () not found Java Basics - Anfänger-Themen 9
A OOP Fehler non-static method can not be[...] Java Basics - Anfänger-Themen 2
N Reference to non-static method Java Basics - Anfänger-Themen 8
G non static method scale(int,int) cannot be referenced from a static context Java Basics - Anfänger-Themen 16
A The method getYear() from the type Date is deprecated Java Basics - Anfänger-Themen 6
A cannot find symbol - symbol : method Java Basics - Anfänger-Themen 5
S The method readInt() Problem Java Basics - Anfänger-Themen 5
E method undefined - wo ist der Fehler? Java Basics - Anfänger-Themen 5
J non static method cannot be referenced from static context Java Basics - Anfänger-Themen 7
L cannot find symbol-method Java Basics - Anfänger-Themen 3
D kleine Passwortabfrage erstellen incl. Method zum verändern Java Basics - Anfänger-Themen 7
S Mein Quicksort Problem: he method quickSort(int[], int, int) Java Basics - Anfänger-Themen 2
M Invalid Method Java Basics - Anfänger-Themen 7
F does not overwride abstract method Java Basics - Anfänger-Themen 2
C Fehler: non-static method Java Basics - Anfänger-Themen 5
B method intValue() is undefined for the type String (?) Java Basics - Anfänger-Themen 4
R Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 5
G String zu Method Java Basics - Anfänger-Themen 11
B cannot find symbol method equalsIgnoreCase? Java Basics - Anfänger-Themen 23
T Does not have a main method ? GGT. Java Basics - Anfänger-Themen 4
N invalid method declaration; return type required Java Basics - Anfänger-Themen 4
T this method.is not visible Java Basics - Anfänger-Themen 3
C overridden method does not throw java.io.IOException Java Basics - Anfänger-Themen 4
R non-static method execute Java Basics - Anfänger-Themen 3
J Morgen Java-Klausur. Stack, Heap, Method-Area Java Basics - Anfänger-Themen 2
V Non Static Method. Java Basics - Anfänger-Themen 2
S Method undefinded for "Klasse" Java Basics - Anfänger-Themen 4
R Eclipse: This method must return a result of type double. Java Basics - Anfänger-Themen 2
M Fehlermeldung (The method contains(String) is. Java Basics - Anfänger-Themen 3
M Fehlermeldung (the method add(OE) in the type Abteilung.) Java Basics - Anfänger-Themen 2
N ActionListener versch. Buttons zuweisen => versch. Method Java Basics - Anfänger-Themen 13
T method <init> not found in class . Java Basics - Anfänger-Themen 4
G Problem (oder Verständnisporblem) bei einer static method Java Basics - Anfänger-Themen 9
frau-u Altes Problem: non-static method cannot be reference Java Basics - Anfänger-Themen 7
M Solaris - Method Split Fehler Java Basics - Anfänger-Themen 2
M method xxx() from the type xxx is deprecated Java Basics - Anfänger-Themen 3
A Method.invoke() mit geerbten Methoden Java Basics - Anfänger-Themen 2
A The method getClass() from the type saveLog is not static Java Basics - Anfänger-Themen 2
G Abstract Class - Abstract Method Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben