有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案