2

到目前为止,我正在为服务器端请求使用 GWT RPC 调用,这非常好。我计划将我的代码分成 Servlet 和 GWT 客户端。由于我正在使用 RPC 调用,这似乎是不可能的。我想这样做的原因是,我打算为我的应用程序提供白标选项。因此,如果我可以将代码与客户端代码和 servlet 分开,我可以简单地将白标客户端代码提供给我的合作伙伴以托管在他们的服务器上。我已经检查过 GWT RequestBuilderAccess-Control Allow-Origin : Origin from Client Header并且它工作正常。

但是我需要在 RequestBuilder 请求和 Servlet 响应上实现 gwt 序列化。我怎样才能做到这一点 ..?

我喜欢制作的场景:

  1. RequestBuilder 将 Serializable String(它是一个IsSerialiazible对象)发送到 Servlet。

  2. Servlet 将字符串反序列化为 Java 对象,处理并返回“IsSeraliazable”对象的字符串响应。

  3. 在 GWT RequestBuilder 中收到的响应字符串将其反序列化回 Java 对象(编译后的 JS)。

我检查了 RemoteServiceServlet 类,它似乎有一些关于序列化和反序列化请求和响应的信息。但我无法让它与 RequestBuilder 一起工作。有什么想法,希望对大家有帮助。

    public final void processPost(HttpServletRequest request,HttpServletResponse response) 
    throws IOException, ServletException,SerializationException 
    {
        // Read the request fully.
        //
        String requestPayload = readContent(request);

        // Let subclasses see the serialized request.
        //
        onBeforeRequestDeserialized(requestPayload);

        // Invoke the core dispatching logic, which returns the serialized
        // result.
        //
        String responsePayload = processCall(requestPayload);

        // Let subclasses see the serialized response.
        //
        onAfterResponseSerialized(responsePayload);

        // Write the response.
        //
        writeResponse(request, response, responsePayload);
    }
4

2 回答 2

1

GWT RPC 和 RequestBuilder 服务于不同的目的。我们不能混合/匹配它们。

GWT RPC - 获取数据的服务

GWT Request Builder - 触发对 js、css、json 对象、查询soap服务等静态资源的请求

对于您处理请求的方法,我认为唯一可行的解​​决方案是使用 JSON - https://developers.google.com/web-toolkit/doc/latest/tutorial/JSON

您可以保持 servlet 代码不变,然后使用 RequestBuilder 查询映射到这些 servlet 的 URL 以获取 JSON 对象。使用 JSNI 或 Overlay 概念处理 JSON 对象。

于 2012-12-03T11:13:31.063 回答
0

我正在尝试获取 GWT 序列化和反序列化源。不幸的是,我一直忙于其他工作,现在无法查看。当我得到 GWT 序列化类时,我会更新。

于 2013-04-12T16:18:17.887 回答