I know. Try to do this in EjbJarPlugin
In weblogig plugin constructor.
Maybe the problem is that multiple plugin do "getMetadata" that parses all
files again.
Try this...
<component name="org.xdoclet.plugin.ejb.util.QDoxCachedMetadataProvider" />
And then
Change all the constructors from
public EjbJarXml.....Plugin(JellyTemplateEngine jellyTemplateEngine,
QDoxCapableMetadataProvider metadataProvider,
WriterMapper writerMapper, EjbConfig config)
To
public EjbJarXmlPlugin(JellyTemplateEngine jellyTemplateEngine,
QDoxCachedMetadataProvider metadataProvider,
WriterMapper writerMapper, EjbConfig config)
Does it help ?
Regards
Diogo
-----------------------------------
Diogo Bacelar Quintela
EF - Tecnologias de Informação, Lda.
Av. António Serpa, 26 - 4º Dto.
1050-027 Lisboa, Portugal
Tel: (+351) 217 827 800
Fax: (+351) 217 827 830
Email: [EMAIL PROTECTED]
PGP: 0xF51A5AB9
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf
> Of Ive Hellemans
> Sent: quinta-feira, 8 de Junho de 2006 21:03
> To: [email protected]
> Subject: [xdoclet-plugins-interest] Performance issue with classloading?
>
>
> 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.j
> ava: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.ja
> va:120)
> at
> com.thoughtworks.qdox.model.JavaClass.writeBody(JavaClass.java:140)
> at
> com.thoughtworks.qdox.model.AbstractJavaEntity.write(AbstractJavaEntity.ja
> va: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(JexlExpre
> ssion.java:72)
> at
> org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(Expr
> essionSupport.java:61)
> at
> org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(E
> xpressionSupport.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.j
> ava: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.ja
> va:120)
> at
> com.thoughtworks.qdox.model.JavaClass.writeBody(JavaClass.java:140)
> at
> com.thoughtworks.qdox.model.AbstractJavaEntity.write(AbstractJavaEntity.ja
> va: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(JexlExpre
> ssion.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
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ xdoclet-plugins-interest mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/xdoclet-plugins-interest
