【问题标题】:Very simple Glassfish file transfer非常简单的 Glassfish 文件传输
【发布时间】:2012-03-26 07:14:49
【问题描述】:
【问题讨论】:
标签:
java
glassfish
client-server
ejb-3.0
file-transfer
【解决方案1】:
你有点走错地方了。您正在查看的内容是支持 RPC 会话。理论上你可以发送一个巨大的字节数组,但这样做可能是不明智的。
最好创建一个简单的 Web 应用程序并通过 HTTP 推送文件。
或者您可以尝试使用为 MTOM 配置的 WS Web 服务——它也可以处理大型负载。您可以查看here 以获取有关流式 MTOM 消息的文章。它适用于 WebLogic,但它基本上是 Sun JAX-WS,因此它应该可以在 Glassfish 上开箱即用。
Web Service 的一个优点是您可以将它托管在 EJB 中,而不必为此设施部署单独的 WAR。您要注意的是所有有效负载都存储在 RAM 中。例如,如果您要发送一个 10Gb 的文件,实际流量将是相同的,但是如果您天真地完成,您最终会在客户端和/或服务器的堆中保留所有 10Gb,这显然是不可取的.
最终,任何一种方式都会奏效。 Web 服务的缺点是必须深入到 Web 服务堆栈的阴暗角落,与通用 Servlet 和 Web 应用程序一样,它更加开放,但是您可能会深入到内部深处HTTP 来解决这个问题。例如,如果您想使用 Apache HTTP 客户端,则需要创建一个自定义 RequestEntity 来为您处理流式传输。
一切皆有可能,只是少用而不是默认,开箱即用,2行代码教程示例。