Исключение OOM с клиентом MTOM

Я работаю над передачей файла большого размера и, наконец, закончил реализацию MTOM. мы создали веб-службу и клиент с поддержкой MTOM и протестировали клиент как простую программу Java. и мы смогли успешно отправить файл размером 1 ГБ. главное здесь, что куча на клиентском месте даже не увеличивалась более чем на 70 МБ.

Но когда я попытался инициировать тот же вызов из контейнера веб-логики (означает, что создал веб-клиент), мы получили исключение OOM ниже.

at

weblogic.utils.io.UnsyncByteArrayOutputStream.resizeBuffer(UnsyncByteArrayOutputStream.java:59)
      at weblogic.utils.io.UnsyncByteArrayOutputStream.write(UnsyncByteArrayOutputStream.java:89)
      at javax.activation.DataHandler.writeTo(DataHandler.java:293)
      at com.sun.xml.ws.encoding.MtomCodec$ByteArrayBuffer.write(MtomCodec.java:196)
      at com.sun.xml.ws.encoding.MtomCodec.encode(MtomCodec.java:163)
      at com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:258)
      at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:142)
      at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:86)
      at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
      at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
      at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
      at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
      at com.sun.xml.ws.client.Stub.process(Stub.java:248)
      at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:135)
      at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:109)
      at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
      at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)
      at $Proxy101.uploadFile(Unknown Source)

у кого-нибудь есть идеи

ОБНОВЛЕНИЕ: кажется, что настройки MTOM неэффективны, когда мы запускаем программу в контейнере веб-логики! но все же я не могу найти решение

ОБНОВЛЕНИЕ 2: кажется, что weblogic не поддерживает потоковую передачу! Я обновлю версию weblogic и обновлю тикет, пока они не пожелают мне удачи..


person Pedantic    schedule 25.08.2014    source источник
comment
не могли бы вы поделиться примером кода? Я пытаюсь написать то же самое, но по неизвестной причине клиент буферизует все данные в памяти.   -  person yolob 21    schedule 28.04.2020


Ответы (1)


Добавьте эту дополнительную опцию Java/JVM в setDomainEnv.sh

EXTRA_JAVA_PROPERTIES="-DUseSunHttpHandler=true ${EXTRA_JAVA_PROPERTIES}"
export EXTRA_JAVA_PROPERTIES

переключается со специфичного для веблогики (weblogic.net.http.HttpURLConnection) на HTTP-обработчик Sun.

Это решило мою проблему.

Ссылаться:

Изменение HttpURLConnection при запуске jvm

http://atgtipsandtweaks.blogspot.com/2011/11/weblogicjava-httphandler-issues.html

Спасибо!

person user1559089    schedule 22.02.2015