GWT Requestfactory 性能建议

2023-12-22

我发现使用 GWT requestfactory 时性能非常糟糕。例如,一个请求需要我的服务层 2 秒才能完成,而 GWT 则需要 20 秒才能序列化。我的服务返回约 100 个实体代理。这些对象中的每一个都有 4 个 ValueProxies 和另外 2 个 EntityProxies(100 个根级 EntityProxies、400 个 ValueProxies 和 200 个附加 EntityProxies)。然而,我发现在较小的数据集上同样有 10 倍的性能下降。

日志片段示例:

D 2012-10-18 22:42:39.546 ServiceLayerDecorator invoke: Inoking service layer took 2265 ms
D 2012-10-18 22:42:58.957 RequestFactoryServlet doPost: Entire request took 22870 ms

我已经添加了一些分析代码ServiceLayerDecorator#invoke方法并将整个 servlet 包装在一个计时器中。我已经对服务本身进行了分析,它确实在大约 2 秒内返回结果。

我正在使用 GWT 2.4,但已在 GWT 2.5rc1 和 GWT 2.5rc2 上对此进行了测试。我的后端在 GAE 上,但我认为这在这里不起作用。

I found this bug http://code.google.com/p/google-web-toolkit/issues/detail?id=7231针对 2.4 提交,这似乎非常相关。我已经手动应用了补丁这个谷歌群组 https://groups.google.com/forum/?fromgroups=#!topic/google-web-toolkit/o4qBbwmE7YA没有任何运气。

我的域模型如下所示:

class Trip {
  protected Address origin; // becomes ValueProxy
  protected Address destination; becomes ValueProxy
  protected Set<TripPassenger> tripPassengers; // Set of ValueProxies
}

class TripPassenger {
  protected Passenger passenger;
}

class Passenger {
  protected Account account;
}

我的问题是:

  • 我是否正确分析了代码并将问题隔离到 GWT 序列化?
  • 我是否做错了什么会导致这种行为?
  • 如何更好地分析 GWT 序列化代码以尝试找出原因?

  • 我是否正确分析了代码并将问题隔离到 GWT 序列化?

RequestFactory使用反射一大堆(例如比 GWT-RPC 多得多),所以我对它在某些情况下导致一些性能问题并不感到惊讶。 GAE 可以在这里发挥作用。
我相信 RequestFactory(实际上是 AutoBean 部分)可以从构建时的代码生成中受益匪浅。

  • 我是否做错了什么会导致这种行为?

检查您的定位器find and/or isLive方法。

  • 如何更好地分析 GWT 序列化代码以尝试找出原因?

了解反序列化请求、应用更改以及序列化响应所花费的时间也很有趣。并且不要忘记减去花费的时间find and isLive.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GWT Requestfactory 性能建议 的相关文章

  • 测试 GWT 代码的最佳方法是什么[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • gwt 谷歌应用引擎 HTTP 错误 404

    我在 Eclipse 中使用 google 应用程序引擎创建了一个新的 gwt 项目 但是当我运行该项目时 在浏览器中我收到以下消息 HTTP 错误 404 访问 Test html 时出现问题 原因 NOT FOUND 由码头提供动力 现
  • GWT 是否重用 Google Closure Compiler,如果不重用,为什么?

    谷歌网络工具包 GWT http code google com webtoolkit 执行 javascript 代码的内联 缩小和删除未使用的代码 以及其他一些优化 这些也是由谷歌闭包编译器 http code google com c
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • GWT 主题/模板 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 GWT 开发一个应用程序 尽管 GWT 是基于 JAVA 的媒介 但外观和感觉只能通过 CS
  • 使用 GWT CellTableBuilder 构建树表

    Is it possible to build a tree table like this http www sencha com examples ExamplePlace basictreegrid with the new Cell
  • gwt 中的垂直居中

    如何使用垂直面板在 gwt 中垂直居中 或者请告诉我有什么方法可以进行垂直居中 如果你想直接使用VerticalPanel从代码中 您需要使用setVerticalAlignment HasVerticalAlignment ALIGN M
  • 阻止 GWT 中的事件冒泡

    我有以下代码片段 changeTextArea 是一个 TextArea 对象 changeTextArea addKeyboardListener new KeyboardListenerAdapter public void onKey
  • 如何将 GWT 与 Visual Studio 一起使用来创建 ASP.NET 网站?

    如何将 GWT 与 Visual Studio 一起使用来创建 ASP NET 网站 如果可能 GWT 可以与任何后端一起使用 只需做一些工作 它开箱即用 使用 servlet 容器 但您不需要保留此容器 容器中的关键项是加载GWT编译代码
  • 如何使用CellTable进行单行扩展?

    我正在尝试使用新的 GWT CellTable 小部件 但我的表格需要支持单行扩展 即行的左侧有一个 zippy 单击它时 该行应该扩展以提供更多详细信息 并且该行应该跨越所有列 是否可以使用 CellTable 来实现此目的 如何动态添加
  • 从 JSNI 调用 Java 方法

    我想调用Java方法test 来自 JSNI 变量successHandler 但是 我收到错误 ERROR Line 110 Missing qualifier on instance method com gw myProject cl
  • GWT CellTable getRowElement 抛出 IndexOutOfBoundsException

    我在 GWT 中使用 CellTable 并尝试在发生某些事件时向行添加样式 添加样式的代码如下 Range range playlistTable getVisibleRange int start range getStart for
  • GWT 中什么是可序列化的或不可序列化的?

    我的 GWT 项目中有这个简单的对象 我无法通过电汇发送它 在这样的类中放置构造函数是不可能的吗 public class MceDto implements IsSerializable public MceDto String uri
  • GWT 与 Apache Wicket

    GWT 和 Wicket 都是有状态的 基于 Java 对象的 GWT 完全基于客户端 具有 javascript 优化 CSS 优化等功能 而且我对 Apache Wicket 还很陌生 我对 Wicket 的了解越多 就越感觉它与 GW
  • 在 GWT 中调用本机 (C++) 代码

    我正在 GWT 中开发一个应用程序 它需要调用 Directshow 中的本机 C 代码来进行一些多媒体处理 我猜我不能使用 JNI 因为 GWT 将代码转换为 javascript 我确实看过论坛上的类似帖子 以及关于 JSNI 的 GW
  • GWT - onClick 未触发

    我在表单上有一个非常奇怪的行为 有许多具有内联验证的文本字段 如果内容无效 则会在字段下方显示错误消息 验证在模糊时触发 页面底部有一个 下一步 按钮 单击后 将执行验证 如果一切正常 则提交表单 现在 如果当我单击按钮时强制空白字段具有焦
  • GWT RequestFactory 和多个请求

    有没有办法使用 RequestFactory 在单个请求中创建两个实体 我试过 EmployeeRequest request requestFactory employeeRequest EmployeeProxy newEmployee
  • 为什么使用 GWT.create() 而不是 new?

    有什么区别GWT create SomeClass class and new SomeClass 为什么你会使用其中一种而不是另一种 GWT createGWT 编译器使用延迟绑定 延迟绑定是 GWT 编译器的一项功能 它的工作原理是在编
  • 带有 -noserver 的 GWT

    我正在制作一个使用 PHP 连接到 DB2 数据库的 GWT 项目 当我编译项目并将其部署到服务器 复制 WAR 目录的内容 时 它工作正常 显然在托管模式下我遇到了 SOP 问题 因为 GWT 在端口 8888 上 而 php 脚本在端口
  • CellTables 和 css (GWT)

    有人可以帮我设置 CellTable 行的背景吗 拜托 我整晚都在努力做这件事 但一直失败 这是 让我发疯 我尝试过调用setRowStyles 但是那个 似乎不起作用 我读到你无法更改 设置样式后 CellTable 的样式 作为默认样式

随机推荐

  • Python - 请求被 Cloudflare 阻止

    我正在尝试登录一个网站 当我查看 print g text 时 我没有返回我期望的网页 而是返回一个 cloudflare 页面 上面写着 访问之前检查您的浏览器 import requests import time s requests
  • 如何在 typescript / Angular 中设置 html 元素的样式

    我试图将属性设置为 html 元素但出现错误类型 HTMLCollectionOf 不可分配给类型 HTMLElement 这是我的打字稿代码 let elem HTMLElement document getElementsByClass
  • 自动完成textview谷歌地点API

    我跟着本教程 http wptrafficanalyzer in blog android autocompletetextview with google places autocomplete api 使用 google place a
  • 无法与 Cordova / Phonegap helloworld 一起使用服务

    我已经安装了 Android SDK Ant cordova 3 4 1 设置 PATH 变量 android ant cordova命令可用 在 cordova CLI 的末尾 有以下示例用法 Example usage cordova
  • 在matlab中计算两幅图像之间的欧氏距离

    我想在Matlab中计算两个图像之间的欧几里德距离 我找到了一些例子并尝试过 但它们不正确 该欧氏距离的结果应介于0 and 1但我通过两种不同的方式得出了不同的解决方案 第一个算法给我一个 4 位数字 例如2000和其他像这样的数字 通过
  • 当 R 编译要在包中使用的 C++ 代码时,如何将标志传递给 R?

    我正在尝试在 R 包中使用 OpenCV 中的一些代码 并使用 Rcpp 来构建包 当我在我的机器上编译c代码时 它工作正常 例如 我在本地使用以下语法来编译facedetect cpp代码 g pkg config cflags open
  • 跳过 Tensorflow 中不存在或损坏的文件

    我有一些包含图像文件路径和功能的文件 其中一些图像可能丢失或损坏 我想知道如何通过跳过这些图像并将它们从队列中删除来稳健地处理错误 我注意到 简单地捕获错误并继续将导致队列输出相同的图像 因此它会在同一图像上重复出错 有没有办法在错误时使图
  • TinyMCE 堆栈类

    我使用 TinyMCE 4 作为我的默认编辑器 在配置中我指定了样式格式 除了一件事之外 它完全有效 它堆叠类 我的风格格式 style formats title Heading 2 block h2 classes heading 02
  • 使用 LINQ 使用特定范围的数字填充列表

    为了填充一个List
  • 如何使用封闭类的类型键入提示方法?

    我在 Python 3 中有以下代码 class Position def init self x int y int self x x self y y def add self other Position gt Position re
  • 成本较低的哈希算法是什么?

    我对哈希算法了解不多 在将文件转发到远程系统 有点像 S3 之前 我需要计算 Java 中传入文件的哈希值 该系统需要 MD2 MD5 SHA X 中的文件哈希值 计算此哈希值不是出于安全原因 而只是为了一致性校验和 我能够在转发文件时使用
  • 打开本机应用程序。来自野生动物园

    我知道 iPhone 应用程序 像沙箱一样操作 这意味着他们无权访问其他应用程序的文件 我还成功地使用以下命令从 Native App 在 Safari 中打开了一个网站 openURL NSURL URLWithString Websit
  • 禁用 web.config 继承?

    我的网站根目录中有一个内容管理应用程序 我尝试在子文件夹下使用另一个应用程序 计费应用程序 不幸的是 根站点的 web config 干扰了子应用程序 有没有办法只禁用子文件夹的 web config 继承 Update 如链接所示史蒂芬
  • 可以从 UIView 复制 CALayer 吗?

    这是我的设置 我有一个 CALayer 我想向其中添加子层 我通过设置 UILabel 创建这些子层 然后将 UILables 层添加到我的主层 当然 这会使沉重的 UILabel 对象在后台徘徊 是否可以从 UIView 获取图层及其所有
  • 在 OData 中,有没有办法按数组中的第一个元素进行排序?

    我有一个 OData 4 端点 用于在表中显示数据 其中一列包含一组由我的元素内的字符串数组连接而成的数据 有没有办法按数组中的第一个元素排序 我的元素可能如下所示 FirstName John MiddleNames Harry Bobb
  • 如何获取 Windows 8 应用程序的方法名称

    如何在 win 8 WinRT 应用程序中获取当前方法名称 早期在 wp7 中我们可以使用System Reflection MethodBase GetCurrentMethod Name但它不再存在了 谢谢 是的 NETCore 缺少很
  • 如何从命令行使用 GIMP 将 XCF 转换为 PNG?

    作为构建过程的一部分 我需要将许多 XCF GIMP 的本机格式 图像转换为 PNG 格式 我确信使用 GIMP 的批处理模式应该可以实现这一点 但我已经忘记了我以前知道的所有 script fu 我的输入图像有多个图层 因此我需要相当于
  • 将数据传递给 subprocess.check_output

    我想调用一个脚本 将字符串的内容通过管道传输到其标准输入并检索其标准输出 我不想接触真正的文件系统 所以我无法为其创建真正的临时文件 using subprocess check output剧本写什么我都能得到 我怎样才能将输入字符串放入
  • 尽可能快地获取大型文本文件中包含字符串的所有行?

    在Powershell中 如何尽可能快地读取和获取巨大文本文件 大约200000行 30 MB 中包含特定字符串的最后一行 或所有行 我在用着 get content myfile txt select string pattern my
  • GWT Requestfactory 性能建议

    我发现使用 GWT requestfactory 时性能非常糟糕 例如 一个请求需要我的服务层 2 秒才能完成 而 GWT 则需要 20 秒才能序列化 我的服务返回约 100 个实体代理 这些对象中的每一个都有 4 个 ValueProxi