Очень простая передача файлов Glassfish - PullRequest
0 голосов
/ 08 марта 2012

Я пытаюсь объединить эти статьи: http://java.sun.com/developer/technicalArticles/RMI/rmi_corba/ и http://netbeans.org/kb/docs/javaee/entappclient.html, чтобы создать простое клиент-серверное приложение с использованием Glassfish, в котором я мог бы отправить файл с (локального) клиента в каталог на (локальном) сервере. Это что-то новое для меня, и я чувствую себя немного ошеломленным в данный момент. Любой совет, пожалуйста?

1 Ответ

2 голосов
/ 09 марта 2012

Вы как бы не в том районе. То, на что вы обращаете внимание - это поддержка сессий RPC. Теоретически вы можете отправить огромный массив байтов, но, скорее всего, это неразумно.

Что было бы предпочтительнее, так это создать простое веб-приложение и передать файл по HTTP.

Или вы можете попробовать использовать веб-службу WS, настроенную для MTOM - она ​​также будет обрабатывать большие полезные нагрузки. Вы можете посмотреть здесь статью о потоковых сообщениях MTOM. Это для WebLogic, но в основном это Sun JAX-WS, поэтому он должен работать на Glassfish из коробки.

Преимущество веб-службы заключается в том, что вы можете разместить ее в EJB, вместо того, чтобы развертывать отдельный WAR-файл для этого средства. То, что вы хотите остерегаться, это наличие полезной нагрузки, хранящейся в оперативной памяти. Например, если вы хотите отправить файл 10 ГБ, фактический трафик будет таким же, но сделано наивно, в конечном итоге все 10 ГБ останется в куче на клиенте и / или сервере, что, очевидно, нежелательно .

В конце концов, так или иначе будет работать. Недостатком веб-службы было то, что нужно копаться в темных углах стека веб-служб, где, как и в случае с универсальным сервлетом и веб-приложением, он более открыт, но вы, вероятно, будете погружаться во внутренние глубины HTTP, чтобы осуществить это. Например, если вы хотите использовать Apache HTTP Client, вам необходимо создать пользовательский RequestEntity для обработки потоковой передачи.

Все возможно, он просто меньше используется и не используется по умолчанию, из двух строк примера учебного кода.

...