2010-01-27 3 views
2

Я использую wsimport в Java 1.6 (т. Е. Build 1.6.0-b105) в Windows XP 5.1, и я получаю исключение из памяти. Я использовал JConsole, и кажется, что процесс wsimport максимизируется на 64 МБ. Как увеличить память кучи для wsimport?wsimport из памяти проблемы в Java 1.6

Спасибо,

ответ

2

Для меня настройка переменной среды WSIMPORT_OPTS (предлагаемая в другом ответе и, по-видимому, работающая в более старых версиях wsimport), кажется, не имеет никакого эффекта.

Для меня следующая делает работы: вместо wsimport использование

java -classpath $JAVA_HOME/lib/tools.jar com.sun.tools.internal.ws.WsImport

где $JAVA_HOME является JDK (не JRE) в корневой папке.

В этой командной строке Java вы можете добавить все необходимые параметры JVM. (Мне нужно было -Djavax.net.debug=all для доверия отладки SSL.)

(я использую Ubuntu с OpenJDK 6, версия пакета 6b20-1.9.7-0ubuntu1.)

1

wsimport принимает аргументы виртуальной машины Java с помощью переменной окружения WSIMPORT_OPTS. Поэтому в Windows попробуйте запустить «WSIMPORT_OPTS = -Xmx512M» в командной строке перед запуском wsimport, чтобы предоставить JVM 512Mb кучи.

+0

Установка аргумента как WSIMPORT_OPTS = -Xmx512M не помогает. Память через JConsole по-прежнему 64 МБ, и я все еще получаю ошибку из памяти. –

+0

Странно, вы находитесь в том же самом сеансе консоли (т. Е. Запускаете команду SET в том же окне, что и команда wsimport)? Попробуйте проверить, что вы файл wsimport.bat и добавили флаг -Xmx непосредственно после% JAVA% в разделе «: LAUNCH». ("% JAVA% -Xmx512M% WSIMPORT_OPTS% -jar"% JAXWS_HOME% \ lib \ jaxws-tools.jar "% *") – DaGGeRRz

+0

С Java 1.6 JAX WS поставляется в комплекте с rt.jar, а wsimport поставляется в виде исполняемого файла, такого как javac или Ява. Однако нет wsimport.bat, создание одного и вызов wsimport с настройкой -Xmx не работает. Не уверен, как передать параметры памяти в файл wsimport.exe –

0

Я решил закончить эту проблему. Самый простой способ - использовать Netbeans (я использую v6.8). Замените настройки памяти по умолчанию в Netbeans.conf в каталоге/etc следующим образом: -J-Xms768m -J-Xmx768m -J-XX: PermSize = 128 м и следуйте обычным способом создания клиента веб-сервиса после JAX WS в Netbeans. Из JConsole я вижу, что загрузка ~ 18 500 классов в целом в памяти имеет тенденцию использовать от ~ 400 МБ до ~ 650 МБ. # Классов, созданных на основе моего WSDL/Schemas, составляет ~ 1500 классов. Надеюсь, это поможет кому-то столкнуться с подобной проблемой.

1

Если вы используете достаточно современный JDK, вы можете использовать опцию -Xnocompile, а затем поставлять процесс javac с дополнительной памятью обычным способом. (Попробуйте wsimport --help, чтобы узнать, поддерживает ли ваша версия флаг.)

0

Просто сделайте, как показано ниже (WINDOWS)

set CLASSPATH=<JAVA_HOME>\lib\tools.jar;%classpath% 
java -Xmx1024m com.sun.tools.internal.ws.WsImport <YOUR_WSDL> 

Он должен работать

1

wsimport, кажется, быть в состоянии пройти через аргументы ява, используя опцию -J:

wsimport -J-Xmx1024M ... 

должен работать.

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