Hi there,
I'm having some performance issues with the EJB plugin (and the
weblogic plugin, which uses the same code) when running it on a big
applications. As an example: generating the ejb jar for an
application with 200 EJB's takes about 25 minutes on a recent PC
(fast disk, no virus scanning etc).
Now, I don't think the problem is actually in this plugin because
most time seems to be spend reading classes from disk.
Example: in a construct like the following
<j:forEach var="class" items="${ejbUtil.getCMPBeans(metadata)}">
<weblogic-rdbms-bean>
<ejb-name>${ejbUtil.getEjbName(class)}</ejb-name>
...
</j:forEach>
The actual call to the getCMPBeans method (which returns 150 results)
is very fast, but after the return statement it takes about 3 minutes
before the getEjbName method is called the first time. I don't know
what's going on in between but looking at some snapshots of the
thread dump I see a lot threads like the ones below (notice the locks).
Any idea what might be going on?
Regards,
Ive
"main" prio=5 tid=0x000368f0 nid=0xf58 runnable [0x0007e000..0x0007fc3c]
at java.io.WinNTFileSystem.getBooleanAttributes(Native Method)
at java.io.File.exists(File.java:702)
at
org.apache.tools.ant.AntClassLoader.getResourceStream(AntClassLoader.java:729)
at
org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1150)
at
org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1107)
at
org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:977)
- locked <0x0533fb78> (a org.apache.tools.ant.loader.AntClassLoader2)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at
com.thoughtworks.qdox.model.ClassLibrary.getClass(ClassLibrary.java:59)
at
com.thoughtworks.qdox.model.ClassLibrary.contains(ClassLibrary.java:44)
at
com.thoughtworks.qdox.model.JavaSource.resolveTypeInternal(JavaSource.java:225)
at
com.thoughtworks.qdox.model.JavaSource.resolveType(JavaSource.java:152)
at
com.thoughtworks.qdox.model.JavaSource.resolveTypeInternal(JavaSource.java:235)
at
com.thoughtworks.qdox.model.JavaSource.resolveType(JavaSource.java:152)
at
com.thoughtworks.qdox.model.JavaClass.resolveType(JavaClass.java:210)
at com.thoughtworks.qdox.model.Type.isResolved(Type.java:48)
at com.thoughtworks.qdox.model.Type.getValue(Type.java:43)
at com.thoughtworks.qdox.model.Type.toString(Type.java:72)
at
com.thoughtworks.qdox.model.JavaMethod.writeBody(JavaMethod.java:67)
at
com.thoughtworks.qdox.model.JavaMethod.writeBody(JavaMethod.java:53)
at
com.thoughtworks.qdox.model.AbstractJavaEntity.write(AbstractJavaEntity.java:120)
at com.thoughtworks.qdox.model.JavaClass.writeBody(JavaClass.java:140)
at
com.thoughtworks.qdox.model.AbstractJavaEntity.write(AbstractJavaEntity.java:120)
at
com.thoughtworks.qdox.model.AbstractJavaEntity.toString(AbstractJavaEntity.java:114)
at java.lang.String.valueOf(String.java:2577)
at java.util.AbstractCollection.toString(AbstractCollection.java:454)
at java.lang.String.valueOf(String.java:2577)
at java.lang.StringBuffer.append(StringBuffer.java:220)
- locked <0x06bdc888> (a java.lang.StringBuffer)
at
org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:72)
at
org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:61)
at
org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(ExpressionSupport.java:94)
at
org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:89)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
"main" prio=5 tid=0x000368f0 nid=0xdc0 runnable [0x0007e000..0x0007fc3c]
at java.io.WinNTFileSystem.getBooleanAttributes(Native Method)
at java.io.File.exists(File.java:702)
at
org.apache.tools.ant.AntClassLoader.getResourceStream(AntClassLoader.java:729)
at
org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1150)
at
org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1107)
at
org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:977)
- locked <0x0533fb78> (a org.apache.tools.ant.loader.AntClassLoader2)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at
com.thoughtworks.qdox.model.ClassLibrary.getClass(ClassLibrary.java:59)
at
com.thoughtworks.qdox.model.ClassLibrary.contains(ClassLibrary.java:44)
at
com.thoughtworks.qdox.model.JavaSource.resolveTypeInternal(JavaSource.java:225)
at
com.thoughtworks.qdox.model.JavaSource.resolveType(JavaSource.java:152)
at
com.thoughtworks.qdox.model.JavaSource.resolveTypeInternal(JavaSource.java:235)
at
com.thoughtworks.qdox.model.JavaSource.resolveType(JavaSource.java:152)
at
com.thoughtworks.qdox.model.JavaSource.resolveTypeInternal(JavaSource.java:235)
at
com.thoughtworks.qdox.model.JavaSource.resolveType(JavaSource.java:152)
at
com.thoughtworks.qdox.model.JavaSource.resolveTypeInternal(JavaSource.java:235)
at
com.thoughtworks.qdox.model.JavaSource.resolveType(JavaSource.java:152)
at
com.thoughtworks.qdox.model.JavaSource.resolveTypeInternal(JavaSource.java:235)
at
com.thoughtworks.qdox.model.JavaSource.resolveType(JavaSource.java:152)
at
com.thoughtworks.qdox.model.JavaSource.resolveTypeInternal(JavaSource.java:235)
at
com.thoughtworks.qdox.model.JavaSource.resolveType(JavaSource.java:152)
at
com.thoughtworks.qdox.model.JavaSource.resolveTypeInternal(JavaSource.java:235)
at
com.thoughtworks.qdox.model.JavaSource.resolveType(JavaSource.java:152)
at
com.thoughtworks.qdox.model.JavaSource.resolveTypeInternal(JavaSource.java:235)
at
com.thoughtworks.qdox.model.JavaSource.resolveType(JavaSource.java:152)
at
com.thoughtworks.qdox.model.JavaSource.resolveTypeInternal(JavaSource.java:235)
at
com.thoughtworks.qdox.model.JavaSource.resolveType(JavaSource.java:152)
at
com.thoughtworks.qdox.model.JavaSource.resolveTypeInternal(JavaSource.java:235)
at
com.thoughtworks.qdox.model.JavaSource.resolveType(JavaSource.java:152)
at
com.thoughtworks.qdox.model.JavaSource.resolveTypeInternal(JavaSource.java:235)
at
com.thoughtworks.qdox.model.JavaSource.resolveType(JavaSource.java:152)
at
com.thoughtworks.qdox.model.JavaClass.resolveType(JavaClass.java:210)
at com.thoughtworks.qdox.model.Type.isResolved(Type.java:48)
at com.thoughtworks.qdox.model.Type.getValue(Type.java:43)
at com.thoughtworks.qdox.model.Type.toString(Type.java:72)
at
com.thoughtworks.qdox.model.JavaMethod.writeBody(JavaMethod.java:78)
at
com.thoughtworks.qdox.model.JavaMethod.writeBody(JavaMethod.java:53)
at
com.thoughtworks.qdox.model.AbstractJavaEntity.write(AbstractJavaEntity.java:120)
at com.thoughtworks.qdox.model.JavaClass.writeBody(JavaClass.java:140)
at
com.thoughtworks.qdox.model.AbstractJavaEntity.write(AbstractJavaEntity.java:120)
at
com.thoughtworks.qdox.model.AbstractJavaEntity.toString(AbstractJavaEntity.java:114)
at java.lang.String.valueOf(String.java:2577)
at java.util.AbstractCollection.toString(AbstractCollection.java:454)
at java.lang.String.valueOf(String.java:2577)
at java.lang.StringBuffer.append(StringBuffer.java:220)
- locked <0x06bee000> (a java.lang.StringBuffer)
at
org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:72)
at org.apache.commons.jelly.tags.core.SetTag.doTag(SetTag.java:84)
_______________________________________________
xdoclet-plugins-interest mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xdoclet-plugins-interest