Большой бинарный файл в jpa - PullRequest
1 голос
/ 21 ноября 2010

У меня есть приложение ejb + JPA на сервере GF3 и клиент удаленного свинга. Я хочу загрузить большие файлы из клиента в базу данных сервера через сессионный компонент без сохранения состояния. Как загрузить большие двоичные данные с удаленного клиента свинга?

1 Ответ

1 голос
/ 21 ноября 2010

В 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...