2009-03-31 4 views
0
public class Person { 
    private String firstname; 
    private String lastname; 
    private PhoneNumber phone; 
    private PhoneNumber fax; 
    // ... constructors and methods 
    private void calculate() 
    { 
    } 
} 

ich das Java-Objekt auf der Serverseite befindet serialisiert haben und schickte es an den ClientWie kann ich Java-Objekt-Serialisierung mit JavaScript umgehen?

XStream xstream = new XStream(new DomDriver()); 

Person joe = new Person("Joe", "Walnes"); 
joe.setPhone(new PhoneNumber(123, "1234-456")); 
joe.setFax(new PhoneNumber(123, "9999-999")); 

String xml = xstream.toXML(joe); 

Wie kann ich diese XML-Zeichenfolge in das Java-Objekt deserialisieren mit JavaScript und die Methoden der Person Klasse ausführen auf der Client-Seite mit dem JavaScript?

Bitte helfen Sie mir mit Syntax oder Richtlinien.

+0

Ist dies kein Duplikat Ihrer vorherigen Fragen? Ich bekomme ein klares Gefühl von Deja Vu hier, –

Antwort

0

XML wird als DOM-Struktur zu JavaScript dargestellt

+0

ok, wie das Javascript deserialize das empfangene XML in Java object.since ich möchte in Java-Objekt deserialize, so dass es in Client-Seite JVM einmal instanziiert werden konnte, dass Java-Objekt –

+0

Was Sie hier beschreiben, klingt anders als Ihre Frage. – cdmckay

+0

Warum brauchen Sie JavaScript, um die Objekte zu deserialisieren? Warum verwenden Sie nicht einfach eine Java-zu-Java-Verbindung? –

-1

Sie können Java-Methoden nicht mit Javascript ausführen. Sie können nur die Eigenschaften des Java-Objekts lesen - dies ist die einzige Information, die in der XML-Datei serialisiert wird. Es ist sehr easy XML mit Javascript zu lesen.

Um ein Java-Objekt zu serialisieren, es an einen Client zu senden und dort Java-Code auszuführen, wäre eine völlig andere Architektur erforderlich. Zuerst muss Java auch auf dem Client laufen. Dann müssten Sie eine Methode wie RMI verwenden.

+0

erfüllt erfüllen meine Anforderungen erfüllen Sir? –

+0

Ja, aber Sie benötigen immer noch eine andere Serialisierungstechnik und Umgang mit Sicherheitsproblemen. Das Applet müsste wahrscheinlich signiert werden, um mit dem RMI-Server kommunizieren zu können. – kgiannakakis

+0

Das scheint übermäßig kompliziert. Was er wirklich braucht, ist, dass sein Java-Server einen Web-Service bereitstellt und er dann diesen Web-Service mit AJAX aufrufen muss. – cdmckay

1

Sie können Javamethoden auf der Clientseite mithilfe von JavaScript mithilfe von SOAP aufrufen. In dieser article wird erläutert, wie ein WSDL-Webdienst erstellt wird, auf den von jedem SOAP-Client zugegriffen werden kann, der WSDL unterstützt.

Sie können dann den Java WSDL-Dienst mit AJAX in JavaScript aufrufen (wenn Sie eine JS-Bibliothek finden, die SOAP und WSDL implementiert).

Alternativ können Sie ein vereinfachtes Front-End für den Java WSDL-Dienst in PHP mit der integrierten SoapClient-Bibliothek von PHP schreiben. Nehmen Sie einige einfache GET-Argumente und geben Sie JSON oder XML zurück. Sie könnten dann trivial auf den PHP-Webservice zugreifen, indem Sie AJAX über jQuery (oder eine entsprechende AJAX-unterstützende Bibliothek) verwenden.

+0

+1 XStream unterstützt JSON out of the box. – Fortyrunner

1

Wenn Sie nach einem Applet suchen und JavaScript-Aufrufe von Java ausführen möchten, überprüfen Sie die LiveConnect mit der JSObject-Wrapper-Klasse. Auf diese Weise können Sie JavaScript-Funktionen innerhalb des Applets ausführen (und Informationen dazwischen weitergeben);

Executor exe = Executors.newSingleThreadExecutor(); 
final JSObject page = JSObject.getWindow(applet); 

if (page == null) { 
    /* Break here, no connection could be made */ 
} 

final String javascriptFunction = "yourJavaScriptFunction()"; 
executor.execute(new Runnable() { 
    public void run() { 
     page.eval(javascriptFunction); 
    } 
}); 

Schauen Sie in die IRIS-Anwendung für Flickr, es ist Open Source und verwendet diese Technik. Die belgischen JUG Parleys haben eine Rede von einer Konvention, die einige davon behandelt, You can find it here.

Verwandte Themen