Date & RMI Problem

Status
Nicht offen für weitere Antworten.

Niki

Top Contributor
Hallo Forum!

Ich habe folgendes Problem:

Wenn ich Date-Objekte am Client erzeuge (OS: WindowsXP) und mittels RMI übertrage (OS: Linux) bekomme ich unterschiedliche Ergebnisse.

Hier das Testprogramm:

Code:
package rmidatetest;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Session extends Remote {
	public String sendObject(Object o) throws RemoteException;
	
	public void stop() throws RemoteException;
	
	String SERVICE_NAME = "Session";
}

package rmidatetest;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class SessionImpl extends UnicastRemoteObject implements Session {
	
	public SessionImpl() throws RemoteException{
		
	}

	public String sendObject(Object o) throws RemoteException {		
		return o.toString();
	}
	
	public void stop() throws RemoteException {
		new Thread(new Runnable(){
			public void run(){
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {					
				}
				System.exit(0);
			}
		}).start();				
	}

}

package rmidatetest;

import java.io.Serializable;
import java.util.Date;

public class Person implements Serializable {

	private Date gebdat = null;
	
	public Person(Date gd) {
		
		this.gebdat = gd;
	}

	public Date getGebdat() {
		return gebdat;
	}

	public void setGebdat(Date gebdat) {
		this.gebdat = gebdat;
	}
	
	public String toString() {
		return gebdat.toString();
	}
}

package rmidatetest;

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Server {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		if(args.length != 1) {
			System.out.println("usage: java -cp [classpath] rmidatetest.Server [port]");
			return;	
		}
		
		Session s = new SessionImpl();
		Registry reg = null;
		

		int port = Integer.parseInt(args[0]);
		
		try {
			System.out.println("try to locate registry at port " + port);
			reg = LocateRegistry.getRegistry(port);
			reg.rebind(Session.SERVICE_NAME, s);			
		} catch (RemoteException e) {
			System.out.println("registry wasn't located, try to create registry at port " + port);
			reg = LocateRegistry.createRegistry(port);
			reg.rebind(Session.SERVICE_NAME, s);
		}
		
		System.out.println("server started");
		
		while(true){
			System.gc();
			Thread.sleep(10000);
		}
	}

}

package rmidatetest;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Client {

	private static final SimpleDateFormat FORMATTER = new SimpleDateFormat(
			"ddMMyyyy");

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		if (args.length < 2) {
			System.out
					.println("usage: java -cp [classpath] rmidatetest.Client [server] [port] <optional:stop>");
			return;
		}

		String host = args[0];
		int port = Integer.parseInt(args[1]);
		
		System.out.println("connecting to " + host + ":" + port);

		Registry reg = LocateRegistry.getRegistry(host, port);
		Session session = (Session) reg.lookup(Session.SERVICE_NAME);

		if (args.length == 3 && "stop".equals(args[2])) {
			session.stop();
			System.exit(0);
		}

		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String von = null;
		String bis = null;
		do {
			System.out.println("Datumsformat: ddMMyyyy");
			System.out.println("von:");			
			von = in.readLine();

			if ("quit".equalsIgnoreCase(von)
					|| "exit".equalsIgnoreCase(von))
				break;
			System.out.println("bis:");
			bis = in.readLine();
			if ("quit".equalsIgnoreCase(bis)
					|| "exit".equalsIgnoreCase(bis))
				break;
			
			Date d_von = FORMATTER.parse(von);
			Date d_bis = FORMATTER.parse(bis);
			
			while(d_von.before(d_bis)){
				Person p = new Person(d_von);	
				String vorher = p.toString();				
				String nachher = session.sendObject(p);				
				
				if(!vorher.equals(nachher))
					System.out.println(vorher + " " + nachher);
				
				Calendar cal = Calendar.getInstance();
				cal.setTime(d_von);
				cal.add(Calendar.DAY_OF_MONTH, 1);
				d_von = cal.getTime();
			}
		} while (true);
	}

}

Folgende Ergebnisse kommen z.B. zurück:

Thu Sep 29 00:00:00 CEST 1949 Wed Sep 28 23:00:00 CET 1949
Fri Sep 30 00:00:00 CEST 1949 Thu Sep 29 23:00:00 CET 1949
Sat Oct 01 00:00:00 CEST 1949 Fri Sep 30 23:00:00 CET 1949
Sun Oct 02 00:00:00 CEST 1949 Sat Oct 01 23:00:00 CET 1949

Das Problem tritt jedoch nur auf wenn ich den Server unter Linux laufen lasse (jdk 1.4.2_08)

Ich bin für jeden Tipp dankbar!
 
G

Guest

Gast
Code:
private static final SimpleDateFormat FORMATTER = new SimpleDateFormat("ddMMyyyy", Locale.GERMANY);
...
Calendar cal = Calendar.getInstance(Locale.GERMANY);
 

kleiner_held

Top Contributor
Deine Ausgabe enthalten jeweils unterschiedliche Zeitzonen. CET und CEST, das erste ist ohne Sommerzeit, das zweite mit, deswegen die eine Stunde Unterschied.
 

Niki

Top Contributor
Wie kleiner_held geschrieben hat lag das Problem an den Zeitzonen. Am Server war Europe/Vienna und am Client Europe/Berlin eingetragen. Ändert man das Property user.timezone am Client gibt es auch keine Probleme mehr.

Danke für die Hilfestellung!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Datentypen Problem mit Date-Object Allgemeine Java-Themen 2
F Problem mit TimeStamp to Date Allgemeine Java-Themen 8
missy72 Methoden Calendar/Date Countdown Allgemeine Java-Themen 9
J Simple Date Format Alternativen bitte um Code Allgemeine Java-Themen 14
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
S Seltsames Ergebnis mit Date-Klasse Allgemeine Java-Themen 6
MiMa Date aus einer ArrayList<Date> holen ?? Allgemeine Java-Themen 5
M JDBC DATE 0000-00-00 kann nicht ausgegeben werden Allgemeine Java-Themen 3
L Erste Schritte Java Date Format Pattern bestimmten Allgemeine Java-Themen 2
Blender3D AWT Fehlerhafte Zeit bei Calender und Date DateFormat Allgemeine Java-Themen 8
P Date und Time in Java Allgemeine Java-Themen 7
B Swing Date Spinner Allgemeine Java-Themen 2
Grejak Date und SimpleDateFormat Allgemeine Java-Themen 6
D Timestamp to Date, ergibt falsches ergebnis Allgemeine Java-Themen 5
M massenhaft verschiedene Date-Pattern Allgemeine Java-Themen 3
N SimpleDateFormat: Unparseable date Allgemeine Java-Themen 5
Madlip Erste Schritte Probleme mit Date() Allgemeine Java-Themen 6
T String in Date parsen (*ohne* bekanntes Format) Allgemeine Java-Themen 8
N java.util.Date - Zeit auf 00:00 setzen Allgemeine Java-Themen 3
GianaSisters Klassen Unterschiedliche Zeiten bei DATE Allgemeine Java-Themen 6
Z new Date() liefert falsche Uhrzeit Allgemeine Java-Themen 12
G Calendar/Date arithmetic Allgemeine Java-Themen 3
B Unix-Timestamp > Date macht Probleme. Allgemeine Java-Themen 3
M Object-Instanz in Date übersetzen Allgemeine Java-Themen 6
E Seltsamer aufruf von java.util.Date.toString() Allgemeine Java-Themen 3
hdi JTable: Sortierung von Date-Objekten Allgemeine Java-Themen 4
Joy String in Date umwandeln Allgemeine Java-Themen 2
K String zu Date kovertieren Allgemeine Java-Themen 3
S Zeitserver Abfragen und in Date speichern Allgemeine Java-Themen 5
0 Datum in Java Date umwandeln Allgemeine Java-Themen 4
C Datum erstellen für SQL Format Date Allgemeine Java-Themen 3
R Moeglichst viele Datumsstrings in Date Objekte konvertieren? Allgemeine Java-Themen 3
B Date Addition Allgemeine Java-Themen 2
H2SO3- Date "18.11.2002 20:02:33" trotz Locale.GERMAN nic Allgemeine Java-Themen 9
H2SO3- Exception beim date parsen des Jahres 00 Allgemeine Java-Themen 6
H2SO3- merken versch. Date Typen + erlaubte und unerlaubte kombinat Allgemeine Java-Themen 4
H2SO3- date mit pm and am parsen Allgemeine Java-Themen 3
G double in Date Allgemeine Java-Themen 5
S Date Objekt von voller Stunde Allgemeine Java-Themen 3
M Date objekt als 00.00.0000 ausgeben Allgemeine Java-Themen 2
MQue Date, Timestamp, Millisecond Allgemeine Java-Themen 3
alexpetri Date Parsen Allgemeine Java-Themen 3
M Date Range auswerten und die Monate berechnen Allgemeine Java-Themen 2
DEvent min. Jahr von Date Allgemeine Java-Themen 2
H Wer kennt sich mit der Klasse Date aus? Allgemeine Java-Themen 3
G Date wird nicht richtig geparsed Allgemeine Java-Themen 3
H zwei Date Variablen überschreiben sich Allgemeine Java-Themen 2
P von Date zu Timestamp Allgemeine Java-Themen 10
H Date in String wandeln un dumgekehrt. Allgemeine Java-Themen 17
P SimpleDateFormat/Date Allgemeine Java-Themen 4
V Date und Calendar . Allgemeine Java-Themen 3
P sql.Date -> the constructor Date() is undefined! Allgemeine Java-Themen 3
M String nach Date Allgemeine Java-Themen 4
E XML dateTime String in Date mit SimpleDateFormat umwandeln Allgemeine Java-Themen 5
K Date formatieren Allgemeine Java-Themen 7
L String ==> Date ==> GregorianCalendar Allgemeine Java-Themen 3
G Date-Objekt aus Datums-String erstellen Allgemeine Java-Themen 6
F Spezialfrage zu Date Allgemeine Java-Themen 5
L-ectron-X Zeitspanne mit Date und DateFormat Allgemeine Java-Themen 7
B String to Date Allgemeine Java-Themen 7
K Date: getTime immer gleich Allgemeine Java-Themen 4
B Java.Date -> Delphi.TDateTime Allgemeine Java-Themen 4
D Datum und Zeit - Date, Calendar oder GregorianCalender ? Allgemeine Java-Themen 13
P Alter in Jahren aus Date-Objekt ermitteln Allgemeine Java-Themen 5
T Datum als String in Date umwandeln Allgemeine Java-Themen 3
R Date Tage abziehen Allgemeine Java-Themen 3
I java.util.Date - die 1970-Untergrenze Allgemeine Java-Themen 3
T Probleme mit Date und Calendar Allgemeine Java-Themen 7
W Mit Date-Objekten arbeiten Allgemeine Java-Themen 10
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben