Sep 27th, 2011, 10:13 AM
Swing Application Webstart Performance Problem with AOP
this is not a question to the forum but the answer to a problem we had. I hope i helps others stumbling about similar problem.
Currently we develop a client-server application with a client being coded in swing. The distribution of the cleint is done via webstart.
Recently we introduced Spring 3.0.5 into the client to enable us to do some DI, maybe some AOP in the future.
We were lazy and just imported almost all spring jars into our client (JNLP). Starting the client from the eclipse IDE for development worked fine and acceptably fast. When we moved over to test the client in a Webstart environment we had to suffer from an additional startup time of 1 minute.
The Code we use is:
GenericApplicationContext applicationContext = new GenericApplicationContext();
XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(applicationContext);
The instantiation of the GenericApplicationContext alone took about a minute.
Doing some checks with a profiler and wireshark we found out that spring constantly tried to do "things" with aop and aspects accessing the jars on the server in the instantiation process.
So we kicked out org.springframework.aop-3.0.5.RELEASE.jar and org.springframework.aspects-3.0.5.RELEASE.jar from our client-jnlp and we got our performance back. The instantiation of the GenericApplicationContext only took a few ms again.
In addition to that we learned that it would be problematic to use AOP anyway (in a Webstart Environment), since the dynamic generation of classes (stubs) for AOP causes trouble with the rest of our classes all being in jars that are signed by us.
The AOP functionality will not be possible for us, but so far we can live with that.
Aug 30th, 2012, 04:37 AM
this is not a prompt response. But better late than never.
I would like to ensure you that we suffered from the very same problem as you. We investigated the problem a little and this is what we have found:
We are not sure about the third point, however.