2009-03-31 16 views
0
public class Person { 
    private String firstname; 
    private String lastname; 
    private PhoneNumber phone; 
    private PhoneNumber fax; 
    // ... constructors and methods 
    private void calculate() 
    { 
    } 
} 
私は、サーバー側のJavaオブジェクトをシリアライズし、それをクライアントに送信した

私はJavaScriptを 使用してJavaオブジェクトにそのXML文字列をデシリアライズし、Personクラスのメソッドを実行するにはどうすればよいJavaScriptでJavaオブジェクトのシリアル化を処理するにはどうすればよいですか?

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); 

JavaScriptを使用してクライアント側で?

構文やガイドラインをお手伝いください。

+0

これは以前の質問と重複していませんか?私はここでdeja vuの明確な感覚を得ています –

答えて

0

XMLはJavaScriptのDOMツリーとして表示されます。

+0

OK、どのようにJavaオブジェクトをJavaオブジェクトにデシリアライズしたいのですか?Javaオブジェクトに逆シリアル化したいので、Javaオブジェクトをインスタンス化してからクライアント側のJVMで実行できるようにします –

+0

あなたがここで説明していることは、あなたの質問とは異なると聞こえます。 – cdmckay

+0

なぜオブジェクトを逆シリアル化する必要がありますか?単にJavaとJavaの接続を使用してみませんか? –

-1

JavaメソッドをJavascriptで実行することはできません。あなたが行うことができる唯一のことは、Javaオブジェクトのプロパティを読み取ることです。これは、XMLファイルでシリアル化される唯一の情報です。 javascriptでXMLを読むのは非常にeasyです。

Javaオブジェクトをシリアル化してクライアントに送信してJavaコードを実行するには、まったく異なるアーキテクチャが必要です。最初はクライアント上でJavaを実行する必要があります。次に、RMIのような方法を採用する必要があります。

+0

は私の要件を満たすのですか? –

+0

はい、しかし、あなたはまだ異なるシリアル化テクニックとセキュリティ問題を扱う必要があります。 RMIサーバーと通信できるようにするには、おそらくアプレットに署名する必要があります。 – kgiannakakis

+0

これはあまりにも複雑に思えます。彼が本当に必要とするのは、JavaサーバーにWebサービスを提供させ、その後、AJAXを使用してそのWebサービスを呼び出す必要があるということです。 – cdmckay

1

SOAPを使用してJavaScriptを使用してクライアント側でJavaメソッドを呼び出すことができます。このarticleは、WSDLをサポートする任意のSOAPクライアントがアクセスできるWSDL Webサービスを作成する方法を説明しています。

JavaScriptでAJAXを使用してJava WSDLサービスを呼び出すことができます(SOAPおよびWSDLを実装するJSライブラリがある場合)。

また、PHPの組み込みSoapClientライブラリを使用して、PHPでJava WSDLサービスに単純化されたフロントエンドを記述することもできます。いくつかの簡単なGET引数をとり、JSONまたはXMLを返します。次に、jQuery(または同等のAJAXをサポートするライブラリ)を使用して、AJAXを使用してPHP Webサービスに簡単にアクセスできます。

+0

+1 XStreamは、そのままの状態でJSONをサポートします。 – Fortyrunner

1

JavaからJavascriptコールを作成する場合は、LiveConnectをJSObjectラッパークラスでチェックアウトしてください。この方法で、アプレット内でjavascript関数を実行することができます(そしてその間に情報を渡します)。

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); 
    } 
}); 

Flickr用のIRISアプリケーションについては、オープンソースであり、この技術を使用しています。ベルギーのJUG Parleysには、このうちのいくつかを扱う大会の演説があります。You can find it here

関連する問題