2009-12-19 16 views
7

Ich definiere eine Klasse und setze dann ein Objekt dieser Klasse ein. Ich möchte dieses Objekt transparent an eine andere Java-Anwendung senden, die auf einem anderen Computer ausgeführt wird. Was ist die beste Technologie, um dies zu erreichen?Senden eines Objekts über das Internet

+2

Sie meinen - Satellit, das Internet oder AM/FM-Radio? Oder wenn nicht, können wir die Klasse sehen? Gib uns Code-Kumpel! \ o/Alles! Solange es sich noch bewegt, ein wenig .. – 0scar

+0

BTW, haben Sie nach der besten Technologie gefragt, um Ihre Frage zu erreichen, nicht Beispielcode, wie es geht. Aus diesem Grund haben Sie 3 Antworten für die zu verwendenden Technologien. Wenn Sie Beispielcode benötigen, dann fragen Sie nach Beispielcode und Sie erhalten Beispielcode von mehreren Personen, wie Sie dies mit verschiedenen Technologien tun oder verwenden, aber Sie hätten mehr zur Auswahl. –

Antwort

7

Sie können Objektströme mit der Java-API erstellen und serialisierbare Objekte senden. aber Sie müssen etwas dagegen, dass diese gehen unverschlüsselt über das Netzwerk:

auf der Senderseite:

CustomObject objectToSend=new CustomObject(); 
Socket s = new Socket("yourhostname", 1234); 
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream()); 
out.writeObject(objectToSend); 
out.flush(); 

und am empfangenden Ende:

ServerSocket server = new ServerSocket(1234); 
Socket s = server.accept(); 
ObjectInputStream in = new ObjectInputStream(s.getInputStream()); 
CustomObject objectReceived = (CustomObject) in.readObject(); 
6

Es gibt viele Möglichkeiten, dies zu tun. Hier sind einige Dinge, die Sie sich ansehen sollten, und Sie können diejenige auswählen, die am besten für Ihre Anwendung funktioniert.

  • J2EE
  • RMI
  • Objektserialisierung die Bits über einen Sockel schieben
  • Webservices

ziemlich jedes Rahmen-Kommunikation ermöglicht es Ihnen, Objekte über ein Netzwerk in einer Art und Weise zu drücken oder Ein weiterer. Sie müssen sie nur überprüfen und sehen, welche für Ihre Anwendung funktioniert. Ein schneller Google sollte noch mehr Methoden finden.

2

A (de facto) Standard um dies zu implementieren, würde man einen Web-Service verwenden, zum Beispiel unter Verwendung von JAX-WS, der in Java 6 gebündelt ist. Siehe this tutorial für eine Java-erste Probe (dh unter Verwendung von Anmerkungen). Das ist ziemlich geradlinig und einfach.

Es gibt auch andere Ansätze wie Serialization über eine Socket, RMI, EJBs aber, wenn sie über das Internet arbeiten, Web-Services sind eine Art natürliche Wahl, da sie auf bestehenden Standards setzen (SOAP, HTTP) und befassen sich leicht mit Firewalls (was für alle anderen Lösungen ein echtes Problem sein könnte).

1

Java bietet (binäre) Objektserialisierung mithilfe von ObjectOutputStream (und ObjectInputStream). Sie können writeObject() einfach in den Stream schreiben und readObject() am anderen Ende. Alles, was Sie dafür tun müssen, ist die Implementierung der Serializable-Schnittstelle.

Aber anstatt das manuell zu tun, könnten Sie daran interessiert sein, eine Ebene höher zu gehen und Remote Method Invocation zu verwenden. Mit RMI können Sie Methoden für Objekte aufrufen, die in einer anderen JVM enthalten sind, und die gesamte Serialisierung und Vernetzung geschieht unter der Haube.

Und der Vollständigkeit halber gibt es auch XML-Bean-Serialisierung, wenn Sie das Binärformat nicht verwenden können. Dieses XML-Format ist sehr generisch (lesen: ausführlich und hässlich), aber es gibt einige populäre Bibliotheken (wie XStream), die alternative XML-Serialisierungen erstellen.

Verwandte Themen