Weiß jemand, wie ein java.util.Date serialisiert wird? Ich meine, erklären Sie mir genau, was jedes Byte ist? Ich habe versucht, ein langes und ein Datum zu schreiben, und ich kann Matches sehen, aber es gibt andere Charaktere, die ich einfach nicht bekomme.
Unsere Anwendung nimmt Serveranforderungen mit Daten vor, was bedeutet, dass sie von Client zu Server serialisiert werden. Das Team, das Stresstests durchführt, verwendet ein Tool, das diese Anforderungen erfasst und modifiziert, das Problem ist, dass sie Daten verarbeiten möchten und ich nicht weiß, wie der Byte-Stream zu interpretieren ist. Der Typ, mit dem ich spreche, scheint bereit zu sein zu lernen, aber bis jetzt habe ich nichts gefunden, von dem ich verstehe, dass er ihn darauf hinweist ...
Code, den ich verwendet habe:
%Vor%BEARBEITEN:
Die Ausgabe von oben ist:
%Vor%Das lange ist "w, áqÇ-" also, was ist das Zeug zwischen dem langen und dem Date-Objekt, d. h. "hjKYt xp"
HINWEIS einige der Leerzeichen sind nicht druckbare Zeichen NULL, SOH, Rücktaste usw. Ich verstehe, dass es der hex Wert ist, der zählt.
BEARBEITEN:
Immer noch Probleme. Aus irgendeinem Grund serialisiert die serialisierte HTTP-Anfrage das Datum nicht genau wie die Antwort, die ich akzeptierte. Sehr nah, aber immer noch anders und ich weiß nicht warum. Was noch seltsamer ist, wenn ich ein Datum einfach serialisiere, scheint es gut zu funktionieren. FYI at worj wir verwenden Websphere 6.1 Hier sind einige Beispiele für das, was in der Anfrage gesendet wird:
%Vor% Ich konnte die meisten Felder identifizieren, aber nicht die tatsächliche Zeit! ZB die serialVersionUID ist hj\x81\x01KYt\x19
BEARBEITEN (FINAL):
Ich fand das Datum, aber es war nicht in der Nähe, wo ich es erwartet hatte! Es war gut nach der Probe, die ich hatte, weil andere Datenfelder auftauchten. Ich dachte, dass das Datum fertig war - es war nur Zufall, dass ich das hexadezimale Muster des Datums bemerkte, nach dem ich suchte! Beispiel:
%Vor%Der Datumswert ist genau am Ende!
Die Details zum Format der Java-Objektserialisierung sind in Java Object Serialization angegeben Spezifikation Anders als Zauber- und Versionsnummern werden Details der Klasse Date
und die Tatsache, dass das Objekt Date
ist, in den Stream geschrieben.
Das API-Dokument für Date
serialisiertes Formular ist:
Der von getTime () zurückgegebene Wert ist emittiert (lang). Dies repräsentiert die Versatz vom 1. Januar 1970, 00:00:00 Uhr GMT in Millisekunden.
Beachten Sie, dass es die Spezifikation tatsächlich bricht, indem Sie defaultWriteObject
oder putFields
nicht aufrufen.
Tags und Links java serialization