У нас возникла проблема при попытке сгенерировать и использовать действительно большой прокси-файл (для справки - из MSCRM Dynamics WSDL). Прежде чем я вернусь к вопросу: у нас это уже работает в автономном приложении, использующем NetBeans. Мы сгенерировали все прокси-файлы, используя «WSDL2Java -uri и т. Д.». Познакомился с некоторыми из веб-методов и успешно получил ответы и т.д.
Теперь, когда мы пытаемся интегрировать его в целевой проект в eclipse (запущенном через play framework), он выдает ошибки из памяти. Это происходит еще до того, как я попытаюсь позвонить на любой веб-сервис. Я читал о проблемах с памятью в Play Framework и Axis2, но пока не нашел решения этой проблемы. Я пытался поднять память при игре, но это не помогло. Я работаю на Windows, но, несмотря на то, что у меня 64-битная ОС, кажется, можно выделить только 1,5 ГБ для пространства кучи воспроизведения:
play clean
play run . -Xms1536m
Я думал, что этого будет достаточно, но, увы, нет!
Для справки: трассировка стека:
An unexpected error occured caused by exception OutOfMemoryError: Java heap space
play.exceptions.UnexpectedException: Unexpected Error
at play.Invoker$Invocation.onException(Invoker.java:244)
at play.Invoker$Invocation.run(Invoker.java:286)
at Invocation.HTTP Request(Play!) Caused by: java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at java.lang.StringBuffer.toString(Unknown Source)
at java.io.StringWriter.toString(Unknown Source)
at org.apache.commons.io.IOUtils.toString(IOUtils.java:383)
at play.libs.IO.readContentAsString(IO.java:60)
at play.libs.IO.readContentAsString(IO.java:49)
at play.vfs.VirtualFile.contentAsString(VirtualFile.java:178)
at play.classloading.ApplicationClasses$ApplicationClass.refresh(ApplicationClasses.java:199)
at play.classloading.ApplicationClasses$ApplicationClass.<init>(ApplicationClasses.java:191)
at play.classloading.ApplicationClasses.getApplicationClass(ApplicationClasses.java:49)
at play.classloading.ApplicationCompiler$2.acceptResult(ApplicationCompiler.java:266)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:478)
at play.classloading.ApplicationCompiler.compile(ApplicationCompiler.java:282)
at play.classloading.ApplicationClassloader.getAllClasses(ApplicationClassloader.java:424)
at play.Play.start(Play.java:505)
at play.Play.detectChanges(Play.java:618)
at play.Invoker$Invocation.init(Invoker.java:198)
... 1 more
Любая помощь или мысли будут с благодарностью!
Обновление 1
Следуя совету от FloppyDisk, я проверил / изменил следующее, чтобы увидеть, помогает ли это:
Во-первых, используя сообщение Как узнать, запущен ли я в 64-битной JVM или 32-битной JVM (изнутри программы)? , я запустил следующее, чтобы убедиться работает 64 бит JDK:
java -d64 -version
Который не выдал никаких ошибок. Затем я попытался изменить настройки памяти в Eclipse следующим образом:
-vmargs
-Xms512m
-Xmx1024m
-XX:MaxPermSize=512m
Перезапустил затмение и повторил попытку. К сожалению, та же проблема все еще существовала.
Наконец, я попытался ввести уменьшенное кэширование на wsdl, используя конфигурацию Axis2. Изменен Axis2.xml для включения следующего:
<parameter name="reduceWSDLMemoryCache">true</parameter>
К сожалению, та же проблема сохраняется.