Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 让两台服务器互相对话_Java_Google App Engine_Client Server_Cross Domain - Fatal编程技术网

Java 让两台服务器互相对话

Java 让两台服务器互相对话,java,google-app-engine,client-server,cross-domain,Java,Google App Engine,Client Server,Cross Domain,我的应用程序是用GWT编写的,托管在Google AppEngine/Java上。在此应用程序中,用户可以选择将视频/音频/文本文件上载到服务器。这些文件可能很大,高达1gb左右,因为GAE/J不支持大文件,所以我必须使用另一台服务器来存储这些文件。如果浏览器中没有跨域安全特性,这将很容易实现。所以,我的想法是让GAE服务器与我的服务器(Glassfish或任何其他java服务器,如果需要)对话,告诉文件的url,如果可能的话,发送上传文件的状态(上传的百分比),这样我就可以在客户端屏幕上显示状

我的应用程序是用GWT编写的,托管在Google AppEngine/Java上。在此应用程序中,用户可以选择将视频/音频/文本文件上载到服务器。这些文件可能很大,高达1gb左右,因为GAE/J不支持大文件,所以我必须使用另一台服务器来存储这些文件。如果浏览器中没有跨域安全特性,这将很容易实现。所以,我的想法是让GAE服务器与我的服务器(Glassfish或任何其他java服务器,如果需要)对话,告诉文件的url,如果可能的话,发送上传文件的状态(上传的百分比),这样我就可以在客户端屏幕上显示状态。这是我想做的

当用户加载存储在GAE/J上的GWT页面时,他/她会将文件上载到我的服务器,然后我的服务器会将响应发送回GAE,GAE会将响应发送到客户端。
如果可能出现这种情况,那么实现GAE到Glassfish对话的最佳方式是什么?

实际上在此之前,您可以尝试使用第一种方法,即使用iframe传递浏览器的跨域安全性。有一些现成的组件用于此,但对于您的问题,我不知道其中哪一个可以使用。只需谷歌搜索这些组件…

按照您建议的原始方式进行操作 另一种方法的缺点是,在网页中引入对多个站点的依赖关系。

使用URL获取服务的缺点是,您必须在达到免费配额后按传输的字节数付费。

一个选项是等待-blobstore限制并不总是50MB

不过,如果您赶时间,我建议您采用以下方法:

  • 让您的应用程序引擎应用程序生成一个签名令牌,表示用户有权上载文件。令牌应包括当前日期和时间、用户的用户ID、最大文件大小和任何其他相关信息,并应使用HMAC-SHA1和您的应用程序引擎应用程序和服务器都知道的密钥进行签名
  • 向用户返回一个表单,该表单将发布到blob托管服务器上的URL,并嵌入在步骤1中生成的令牌。如果需要进度通知,可以使用类似的工具,并在上载服务器提供的IFrame中提供表单
  • 当用户将文件上载到您的服务器时,服务器应返回重定向回您的应用程序引擎应用程序,并在重定向URL中嵌入新令牌。该令牌再次使用公共密钥签名,包含新上载文件的ID
  • 当您的应用程序引擎应用程序收到重定向URL请求时,它知道上载已完成,并可以在数据存储中记录新文件的ID等
  • 或者,您可以使用,它已经通过它的