您的位置:首页 > 其它

通过web service的方式上传附件和下载附件,以及内存溢出问题

2009-01-05 15:29 239 查看
前一阵子给朋友做了一个小东东,因为全部采用的是web service方式,使用了apache的axis,其中一个功能是上传下载,就直接使用了web service 的方式来上传附件。

原理很简单,就是把文件转换成字节byte[]传到服务端过去,下载也是正好是反过来的过程。

定义web service的接口类

public interface UploadService extends java.rmi.Remote {
public int uploadFile(org.cxp.info.entity.UploadFile[] file, java.lang.String fileName) throws java.rmi.RemoteException;
public org.cxp.info.entity.UploadFile[] getUploadFile(org.cxp.info.entity.UploadFile condition) throws java.rmi.RemoteException;
}

定义UploadFile类,该类封装了文件byte,文件名

public class UploadFile implements java.io.Serializable {
private java.lang.String key;

private java.lang.String fileName;

private byte[] fileByte;

public UploadFile() {
}

public UploadFile(
java.lang.String key,
java.lang.String fileName,
byte[] fileByte) {
this.key = key;
this.fileName = fileName;
this.fileByte = fileByte;
}

...//以上变量的get和set方法,不再写出

}

这样客服端就可以通过调用这样的接口上传附件和下载附件了。客服端和服务端都要有这个接口。

问题来了,通过这样的上传,有些客服端附件超过4M就会上传不成功,提示内存溢出。

我们知道在在终端启动一个java程序,如,我们运行YourClass.class,要这样写 java -classpath your.lib YourClass

如果YourClass.class要调用上述web service 的接口进行上传文件,我们需要这样增加参数 -mx80M ,

如:java -classpath your.lib -mx80 YourClass

经测试就可以传10M左右的附件。可以把80改大,就能上传更大的附件,当然,web service上传功能有限,

在使用中需要仔细斟酌
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐