我在GF3服务器和远程swing客户端上有ejb + JPA应用程序。我想通过无状态会话bean从客户端上传大型文件到服务器的数据库。 如何从远程swing客户端上传大型二进制数据?
答案 0 :(得分:1)
在Entity Bean中,您可以使用Blob字段类型& @Lob对其进行注释,将这些数据直接保存到数据库中。
// - 编辑零件
对于这么大的文件,您可以将文件内容提取到固定大小的字节数组中,这样客户端就不会耗尽内存。
客户方:
//-------------
remoteInterface.initializeArraySize(ARRAY_SIZE);
double splitIterations = ARRAY_SIZE/PERMISSIBLE_SIZE;
for(int i=0; i < splitIterations; i++){
// Get next byte[PERMISSIBLE_SIZE] from File
remoteInterface.appendToArray(splittedArray);
}
// Finally uploading after processing
remoteInterface.uploadFile
//---------------
服务器端:
@Stateless
public class FileUploadSessionBean implements FileUploadSessionBeanRemote {
private byte[] byteArray;
public void initializeArraySize(double arraySize){
// Initilialized only once
byteArray = new byteArray[arraySize];
}
public void appendToArray(byte[] splittedByteArray){
/* Append the splittedByteArray at end to byteArray each time
to build the original array
*/
}
public void uploadFile(){
// Convert byteArray to Blob & persist
}
}