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

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
xdoclet-plugins-interest mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xdoclet-plugins-interest

Reply via email to