创建 blob - java 堆 space
creating blob - java heap space
我正在将 multipartFile 从控制器传递到服务并在服务内部传递
尝试从此 multipartFile 创建 Blob。问题是我使用的文件非常大 (4-5 gb),我收到 "java heap space" 错误(不,我无法为应用程序分配更多内存)
有什么方法可以流式传输吗?
我正在使用 java 7
服务代码:
def uploadFile(MultipartFile file){
Sql sql = utilsService.retrieveSQLFromDataSource()
Blob blob = dataSource.connection.createBlob()
blob.setBytes(1, file.bytes)
...
}
这是相关部分 - 我通过重复写入一个小块来模拟一个大 BLOB。
重要的部分是创建 temporary BLOB。
def bytes = data.getBytes()
BLOB tempBlob = BLOB.createTemporary(con, true, BLOB.DURATION_SESSION);
def os = tempBlob.setBinaryStream(0);
20000.times {
os.write(bytes,0,bytes.size())
}
os.close()
int len = tempBlob.length()
println "length $len"
stmt.setBLOB (1,tempBlob)
stmt.execute()
我正在将 multipartFile 从控制器传递到服务并在服务内部传递 尝试从此 multipartFile 创建 Blob。问题是我使用的文件非常大 (4-5 gb),我收到 "java heap space" 错误(不,我无法为应用程序分配更多内存)
有什么方法可以流式传输吗? 我正在使用 java 7
服务代码:
def uploadFile(MultipartFile file){
Sql sql = utilsService.retrieveSQLFromDataSource()
Blob blob = dataSource.connection.createBlob()
blob.setBytes(1, file.bytes)
...
}
这是相关部分 - 我通过重复写入一个小块来模拟一个大 BLOB。
重要的部分是创建 temporary BLOB。
def bytes = data.getBytes()
BLOB tempBlob = BLOB.createTemporary(con, true, BLOB.DURATION_SESSION);
def os = tempBlob.setBinaryStream(0);
20000.times {
os.write(bytes,0,bytes.size())
}
os.close()
int len = tempBlob.length()
println "length $len"
stmt.setBLOB (1,tempBlob)
stmt.execute()