RMI - argument type mismatch

VoBu86

Mitglied
Hey,

hoffe ihr könnt mir helfen. Und zwar bin ich gerade dabei ein Flughafen-Informations-System zu basteln und hänge an einer Login-Funktion für die Clients. Für mich sieht es so aus als ob der Client über die Methode erst gar nicht auf den Server zugreifen kann. Ich hab versucht den Methodenrumpf in der Klasse RMIServerImpl auszukommentieren sprich es sah dann so aus: methodenname(parameter){/*....*/} und er hat mir trotzdem eine Fehler ausgespuckt.

Hier der Fehler:

Exception in thread "Thread-1" java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$254(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$1/482761588.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source)
at com.sun.proxy.$Proxy1.login(Unknown Source)
at RMIClientImpl.run(RMIClientImpl.java:90)
at java.lang.Thread.run(Unknown Source)

RMIClient
Java:
 public class RMIClient {
	
	public static void main(String[] args)
	{
	try
	{
		Thread t = new Thread (new RMIClientImpl ());
		t.start();
		t.join();
		System.exit(0);
	}
	catch(Exception e)
	{
		System.out.println(e.getMessage());
	}
	}
}

RMIClientImpl
Java:
import java.rmi.*;
import java.rmi.UnknownHostException;
import java.rmi.server.UnicastRemoteObject;
import java.util.*;
import java.net.*;
import java.text.*;

import MyExceptions.idNotExistingException;
import MyExceptions.noFlightMatchesException;
import MyExceptions.notEnoughSeatsException;


public class RMIClientImpl extends UnicastRemoteObject implements RMIClientInterface, Runnable {
	private static final String HOST = "localhost";
	private static String BIND_NAME = "RMI-Server";
	private static int id = 123456789;
	private String monitoringTime;
	
	public RMIClientImpl() throws RemoteException
	{
	}

	public void sendStatus(String status) throws RemoteException
	{
		System.out.println(status);
	}
	
	public int getId()
	{
		return id;
	}
	
	
	
	public void run()
	{
		try
		{
			String bindURL = "rmi://" + HOST + "/" + BIND_NAME;
			RMIServer server = (RMIServer) Naming.lookup (bindURL);
			System.out.println ("Remote-Referenz erfolgreich erhalten.");
			System.out.println("Server ist gebunden an: " +bindURL);
			
			while(true){
				System.out.println(server.options());
				int i = IO.promptAndReadInt("");
				switch(i)
				{
				
					case 1:
						try{
							int id = IO.promptAndReadInt("Please enter the identifier of th flight for your reservation: ");
							int s = IO.promptAndReadInt("Please enter the amount on seats you would like to reservate: ");
							System.out.println(server.reservateSeats(id, s));
							}
						catch(idNotExistingException e){
							System.out.println(e.getMessage());
							}
						catch(notEnoughSeatsException e){
							System.out.println(e.getMessage());
							}
						break;
				
					case 2:
						try{
							String source = IO.promptAndReadString("Bitte geben Sie ihren gewünschten Abflugsort ein: ");
							String destination = IO.promptAndReadString("Bitte geben Sie ihren gewünschten Zielort ein: ");
							System.out.print(server.searchId(source, destination));
							}
						catch(noFlightMatchesException e){
							System.out.println(e.getMessage());
							}
						break;
					
					case 3:
						try{
							int search = IO.promptAndReadInt("Please enter the identifier of th flight for your reservation: ");
							System.out.println(server.seachInformation(search));
							}
						catch(idNotExistingException e){
							System.out.println(e.getMessage());
							}
						break;
						
					case 4:
						try{
							int idFlight = IO.promptAndReadInt("Please enter the ID-number of the flight you would like to monitor: ");
							String time = IO.promptAndReadString("How long do you want to monitor the flight?");
							server.login(this, idFlight, time);
							}
						catch(idNotExistingException e){
							System.out.println(e.getMessage());
							}
							
					default:
						System.out.println("Invalid number, please re-choose your option!\n\n");
						break;
				}
			}
		}
		
		catch(NotBoundException e){
			System.out.println("Server ist nicht gebunden:\n"+e.getMessage());
		}
		catch(MalformedURLException e){
			System.out.println("URL ungültig:\n" +e.getMessage());
		}
		catch(RemoteException e){
			System.out.println("Fehler während Kommunikation;\n" +e.getMessage());
		}
	}

	public void setMonitoringTime(String monitoringTime) throws RemoteException {
	this.monitoringTime = monitoringTime;
	}


	public String getMonitoringTime() throws RemoteException {
		return monitoringTime;
	}
}

RMIServer
Java:
import java.rmi.Remote;
import java.rmi.RemoteException;
import MyExceptions.*;
import java.net.*;

public interface RMIServer extends Remote {
	
	String options() throws RemoteException;
	String reservateSeats(int id, int s) throws RemoteException, idNotExistingException, notEnoughSeatsException;
	String searchId(String source, String destination) throws noFlightMatchesException, RemoteException;
	String seachInformation(int id) throws RemoteException, idNotExistingException;
	void login(RMIClientImpl client, int idFlight, String time) throws RemoteException, idNotExistingException;
}

RMIServerImpl
Java:
import java.rmi.*;
import java.rmi.server.*;
import java.util.ArrayList;
import java.util.Vector;
import java.net.*;

import MyExceptions.*;




public class RMIServerImpl extends UnicastRemoteObject implements RMIServer {
	
	private static final String HOST = "localhost";
	private static final String SERVICE_NAME = "RMI-Server";
	private static ArrayList<Flights> flights = new ArrayList<Flights>();
	private static addMinutes monitoringTime;
	
	public RMIServerImpl() throws RemoteException
	{
		String bindURL = null;
		try
		{
			bindURL= "rmi://" + HOST + "/" + SERVICE_NAME;
			Naming.rebind(bindURL, this);
			System.out.println("RMI-Server gebunden unter Namen: " + SERVICE_NAME);
			System.out.println("RMI-Server ist bereit...");
			instanceFlights();
		}
		catch(MalformedURLException e)
		{
			System.out.println("Ungültige URL: " + bindURL);
			System.out.println(e.getMessage());
			System.exit(1);
		}
	}
	
	public static void main (String[] args)
	{
		try
		{
			new RMIServerImpl();
		}
		catch(RemoteException e)
		{
			System.out.println ("Fehler während er Erzeugung des Server-Objekts");
			System.out.println(e.getMessage());
			System.exit(1);
		}
	}
	
	public String options () throws RemoteException
	{
		String option = "";
		option += ("Options" + "\n");
		option += ("1. Reservation of Seats" + "\n");
		option += ("2. Search ID-number" + "\n");
		option += ("3. Search Flight Information" + "\n");
		return option;
	}

	public String searchId(String source, String destination) throws RemoteException, noFlightMatchesException{
		   String flightIds = "";
		   ArrayList<Flights> result = new ArrayList<Flights>();
		   try
		   {
			   for (int i = 0; i<flights.size();i++)
			{
				if(flights.get(i).getSource().equalsIgnoreCase(source)&&flights.get(i).getDestination().equalsIgnoreCase(destination))
				{
					result.add(flights.get(i));
				}
		   	}
			if (result.isEmpty())
			{
				noFlightMatchesException ex = new noFlightMatchesException();
				throw ex;
			}
		    for(Flights flights : result) 
		    {
		       flightIds += (flights.getIdentifier() + ", ");
		    }
		   return ("The Flights with the ID: " + flightIds + " are flying your route\n\n");
		   }
		   finally
		   {}
	}
	
	public String reservateSeats(int id, int s) throws RemoteException, idNotExistingException, notEnoughSeatsException
	{
		int j = 0;
		for (int i = 0; i<flights.size();i++)
		{
			if(flights.get(i).getIdentifier()==id)
			{
				flights.get(i).reservateSeats(s);
				flights.get(i).sendStatus(id);
				j++;
			}
	   	}
		if(j==0)
		{
			idNotExistingException e = new idNotExistingException();
			throw e;
		}
		return "Your reservation has been successful";
	}
	
	public void instanceFlights ()
	{
		flights.add(new Flights ("Stuttgart", "Nuernberg", "12:00", 150, 300));
		flights.add(new Flights ("Stuttgart", "Rom", "12:00", 300, 400));
		flights.add(new Flights ("Stuttgart", "Berlin", "12:00", 250, 200));
		flights.add(new Flights ("Stuttgart", "Singapore", "12:00", 750, 300));
		flights.add(new Flights ("Stuttgart", "New York", "12:00", 450, 400));
		flights.add(new Flights ("Capetown", "Nuernberg", "12:00", 950, 200));
		flights.add(new Flights ("Stuttgart", "Nuernberg", "12:00", 1150, 150));
		flights.add(new Flights ("Brisbane", "Cairns", "12:00", 1502, 100));
		flights.add(new Flights ("Tokyo", "Paris", "12:00", 1507, 180));
		flights.add(new Flights ("San Francisco", "Shanghai", "12:00", 550, 130));
		flights.add(new Flights ("Stuttgart", "Nuernberg", "12:00", 350, 190));
	}

	public String seachInformation(int id) throws RemoteException, idNotExistingException {
			String result="";
			int j = 0;
			for (int i = 0; i<flights.size();i++)
			{
				if(flights.get(i).getIdentifier()==id)
				{
					result += "The departure time of the flight is: " + (flights.get(i).getDepartureTime())+"\n";
					result += "The airfare is: " + (flights.get(i).getAirfare())+"\n";
					result += "On the flight are still: " + (flights.get(i).getNumberSeats())+" seats avialable";
					j++;
				}
		   	}
			if(j==0)
			{
				idNotExistingException e = new idNotExistingException();
				throw e;
			}
			return result;
	}

	public void login(RMIClientImpl client, int idFlight, String time) throws RemoteException, idNotExistingException {
		{
		   for (int i = 0; i<flights.size();i++)
			{
				if(flights.get(i).getIdentifier()==(idFlight))
				{
					for(int j = 0; j<flights.get(i).getClients().size(); j++)
					{
						if(flights.get(i).getClients().get(j).getId()!=client.getId())
						{
							System.out.println("Test");
							flights.get(i).getClients().add(client);
							monitoringTime = new addMinutes(time);
							String finalTime = monitoringTime.getMonitoringTime();
							int index=(flights.get(i).getClients().size())-1;
							flights.get(i).getClients().get(index).setMonitoringTime(finalTime);
						}
					}
				}
			}
		 }
			
			
		
	}

}

Es dreht sich um die Methode server.login() im RMIClientImpl unter dem punkt case4.
Hoffe ihr könnt mir bei dem Problem weiterhelfen.
Ach ja die anderen Cases(1,2,3) funktionieren alle.
 
Zuletzt bearbeitet:

VoBu86

Mitglied
Ich konnte nun mein Problem identifizieren, jedoch hab ich noch keine Lösung gefunden. Und zwar wenn ich die Methode server.login(this, idFlight, time), im RMIClientImpl aufrufe, möchte ich im Parameter gerne das Objekt dieser Klasse mitgeben. Nun bin ich mir nicht mal sicher ob das geht oder nicht, vielleicht kann mir jemand weiterhelfen. Ich weiss aber mit 100% Sicherheit das meine Fehlermeldung aus diesem "this" entstammt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Operatoren The Operator * is undefined for the argument type(s) double, String Java Basics - Anfänger-Themen 4
L The operator && is undefined for the argument type(s) String, boolean Java Basics - Anfänger-Themen 8
Z actual and formal argument lists differ in length Java Basics - Anfänger-Themen 13
S ArrayList.add Falsches Argument? Java Basics - Anfänger-Themen 1
M Argument in Integer verwandeln und das Doppelte davon printen Java Basics - Anfänger-Themen 9
H Argument bei Methode .toArray() Java Basics - Anfänger-Themen 8
V Operatoren Java if-else argument Java Basics - Anfänger-Themen 4
A Double[] Array zahlen per Argument übergeben Java Basics - Anfänger-Themen 5
H Methoden null-Argument bei varargs Java Basics - Anfänger-Themen 6
M Hochkomma in Argument Java Basics - Anfänger-Themen 7
V Erste Schritte Return ohne Argument Java Basics - Anfänger-Themen 6
M Argument der Kommandozeile überprüfen Java Basics - Anfänger-Themen 4
C Begriffe Parameter und Argument Java Basics - Anfänger-Themen 4
danielita Dateiname als Argument Java Basics - Anfänger-Themen 3
nabla Threads mit Argument? Java Basics - Anfänger-Themen 2
I Fehlendes Argument in Main-Methode abfangen Java Basics - Anfänger-Themen 15
A Klassennahmen über Kommandenzeile-Argument mitteilen Java Basics - Anfänger-Themen 2
X übergebenes Argument als Ziel Java Basics - Anfänger-Themen 7
L Dieses Problem nagt an meiner Würde - Argument * Java Basics - Anfänger-Themen 4
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
I No EJB found with interface of type Java Basics - Anfänger-Themen 12
J Scanner cannot be resolved to a type Java Basics - Anfänger-Themen 3
Denix The public type Main must be defined in its own fileJava(16777541) Java Basics - Anfänger-Themen 13
M Umgang mit dem Type "Date" Java Basics - Anfänger-Themen 6
N Fehler "Cannot instantiate the type" Java Basics - Anfänger-Themen 3
nbergmann The type JOptionPane is not accessible. Java Basics - Anfänger-Themen 4
M Type Erasure in Java Java Basics - Anfänger-Themen 12
Vivien Hilfe bei Type Conversion Java Basics - Anfänger-Themen 3
Flo :3 Variablen Type dismatch: cannot convert from string to int Java Basics - Anfänger-Themen 9
P Jackson mapper.readValue mit generischem Type Java Basics - Anfänger-Themen 10
H Methode mit Array als Rückgabe This method must return a result of Type int[] Java Basics - Anfänger-Themen 2
D Klassen undefined for the type 'object' 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
F Type safety: A generic array of.. Fehler Java Basics - Anfänger-Themen 3
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
S Fehler: Editor does not contain a main type Java Basics - Anfänger-Themen 3
G Programm wird nicht ausgeführt: Editor does not contain a main type Java Basics - Anfänger-Themen 10
Syncopated Pandemonium Compiler-Fehler The constructor MP3File(File) refers to the missing type NoMPEGFramesException Java Basics - Anfänger-Themen 7
K VerketteteListen unexpected type Fehler Java Basics - Anfänger-Themen 2
B OOP Cannot instantiate the type AuDList<Integer> Java Basics - Anfänger-Themen 18
T Compiler-Fehler Null type safety (type annotations) Java Basics - Anfänger-Themen 5
B Methoden The method mirror(double[]) in the type Convolution is not applicable for the arguments (double) Java Basics - Anfänger-Themen 8
I Fehlermeldung: Java does not contain a main type Java Basics - Anfänger-Themen 1
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
S Selection does not contain a main type! Java Basics - Anfänger-Themen 5
R The method printf(String, Object[]) in the type printStrem in not applicable for the arguments ... Java Basics - Anfänger-Themen 3
M "illegal start of type" eindimensionales Schiffe versenken Java Basics - Anfänger-Themen 7
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
S Selection does not contain a main type Java Basics - Anfänger-Themen 12
H enum Type Java Basics - Anfänger-Themen 6
K Variablen RETURN in Case-Switch / This method must return a result of type Item Java Basics - Anfänger-Themen 4
P Variablen generic type variablen in object array Java Basics - Anfänger-Themen 1
P enum: cannot be resolved to a type Java Basics - Anfänger-Themen 2
I Erste Schritte Eclipse - Does not contain a main type Java Basics - Anfänger-Themen 8
W Enum Konstruktor Type Java Basics - Anfänger-Themen 2
C MIME-Type null Java Basics - Anfänger-Themen 4
G default class type Java Basics - Anfänger-Themen 3
J Type inference Java Basics - Anfänger-Themen 26
C Warning: Type safety: Potential heap pollution via varargs parameter array Java Basics - Anfänger-Themen 5
Joew0815 Compiler-Fehler Unexpected Type - Problem mit Variablen rechnen Java Basics - Anfänger-Themen 7
T selection method does not contain a main type Java Basics - Anfänger-Themen 7
O unexpected type - weiß nicht weiter! Java Basics - Anfänger-Themen 3
M Datentypen problem!! Unexpected type in bleuj Java Basics - Anfänger-Themen 2
P Compiler-Fehler unexpected type - Stehe auf dem Schlauch Java Basics - Anfänger-Themen 3
M This method must return a result of type int Java Basics - Anfänger-Themen 13
T Unhandled exception type Java Basics - Anfänger-Themen 2
J unexpected type variable/value Java Basics - Anfänger-Themen 2
M Collections mit >2 type Parametern? Java Basics - Anfänger-Themen 8
D Compiler-Fehler void is an invalid type for the variable Java Basics - Anfänger-Themen 5
H LocationReferenceImpl cannot be resolved to a type Java Basics - Anfänger-Themen 5
K unexpected type variable/value Java Basics - Anfänger-Themen 7
M Fehlermeldung: the method.... ist undefined for the type object Java Basics - Anfänger-Themen 6
K Erste Schritte selection does not contain a main type Java Basics - Anfänger-Themen 3
M Objekt Cannot instantiate the type ... Java Basics - Anfänger-Themen 10
S this method must return a result of type double Java Basics - Anfänger-Themen 2
L Type/Cast Problem Java Basics - Anfänger-Themen 6
A Variablen Type safety Warnung beseitigen Java Basics - Anfänger-Themen 3
X enum Fehlermeldung "The public type Day must be defined in its own file" Java Basics - Anfänger-Themen 8
B Editor does not contain a main type Java Basics - Anfänger-Themen 3
E Datentypen type cast problem (int, byte,) Java Basics - Anfänger-Themen 5
L Illegal Start of Type, wie finde ich den fehler Java Basics - Anfänger-Themen 4
V Eclipse "Selection does not contain a main type" Java Basics - Anfänger-Themen 13
P BlueJ Fehlermeldung - Illegal Start of Type Java Basics - Anfänger-Themen 8
J Color cannot be resolved to a type Java Basics - Anfänger-Themen 4
B Undefined for the type... Java Basics - Anfänger-Themen 15
D Unhandled Exception type IOException in Constructor Java Basics - Anfänger-Themen 1
B Selection does not contain a main type Java Basics - Anfänger-Themen 2
A The method getYear() from the type Date is deprecated Java Basics - Anfänger-Themen 6
B Type von Class erhalten Java Basics - Anfänger-Themen 2
G incompatibel return type bei vererbung Java Basics - Anfänger-Themen 18
J String cannot be resolved to a type Java Basics - Anfänger-Themen 6
C Editor does not contain a main type Java Basics - Anfänger-Themen 7
J Type-Casting Java Basics - Anfänger-Themen 8
M 'void' type not allowed Java Basics - Anfänger-Themen 18
lumo lösen von: "Type safety"? Java Basics - Anfänger-Themen 4
B method intValue() is undefined for the type String (?) Java Basics - Anfänger-Themen 4
H wieso fehler ? must return a type of int. Java Basics - Anfänger-Themen 4
G Konvertierung String in long type Java Basics - Anfänger-Themen 15
G raw type Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben