Hi,
I have problems with running 2 jackrabbit instances in cluster. Hope you
could help.
I have 2 copies of tomcat, configured to run on different ports, with
jackrabbit app within each.
I use jackrabbit webapp 1.4.
repository.xml is the next
****************************************************************************************************
<?xml version="1.0"?>
<Repository>
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url"
value="jdbc:mysql://localhost:3306/jack?useUnicode=true&characterEncoding=UTF-8"/>
<param name="user" value="root" />
<param name="password" value="" />
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="J_R_FS_"/>
</FileSystem>
<Security appName="Jackrabbit">
<AccessManager
class="org.apache.jackrabbit.core.security.SimpleAccessManager">
</AccessManager>
<LoginModule
class="org.apache.jackrabbit.core.security.SimpleLoginModule">
<param name="anonymousId" value="anonymous"/>
</LoginModule>
</Security>
<Workspaces rootPath="${rep.home}/workspaces"
defaultWorkspace="default"/>
<Workspace name="Install submodules">
<PersistenceManager
class="org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager">
<param name="driver" value="com.mysql.jdbc.Driver" />
<param name="url"
value="jdbc:mysql://localhost:3306/jack?useUnicode=true&characterEncoding=UTF-8"/>
<param name="schema" value="mysql" />
<param name="user" value="root" />
<param name="password" value="" />
<param name="schemaObjectPrefix" value="J_FS_"/>
<param name="externalBLOBs" value="true" />
</PersistenceManager>
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url"
value="jdbc:mysql://localhost:3306/jack?useUnicode=true&characterEncoding=UTF-8"/>
<param name="user" value="root" />
<param name="password" value="" />
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="J_FS_"/>
</FileSystem>
<SearchIndex
class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${wsp.home}/index"/>
</SearchIndex>
</Workspace>
<Versioning rootPath="${rep.home}/version">
<PersistenceManager
class="org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager">
<param name="driver" value="com.mysql.jdbc.Driver" />
<param name="url"
value="jdbc:mysql://localhost:3306/jack?useUnicode=true&characterEncoding=UTF-8"/>
<param name="schema" value="mysql" />
<param name="user" value="root" />
<param name="password" value="" />
<param name="schemaObjectPrefix" value="J_V_FS_"/>
<param name="externalBLOBs" value="true" />
</PersistenceManager>
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url"
value="jdbc:mysql://localhost:3306/jack?useUnicode=true&characterEncoding=UTF-8"/>
<param name="user" value="root" />
<param name="password" value="" />
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="J_V_FS_"/>
</FileSystem>
</Versioning>
<SearchIndex
class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${rep.home}/repository/index"/>
</SearchIndex>
<Cluster id="node_1" syncDelay="5">
<Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
<param name="revision" value="${rep.home}/revision"/>
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url"
value="jdbc:mysql://localhost:3306/jack?useUnicode=true&characterEncoding=UTF-8"/>
<param name="user" value="root" />
<param name="password" value="" />
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="J_C_"/>
</Journal>
</Cluster>
</Repository>
****************************************************************************************************
Configuration for the second instance is the same, only cluster id is
"node_2".
Tomcats starts without errors. Then I add a file to the first instance using
WebDAV (http://localhost:8080/jackrabbit/repository/default/),
and expect to see the same file in the WebDAV folder of another instance (
http://localhost:8081/jackrabbit/repository/default/). But it doesn't
appear. Actually it appears, but only after restart of the tomcat. Moreover,
when I hit ctrl-R in the webdav folder of the secod instance, i recieve next
exception in the log:
22.08.2008 11:51:52 *ERROR* DatabasePersistenceManager: failed to read
property state: cb280451-187c-4d20-89e1-c9e650f79
1d2/{http://www.jcp.org/jcr/1.0}data
<http://www.jcp.org/jcr/1.0%7Ddata>(DatabasePersistenceManager.java,
line 405)
java.io.IOException: /cb/28/0451187c4d2089e1c9e650f791d2/%7bhttp%3a%2f%
2fwww.jcp.org%2fjcr%2f1.0%7ddata.0.bin: the speci
fied resource does not exist
at
org.apache.jackrabbit.core.value.BLOBInResource.<init>(BLOBInResource.java:63)
at
org.apache.jackrabbit.core.value.BLOBInResource.getInstance(BLOBInResource.java:80)
at
org.apache.jackrabbit.core.value.InternalValue.create(InternalValue.java:281)
at
org.apache.jackrabbit.core.persistence.util.Serializer.deserialize(Serializer.java:292)
at
org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.load(DatabasePersistenceManager.java:397
)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.loadItemState(SharedItemStateManager.java:1177)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.getNonVirtualItemState(SharedItemStateManager.java:11
02)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState(SharedItemStateManager.java:249)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.getPropertyState(LocalItemStateManager.java:118)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState(LocalItemStateManager.java:160)
at
org.apache.jackrabbit.core.state.XAItemStateManager.getItemState(XAItemStateManager.java:243)
at
org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState(SessionItemStateManager.java:186)
at
org.apache.jackrabbit.core.ItemManager.createItemInstance(ItemManager.java:564)
at
org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:395)
at
org.apache.jackrabbit.core.NodeImpl.getProperty(NodeImpl.java:2548)
at
org.apache.jackrabbit.server.io.DefaultHandler.exportProperties(DefaultHandler.java:435)
at
org.apache.jackrabbit.server.io.DefaultHandler.exportProperties(DefaultHandler.java:535)
at
org.apache.jackrabbit.server.io.PropertyManagerImpl.exportProperties(PropertyManagerImpl.java:59)
at
org.apache.jackrabbit.webdav.simple.DavResourceImpl.initProperties(DavResourceImpl.java:326)
at
org.apache.jackrabbit.webdav.simple.DeltaVResourceImpl.initProperties(DeltaVResourceImpl.java:249)
at
org.apache.jackrabbit.webdav.simple.VersionControlledResourceImpl.initProperties(VersionControlledResourceImp
l.java:320)
at
org.apache.jackrabbit.webdav.simple.DavResourceImpl.getProperties(DavResourceImpl.java:306)
at
org.apache.jackrabbit.webdav.MultiStatusResponse.<init>(MultiStatusResponse.java:180)
at
org.apache.jackrabbit.webdav.MultiStatus.addResourceProperties(MultiStatus.java:62)
at
org.apache.jackrabbit.webdav.MultiStatus.addResourceProperties(MultiStatus.java:66)
at
org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.doPropFind(AbstractWebdavServlet.java:434)
at
org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.execute(AbstractWebdavServlet.java:231)
at
org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.service(AbstractWebdavServlet.java:192)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Any ideas, recomendations?
Thank you.
John.