【问题标题】:Which classes can be used in GWT app deployed to Google App Engine?哪些类可以在部署到 Google App Engine 的 GWT 应用程序中使用?
【发布时间】:2012-06-21 09:21:57
【问题描述】:

我正在使用 GWT 编写一个应用程序,我想将其部署到 Google App Engine。我想使用一些来自 JRE 的类,比如java.io.BufferedReader;java.net.URLjavax.crypto.Cipherjava.util.zip.InflaterInputStream,它们列在JRE Class White List - https://developers.google.com/appengine/docs/java/jrewhitelist

我正在使用 eclipse,当我尝试在本地运行我的应用程序时,编译器会抛出像 [ERROR] [gwtlist] - Line 46: No source code is available for type java.net.URL; did you forget to inherit a required module? 这样的错误。

Google App Engine General Questions - https://developers.google.com/appengine/kb/general#language 中说: ...Also, Java-based applications may only use the JRE classes in the JRE class white list.

我的问题是我的想法是对还是错?这是JRE Class White List 可以在客户端使用,还是仅对服务器端代码有用?在这种情况下,我不需要使用 Google App Engine,因为所有客户端代码都必须仅以纯 GWT 编写,其中一些 Java 类来自 JRE Emulation Reference - https://developers.google.com/web-toolkit/doc/latest/RefJreEmulation?hl=es-419#Package_java_io。在这种情况下,Google App Engine 的目标是什么?只是模拟服务器吗?

编辑:如果 Google App Engine 只能在服务器端模拟 JRE 类,你能告诉我应用程序在哪里运行吗?我的意思是:

应用部署在 Google App Engine 上。
客户端运行应用并登录。
服务器端代码打开其他服务器上的外部文件,解压缩并将结果发送到客户端。

我的问题是transfer 是如何工作的?它是谷歌云中的所有内容,还是客户端必须下载,例如这个未压缩的文件?``

【问题讨论】:

标签: java google-app-engine gwt client whitelist


【解决方案1】:

Appengine 代码仅适用于服务器端。

如果是客户端代码,您可以在 GWT 中使用未在 AE 上列入白名单的类。无论如何它都会被编译成javascript。但是,您用于从客户端通过 GWT 进行 rpc 调用的任何服务器端代码都需要在 AE 白名单中,因为它正在那里运行。

错误“没有可用于类型 java.net.URL 的源代码”源于 GWT。基本上它正在寻找 src 以便编译成 javascript。 GWT 也有一个可以编译的白名单,除此之外,您需要 src,除非您在 *.gwt.xml 文件中将其作为 GWT 模块继承。见https://developers.google.com/web-toolkit/doc/latest/RefJreEmulation

【讨论】:

  • 好的,知道了!我已经编辑了我的问题。你知道它是如何在服务器端和客户端之间传输数据的吗?真正的客户是否必须下载这些数据,或者一切都在谷歌云中? (我已经编辑了我的基本问题)。
  • 那么在这种情况下,我认为您的客户端会向 AE 发出请求,而 AE 会从另一台服务器获取文件并将其返回给客户端。客户端有一个 SOP,并且不能调用它所来自的服务器以外的其他服务器(除非它正在调用 Web 服务,在这种情况下可以直接调用)。 developers.google.com/appengine/docs/java/urlfetch 有一个 api
  • 我可以使用RequestBouilder 从客户端的外部服务器获取文件,但这不是我的意思。我想向 AE 发出请求以获取文件的未压缩内容。我的问题是代码实际运行在哪里?服务器端在 AE 上。客户端在客户端计算机上?在这种情况下,压缩文件没有任何意义,因为客户端必须获得未压缩的内容并且仍然下载几 MB。
  • 我不确定我是否理解,但是客户端代码在客户端计算机上,如果您使用 GWT,它会在 javascript 中运行。无论如何,看到这个...developers.google.com/web-toolkit/doc/2.0/…?我不确定您是否可以通过 RequestBuilder 从外部服务器获取文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
相关资源
最近更新 更多