Question

I'm using wsimport in Java 1.6 (i.e. build 1.6.0-b105) on Windows XP 5.1 and I'm getting a out of memory exception. I used to JConsole and it seems wsimport process is maxing out at 64 MB. How can I increase the heap memory for wsimport?

Thanks,

Was it helpful?

Solution

For me setting environment variable WSIMPORT_OPTS (suggested in another answer, and apparently working in older versions of wsimport) does not seem to have any effect.

For me the following does work: instead of wsimport use

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

where $JAVA_HOME is the JDK (not JRE) root folder.

On this Java command line you can then add whatever JVM options you want. (I needed -Djavax.net.debug=all for SSL trust debugging.)

(I'm using Ubuntu with OpenJDK 6, package version 6b20-1.9.7-0ubuntu1.)

OTHER TIPS

wsimport accepts JVM arguments through the WSIMPORT_OPTS environment variable. So on Windows, try running "set WSIMPORT_OPTS=-Xmx512M" on the command-line before running wsimport to give the JVM 512Mb of heap.

If you're on a sufficiently modern JDK, you can use the -Xnocompile option and then supply the javac process with additional memory the usual way. (Try wsimport --help to see if your version supports the flag.)

wsimport seems to be able to pass through java arguments using the -J option:

wsimport -J-Xmx1024M ...

should work.

I figured to get past this issue. The easiest way is to use Netbeans (I'm using v6.8). Replace the default memory settings in Netbeans.conf under /etc directory like this: -J-Xms768m -J-Xmx768m -J-XX:PermSize=128m and follow the usual way to create Web Service Client following JAX WS in Netbeans. From JConsole, I see that loading ~18,500 classes overall in the memory tends to use between ~400MB to ~650MB. The # of classes generated based on my WSDL/Schemas are ~1500 classes. Hope this helps for someone running into a similar issue.

Just do as below(WINDOWS)

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

It should work

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top