Вы можете перенести большие файлы через границу EJB с помощью интерфейса Externalizable inteface (расширение Serializable). Это то, что я предлагаю:
- Написать класс, например
ExternalFile
, что обертывания/содержит File
объект
- сделать этот класс реализовать
Externalizable
- реализации
writeExternal
писать содержащийся файл в заданном выходном потоке
- Внесите
readExternal
, чтобы прочитать данный входной поток в новый временный файл
- Рассмотрите возможность добавления атрибутов размера и имени в свой класс ExternalFile, чтобы помочь получателю решить, что делать (и rem ember, чтобы написать их и прочитать их через методы writeExternal и readExternal).
Шаг 3 - это ваш этап сериализации, когда вы отправляете свой объект (файл) из слоя EJB. Шаг 4 - это этап де-сериализации, который получает файл в виде потока данных и может делать все, что захочет, с потоком. Мой 4 предлагает записать его в временный файл, но вы можете передать этот поток напрямую через сервлет в любой другой пункт назначения.
Надеюсь, что это поможет.