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]