java使用MTOM和流媒体将大型文件从C#client发送到Glassfish
我正在开发一个web服务,它必须能够接收潜在的大文件(高达2~3GB)
目前,我配置了一个在Glassfish中运行的非常简单的测试web服务:
package ch.geste.MTOMTest;
import javax.activation.DataHandler;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.soap.MTOM;
@MTOM
@WebService(name="ServiceMTOM_Svc")
public class ServiceMTOM {
public int upload(@WebParam(name="filename") String filename, @WebParam(name="data") DataHandler data)
{
return 0;
}
}
在客户端(C#),我导入了这个web服务,生成的代理方法签名用于调用我的上载函数:
public int upload(string filename, byte[] data)
我的问题是,我想流式处理数据变量,因为它可能非常大。这就是为什么在服务器端我使用DataHandler类而不是字节数组。 但在客户端,如果我简单地调用像这样的上传方法(使用3.8GB文件):
svc.upload(Path.GetFileName(path), File.ReadAllBytes(path));
我遇到了一个异常,因为C程序试图将整个文件加载到内存中。。。我明白,我也会崩溃:)
所以我想我需要将一个流对象传递给代理方法,但我不知道如何传递
你知道吗
哦,顺便说一下,在我的应用程序中。配置时,我在绑定标签中设置transferMode=“Streamed”
非常感谢
尼古拉斯
编辑:废话,我复制了一个未回答的问题。。。真的很抱歉。 见How to use Stream instead of byte[] in C# client with a Java MTOM webservice
共 (0) 个答案