2015-02-17 4 views
-2

Я написал простой сервис загрузки с JAX-WS RI. Классы создаются с помощью DataHandler типа XJC. При кодировании в реализацию услуги добавляются @MTOM и @StreamingAttachment. Теперь, когда клиент, клиент .NET, отправляет загруженные данные с помощью MTOM multipart/related и данные принимаются, но источником данных в обработчике данных является com.sun.istack.ByteArrayDataSource и java.io.ByteArrayInputStream. Это означает, что поток от клиента полностью потребляется в памяти. С большими файлами память взрывается.JAX-WS RI не передает данные от клиента

После нескольких исследований по поиску в Google я не нашел ничего, кроме некоторых вопросов, касающихся SOAP-обработчиков, которых у меня нет. Пока нет успеха.

Я начал сеанс отладки и выяснил, что данные внутри содержатся в StreamingDataHandler, который является рекомендуемым способом, но MtomCodecqueries длины насадки и вызывает основной объект данных к fully consume the input stream into memory. Конец истории.

Это кажется мне очень мозгом, потому что вся оптимизация от MTOM полностью исчезла.

Кто-нибудь знает об этом? В противном случае весь подход в JAX-WS RI кажется бесполезным, я должен прибегнуть к REST.

Это может быть дубликат MTOM not working when using SOAPHandler. Результат тот же.

Для чего это стоит, я на:

  • Tomcat 6.0.41
  • Java 7
  • JAXB 2.2.11
  • JAX-WS 2.2.10
+0

У меня есть ряд вопросов о 1), какие библиотеки вы используете, 2) среды клиента и сервера, 3) конкретные ошибки клиента и/или сервера, которые вы получаете. Но ... ПРЕДЛОЖЕНИЕ: Посмотрите, есть ли в этой ссылке полезные советы: [Оптимизация передачи двоичных данных с использованием MTOM/XOP] (http://docs.oracle.com/cd/E14571_01/web.1111/e13734/mtom.htm# WSADV130). В частности, может быть применимо нечто вроде '@StreamingAttachment (parseEagerly = true, memoryThreshold = 40000L). – FoggyDay

+0

@FoggyDay, 1) версии указаны в вопросе. 3) окна клиента, оконные окна dev. 3) Я получаю знаменитый «OutOfMemoryError». Я прочитал статью Oracle сразу после моих открытий и применил как аннотацию класса реализации службы. Никаких изменений не произошло. Я добавил '@StreamingAttachment (parseEagerly = true, memoryThreshold = 100_000L)'. Уложенный файл имеет 10 МБ. –

ответ

0

После дальнейших сеансов отладки и поиска в сети я обнаружил несколько сообщений JIRA и сообщений в блогах, которые в JAX-WS RI просты. Как только у вас есть обработчик, вы потерялись. Это относится к исходящим, но особенно к входящим потокам.

В конце JAX-WS RI является непригодным для использования для взаимодействия файлов. Я должен оценить Apache CXF в какой-то момент.

 Смежные вопросы

  • Нет связанных вопросов^_^