2014-08-25 5 views
1

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

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

в

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) 

Аню одна есть идея

UPDATE: кажется, настройки MTOM не являются эффективными, когда мы запускаем программу в веб-логический контейнер! но все же я не могу найти решение

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

ответ

-1

Добавить этот дополнительный Java/JVM вариант в setDomainEnv.sh

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

коммутаторами WebLogic специфических (weblogic.net.http.HttpURLConnection) для обработчика HTTP солнца.

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

См:

Changing HttpURLConnection in running jvm

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

Спасибо!