DEVCON 2026    |    2-5 November 2026 – QEII Centre – London, UK    |    Register now! 

Blogs

JAXB JVM Properties

If you're using JAXB, you'll want to know about these JVM properties.

David H Nebinger
David H Nebinger
قراءة دقيقة

Quite some time ago I was working with a client that had built web service clients as OSGi modules and leveraged JAXB.

During load testing, we found that after many hours of heavy use, the Liferay nodes would stop serving traffic and, for all intents and purposes, would die.  Threads would get hung, blocked waiting to load a class from the web service client, and eventually most of the threads would enter a deadlock state and the node just couldn't recover on its own. The only option we had was to restart the node.

We eventually found and solved the problem and I tucked the details away in case I ran into the issue again. I didn't blog about it at the time because, well, it was the first and only time I had encountered the issue.

Recently though a coworker had run into a similar problem. He too was using JAXB via CXF and was getting blocked threads waiting for the class loader to load a class from the web service client. In his case he was using CXF in a Spring war, but since these wars are converted into OSGi bundles, it was still going to be a problem.

I dredged up and shared the info with him. He did some thorough testing and added an additional property that also helped.

Long story short, if you are doing JAXB web service client code in your OSGi modules, you need to add the following JVM parameters to your app server command line:

  -Dcom.sun.xml.bind.v2.runtime.JAXBContextImpl.fastBoot=true 
  -Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true

That's pretty much it.

If you are currently using JAXB but are not noticing any issues, I think you should still add these properties for the JVM. When I encountered this issue, we were running load tests simulating a heavy concurrent load; if you haven't encountered it yet yourself, it is likely because you haven't yet hit the threshold where things start to fall apart. You wouldn't want to wait until you're under that kind of load to hit this problem as that's the worst time to try to deal with stability issues.  I'd recommend adding the properties right away and just avoid the issue altogether.

تعليقات الصفحة

Hi

 

Which JDK version are you using?

 

For JDK8 the properties should be:

 

-Dcom.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.fastBoot=true

-Dcom.sun.xml.internal.bind.v2.bytecode.ClassTailor.noOptimize=true

 

It seems that those packages get refactored (note the added '.internal' package)

 

Regards.

 

Related Assets...

لا توجد نتائج

More Blog Entries...

David H Nebinger
سبتمبر ٢٨, ٢٠٢٦
David H Nebinger
سبتمبر ٢٥, ٢٠٢٦
David H Nebinger
سبتمبر ٢٣, ٢٠٢٦