Hi Torgeir,

There is a java.util.Timer deamon thread running in the background that prevents tomcat from garbage collecting the classes. I've created a jira issue:
http://issues.apache.org/jira/browse/JCR-600

I've however reproduced the issue a bit different. I deployed the jackrabbit-server.war in tomcat and then touched the web.xml file several times. After a while the JVM goes out of memory.

regards
 marcel

Torgeir Veimo wrote:
I'm getting out of permgen space with jackrabbit running under tomcat when the webapp has been reloaded enough times.

I've been trying to find the problem using jconsole, and it appears if I do a session.login(); and session.logout(), then a good number of classes will not be unloaded after the webapp has been reloaded. I'm using TransientRepository and the following repository.xml file:

<Repository>
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
        <param name="path" value="${rep.home}/repository"/>
    </FileSystem>
    <Security appName="Jackrabbit">
<AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager"/> <LoginModule class="org.apache.jackrabbit.core.security.SimpleLoginModule">
           <!-- anonymous user name ('anonymous' is the default value) -->
           <param name="anonymousId" value="anonymous"/>
        </LoginModule>
    </Security>
<Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default" />
    <Workspace name="${wsp.name}">
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="${wsp.home}"/>
        </FileSystem>
<PersistenceManager class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" /> <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
            <param name="path" value="${wsp.home}/index"/>
            <param name="autoRepair" value="true"/>
<param name="analyzer" value="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
            <param name="textFilterClasses"
value="org.apache.jackrabbit.core.query.HTMLTextFilter,org.apache.jackrabbit.core.query.XMLTextFilter"/>
        </SearchIndex>
    </Workspace>
    <Versioning rootPath="${rep.home}/versions">
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="${rep.home}/versions"/>
        </FileSystem>
<PersistenceManager class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" />
    </Versioning>
</Repository>

The code that is running and using Jackrabbit is limited to this:

String rootDirectory = (String) ConfigManager.getEnvironmentEntry("jackrabbit/directory"); String configFile = (String) ConfigManager.getEnvironmentEntry("jackrabbit/configfile");

URL url = event.getServletContext().getResource(configFile);
InputStream repositoryXml = event.getServletContext().getResourceAsStream(configFile); RepositoryConfig config = RepositoryConfig.create(repositoryXml, rootDirectory);
repository = new TransientRepository(config);

Session session = repository.login();
session.logout();


--Torgeir Veimo
[EMAIL PROTECTED]




Reply via email to