标签: gwt-rpc

如何在客户端 - 服务器PlayN游戏中处理RPC?

我想用PlayN创建一个客户/服务器卡片游戏,例如Hearts.虽然我主要关注的是HTML5输出,但我理想的是,如果我决定将来制作一个Android客户端,我希望能够与输出平台无关.我该如何处理RPC机制?

这些是我想到的选项:

  1. 使用JSON for RPCs和get()/ post()方法 - 编写一个接受/返回JSON的servlet,并使所有版本的客户端代码都使用它.这似乎可行,但我担心JSON的冗长.一旦我让Hearts工作,我就会转向更复杂的游戏,我担心JSON会导致在客户端和服务器之间来回传递许多大于必要的消息.我实际上并不知道如何在Java中使用JSON,但我认为这是可行的.我的假设是否在线?Java如何与JSON一起工作?
  2. 继续使用GWT-RPC.我可以通过在我的核心(平台无关)构造函数中使用异步服务接口来实现这一点,并在我的HTML main()中传递由GWT.create(MyService.class)(或至少是它的包装器)生成的GWT Async接口.我不知道这对非HTML版本有多好.我可以直接从客户端Java代码使用GWT-RPC吗?
  3. 使用其他形式的RPC.有什么建议?

rpc json client-server gwt-rpc playn

9
推荐指数
1
解决办法
1113
查看次数

GWT RPC如何加载序列化策略文件?

我正在研究GWT和OSGi + PAX-Web问题的解决方案.特别的问题是GWT无法加载序列化策略文件,给出以下错误:

ERROR: The serialization policy file '/ctx/ctx/6ExxxxxxxxxxxxxxxxF.gwt.rpc' was not found; did you forget to include it in this deployment?

问题出在Equinox OSGi和PAX-WEB之间.

为了找到解决方案,我想更好地了解GWT-RPC如何加载序列化策略文件.

  • 他们的生命周期是什么?他们什么时候装?(我看到它是在服务器启动时.生命周期中的任何特殊性?重新加载?)
  • GWT如何在其堆栈中加载此文件?在请求的调用堆栈中的什么位置?GWT如何知道从何处加载它们?我可以告诉GWT它应该在哪里寻找这个文件吗?

(免责声明:我已经在生成的文件中阅读了gwt文档[2].我正在寻找更多低级细节:我的印象是我们所遇到的错误必须处理HttpContext.getResource())

gwt gwt-rpc

9
推荐指数
1
解决办法
1万
查看次数

在GWT中获取com.google.gwt.user.client.rpc.StatusCodeException:0

我有时/经常在GWT中获得此异常,但不知道原因:

SEVERE: com.google.gwt.user.client.rpc.StatusCodeException: 0 
java.lang.RuntimeException: com.google.gwt.user.client.rpc.StatusCodeException: 0 
    at Unknown.java_lang_RuntimeException_RuntimeException__Ljava_lang_Throwable_2V(Unknown Source)
    at Unknown.de_ctech24_simplynews_web_client_util_SimpleCallback_$onFailure__Lde_ctech24_simplynews_web_client_util_SimpleCallback_2Ljava_lang_Throwable_2V(Unknown Source)
    at Unknown.com_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_$onResponseReceived__Lcom_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_2Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_Response_2V(Unknown Source)
    at Unknown.com_google_gwt_http_client_Request_$fireOnResponseReceived__Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_RequestCallback_2V(Unknown Source)
    at Unknown.com_google_gwt_http_client_RequestBuilder$1_onReadyStateChange__Lcom_google_gwt_xhr_client_XMLHttpRequest_2V(Unknown Source)
    at Unknown.<anonymous>(Unknown Source)
    at Unknown.com_google_gwt_core_client_impl_Impl_apply__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2(Unknown Source)
Caused by: com.google.gwt.user.client.rpc.StatusCodeException: 0 
    at Unknown.java_lang_RuntimeException_RuntimeException__Ljava_lang_String_2Ljava_lang_Throwable_2V(Unknown Source)
    at Unknown.com_google_gwt_user_client_rpc_StatusCodeException_StatusCodeException__ILjava_lang_String_2V(Unknown Source)
    at Unknown.com_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_$onResponseReceived__Lcom_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_2Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_Response_2V(Unknown Source)
    at Unknown.com_google_gwt_http_client_Request_$fireOnResponseReceived__Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_RequestCallback_2V(Unknown Source)
    at Unknown.com_google_gwt_http_client_RequestBuilder$1_onReadyStateChange__Lcom_google_gwt_xhr_client_XMLHttpRequest_2V(Unknown Source)
    at Unknown.<anonymous>(Unknown Source)
    at Unknown.com_google_gwt_core_client_impl_Impl_apply__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

花了一些时间谷歌后我发现了这个:http://www.mail-archive.com/google-web-toolkit@googlegroups.com/msg79537.html

有一个有趣的提示:如果您断开WLAN并再次连接,则会出现这种情况 - 然后出现错误.我在我的笔记本上尝试了这个 - 然后发生异常.

另一个问题是有时会出现这种异常(并非总是在同一时间或执行特定操作时 - 所以看似随机),尽管网络连接正常.我不知道为什么会发生这种情况,也不知道处理它的正确方法是什么 - 确保我能抓住并忽略它.但是请求永远不会进入服务器并且不执行操作 - 不是很好的错误处理.

关于这个应用程序的一些数据 - 这可能有助于缩小或希望解决问题: …

gwt gwt-rpc gxt cloudflare

9
推荐指数
1
解决办法
1万
查看次数

直接从Java调用GWT RPC服务

有没有一种直接从Java代码调用GWT RPC服务端点的简单方法?我的意思是真正的Java代码,而不是编译成javascript的Java代码.

我问,因为我们想对GWT RPC接口运行性能基准测试/压力测试.我想用Java编写测试工具并在JVM中运行它(而不是在浏览器中运行javascript).

我认为必须有一种方法可以做到这一点,因为我认为GWT托管模式需要这样的功能.但是,我无法在GWT运行时中找到任何演示如何干净地执行此操作的代码.我查看了com.google.gwt.user.client.rpc包,但其中的内容似乎使用了JSNI,纯Java显然无法使用.

java gwt gwt-rpc

8
推荐指数
1
解决办法
5976
查看次数

GWT-RPC与HTTP呼叫 - 哪个更好?

我正在评估使用GWT-RPC和HTTP Call进行的调用之间是否存在性能差异.

我的appln服务作为Java servlet托管,我目前正在使用HTTPProxy连接从它们获取数据.我希望将它们转换为GWT-RPC调用,如果这会带来性能提升.

我想知道每个人的利弊...

还有关于衡量异步调用性能的工具的任何建议......

[ 关于可以与GWT一起使用的各种服务器通信策略的好文章.]

gwt asynchronous xmlhttprequest gwt-rpc

8
推荐指数
2
解决办法
7549
查看次数

GWT如何减少RPC调用的代码序列化程序的大小

我发现在我的应用程序中由GWT生成的超过60%的javaScript代码用于RPC序列化程序.另外我发现服务接口之间没有共享序列化器,我的意思是如果我在2个rpc服务接口上引用了例如AccountDTO类型,我会得到2个序列化器类而不是相同类型的1.为了减少编译代码的大小,我想也许我可以使用Deferred Binding来替换我拥有的一个大接口的所有服务接口.如果可能,那么GWTCompiler可能只生成一个AccountDTO序列化器而不是2.

我不确定这是一个好主意,还是我的问题有更好的解决方案.

我试图实现的是这样的:

// Define new interface that extends all service interfaces
public interface GenericService extends RemoteService,
                    AccountingService,
                    FinancialService,..., { }

public interface GenericServiceAsync extends AccountingServiceAsync,
                         FinancialServiceAsync, ..., { }

// At Application.gwt.xml do:

<module>
...
...
    <replace-with class="com.arballon.gwt.core.client.GenericService">
        <when-this-is class="com.arballon.gwt.core.client.AccountingService>
    </replace-with>
    <replace-with class="com.arballon.gwt.core.client.GenericService">
        <when-this-is class="com.arballon.gwt.core.client.FinancialService>
    </replace-with>
    ...
    ...
Run Code Online (Sandbox Code Playgroud)

但此刻我收到了错误:

[错误]'文件中的错误:/ C:/Users/Daniel/EclipseWorkspace/ADK/src/com/arballon/gwt/core/client/FinancialService.java'[ERROR]第31行:重新绑定结果'com.arballon.gwt无法找到.core.client.GenericService'

任何有关该问题的想法将不胜感激.问候

丹尼尔

gwt gwt-rpc

8
推荐指数
1
解决办法
1876
查看次数

GWT从服务器向客户端发送大量数据的最佳实践

哪些是在GWT中从服务器向客户端发送大量数据的最佳实践?

目前我们正面临GWT 2.3.0中的性能问题.

我们的服务器端向客户端发送巨大的xml(大小以MB/GB为单位),我们的客户端解析xml并使用解析的数据,形成bean列表以在Celltable网格中填充数据.

我们在CellTable网格中填写1k +/10k +记录.

在处理如此庞大的数据时,是否有任何有效的方法/最佳实践?如果我们在服务器端解析数据并在服务器端形成bean,这是好的吗?或任何替代方式..

任何有关此事的帮助或指导将不胜感激.

java gwt javabeans gwt-rpc

8
推荐指数
1
解决办法
5038
查看次数

反向代理对GWT应用程序有什么影响?

我正在Glassfish 3.0.1上部署GWT 2.4应用程序.我可以通过http:// host:PORT/appContext / 轻松访问我的应用程序
但是,当我使用Apache反向代理应用程序时,我会得到以下摘录的异常(来自Glassfish日志):

调度传入RPC调用时发生异常com.google.gwt.user.client.rpc.SerializationException:类型"com.ozdokmeci.basicgwtproject.shared.GroupData"无法分配给"com.google.gwt.user.client.rpc.IsSerializable '并且没有自定义字段序列化程序.出于安全考虑,此类型不会被序列化.

实施IsSerializable解决了Chi相关问题中所建议的问题.相关问题中还有其他解决方法.

我的问题是这个的根本原因是什么,以及两个看似无关的解决方案(实现标记接口和扩展servlet类)如何解决这个问题?相关问题中提到的两种方法都有任何缺点吗?

注意:如果直接联系应用程序,则不会发生异常.

注2:与异常相关的类已经实现了Serializable接口,就GWT而言,它应该等同于IsSerializable.

gwt reverse-proxy gwt-rpc

8
推荐指数
1
解决办法
2409
查看次数

在GWT中将文件和HashMap发送到服务器

我必须将文件及其属性发送到GWT服务器.

用于发送文件我使用表单面板.

 public class BrowseFile extends DialogBox {
   // more code
   // ..

        private FormPanel getFormPanel() {
                if (formPanel == null) {
                    formPanel = new FormPanel();
                    formPanel.setMethod(FormPanel.METHOD_POST);

                    formPanel.setEncoding(FormPanel.ENCODING_MULTIPART);
                    formPanel.setAction(GWT.getHostPageBaseURL() +"UploadFileServlet");

                    formPanel.addSubmitHandler(new FormPanel.SubmitHandler(){
                        public void onSubmit(SubmitEvent event) {
                            // TODO Auto-generated method stub
                                    setFilename(fileUpload.getFilename());
                        }

                    });
                }
                return formPanel;
            }
        }   
Run Code Online (Sandbox Code Playgroud)

该文件的所有属性都在Hashmap中 GUi添加文档

有2个对话框Propertybox extends DialogBox

BrowseFile extends DialogBox
Run Code Online (Sandbox Code Playgroud)

在PropertyBox的构造函数中有BrowseFile

当PropertyBox构造函数

                setSize("600px", "670px");
    setHTML("Add Document");

    setWidget(getVerticalPanel());
    browseFile = new BrowseFile();
Run Code Online (Sandbox Code Playgroud)

PropertyBox内的自定义属性取决于所选的类(Class是树Widget)

在服务器端

public class FileUpload extends HttpServlet implements Servlet{

    private …
Run Code Online (Sandbox Code Playgroud)

java gwt servlets gwt-rpc gwt2

8
推荐指数
1
解决办法
1351
查看次数

GWT的RPC与AJAX不同吗?

与AJAX调用相比,GWT(Google Web Toolkit)的RPC(远程过程调用)对于从浏览器/ javascript到服务器的异步操作是如何不同或相似的?

如果他们不同,有人可以帮我理解他们的不同之处吗?

我还听说这个RPC实现不适用于所有Server容器.例如,GWT项目在Apache Tomcat中不起作用.

此外,这个RPC是Google的自定义实现,还是标准实现?

ajax gwt gwt-rpc websphere-7 web

8
推荐指数
1
解决办法
2276
查看次数