如何使用JavaScript处理Java对象序列化?

如何使用JavaScript处理Java对象序列化?,java,javascript,xml,Java,Javascript,Xml,我已经序列化了位于服务器端的Java对象,并将其发送到客户端 public class Person { private String firstname; private String lastname; private PhoneNumber phone; private PhoneNumber fax; // ... constructors and methods private void calculate() { } } 如何使用JavaScript

我已经序列化了位于服务器端的Java对象,并将其发送到客户端

public class Person {
  private String firstname;
  private String lastname;
  private PhoneNumber phone;
  private PhoneNumber fax;
  // ... constructors and methods
  private void calculate()
  {
  }
}
如何使用JavaScript将XML字符串反序列化到Java对象中 并使用JavaScript在客户端执行person类的方法


请帮助我了解语法或任何指导原则。

XML作为JavaScript的DOM树呈现。

您不能使用JavaScript运行Java方法。您唯一能做的就是读取Java对象的属性——这是XML文件中序列化的唯一信息。使用javascript读取XML是非常困难的


为了能够序列化Java对象,将其发送到客户机并在那里执行Java代码,需要一个完全不同的体系结构。首先,您还需要在客户机上运行Java。然后您需要使用类似RMI的方法。

您可以使用SOAP在客户端使用JavaScript调用Java方法。这说明了如何创建可由任何支持WSDL的SOAP客户机访问的WSDL web服务

然后,您可以使用JavaScript中的AJAX调用JavaWSDL服务(如果您可以找到实现SOAP和WSDL的JS库)


或者,您可以使用PHP的内置SoapClient库在PHP中编写Java WSDL服务的简化前端。使用一些简单的GET参数并返回JSON或XML。然后,您可以通过jQuery(或等效的AJAX支持库)使用AJAX轻松访问PHP web服务。

如果您要使用小程序并希望从Java进行Javascript调用,请使用JSObject包装类签出。通过这种方式,您可以在小程序内执行javascript函数(并在其间传递信息)


查看为Flickr制作的IRIS应用程序,它是开源的,并且使用了这种技术。比利时酒壶谈判代表在一次会议上发表了一篇演讲,内容涉及其中的一些内容。

好的,javascript是如何将接收到的XML反序列化为Java对象的。既然我想将其反序列化为Java对象,以便在实例化Java对象后可以在客户端JVM中执行,那么您在这里描述的内容听起来与您的问题不同。为什么需要javascript对对象进行反序列化?为什么不简单地使用Java到Java的连接呢?满足我的要求吗,先生?是的,但是您仍然需要一种不同的序列化技术和处理安全问题。小程序可能需要签名才能与RMI服务器通信。这似乎过于复杂。他真正需要的是让他的Java服务器提供一个web服务,然后他需要使用AJAX调用该web服务?我在这里有一种似曾相识的感觉
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);
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);
    }
});