Some initial feedback. Posting on the users list in case anyone else was interested.
Last friday, I burned to CD all my data contained under the /store/content and
/store/metadata folders for testing read-only access.
This morning, I think I found one of the first challenges to overcome to support
HSM/CD/DVD read-only support - the 'scope' xml file that is (attempted) generated in
the /store/metadata folder.
I used the TxXMLDescriptor and TxFileContent type tags to keep track of items that are
written to the read-only CD (pointing the workpath's to the local harddrive). In the
domain.xml file, I added the store fine, and set it's scope to 'store78' and added the
objectnode pointing to that scope under the <data> section. Slide attempted to create
a /store/metadata/store78.def. xml file that was caught in the TxXMLDescriptor work
folder like this:
======
<?xml version="1.0" encoding="UTF-8"?>
<data>
<objectnode classname="org.apache.slide.structure.SubjectNode" uri="/store78">
<children />
<parents>
<parent name="store78" uuri="/" />
</parents>
<links />
</objectnode>
<permissions>
<permission subjectUri="unauthenticated" actionUri="all" inheritable="true"
negative="false" />
</permissions>
<locks />
<revisionsHistory initialRevision="1.0" useVersioning="false">
<branches>
<branch name="main" lastestRevision="1.0" />
</branches>
<revisions>
<branch start="1.0" />
</revisions>
</revisionsHistory>
<descriptor>
<revisions branchName="main" number="1.0">
<labels />
<properties>
<property name="modificationdate" namespace="DAV:" value="2004-10-11T17:47:57Z"
type="" protected="true">
<permissions />
</property>
<property name="resourcetype" namespace="DAV:" value="<collection/>" type=""
protected="true">
<permissions />
</property>
<property name="source" namespace="DAV:" value="" type="" protected="true">
<permissions />
</property>
<property name="displayname" namespace="DAV:" value="store78" type=""
protected="false">
<permissions />
</property>
<property name="getlastmodified" namespace="DAV:" value="Mon, 11 Oct 2004 17:47:57
GMT" type="" protected="true">
<permissions />
</property>
<property name="creationdate" namespace="DAV:" value="2004-10-11T17:47:57Z" type=""
protected="true">
<permissions />
</property>
<property name="getcontentlength" namespace="DAV:" value="0" type="" protected="true">
<permissions />
</property>
<property name="modificationuser" namespace="DAV:" value="unauthenticated" type=""
protected="true">
<permissions />
</property>
</properties>
</revisions>
</descriptor>
</data>
=======
Since it could not be written to the actual /store/metadata location, Tomcat/Slide
errored with the following error (e: drive was the burned cdrom):
=======
11 Oct 2004 13:47:57 - org.apache.commons.transaction.file.FileResourceManager -
EMERGENCY - Fatal error during critical commit/rollback of transaction main-109
7516876613-1, setting database to dirty.
11 Oct 2004 13:47:57 - org.apache.commons.transaction.file.FileResourceManager -
EMERGENCY - org.apache.commons.transaction.file.ResourceManagerSystemException:
main-1097516876613-1: Commit failed (ERR_SYSTEM)
Caused by: java.io.FileNotFoundException: e:\store\metadata\store78.def.xml (Acc
ess is denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
at org.apache.commons.transaction.util.FileHelper.copy(FileHelper.java:1
83)
at org.apache.commons.transaction.util.FileHelper.moveRec(FileHelper.jav
a:125)
at org.apache.commons.transaction.util.FileHelper.moveRec(FileHelper.jav
a:111)
at org.apache.commons.transaction.file.FileResourceManager$TransactionCo
ntext.commit(FileResourceManager.java:1348)
at org.apache.commons.transaction.file.FileResourceManager.commitTransac
tion(FileResourceManager.java:608)
at org.apache.slide.store.txfile.AbstractTxFileStoreService.commit(Abstr
actTxFileStoreService.java:253)
at org.apache.slide.store.txfile.TxXMLFileDescriptorsStore.commit(TxXMLF
ileDescriptorsStore.java:395)
at org.apache.slide.transaction.SlideTransaction.commit(SlideTransaction
.java:300)
at org.apache.slide.transaction.SlideTransactionManager.commit(SlideTran
sactionManager.java:186)
at org.apache.slide.common.Namespace.loadBaseData(Namespace.java:821)
at org.apache.slide.common.Domain.initNamespace(Domain.java:845)
at org.apache.slide.common.Domain.init(Domain.java:432)
at org.apache.slide.common.Domain.init(Domain.java:366)
at org.apache.slide.common.Domain.init(Domain.java:329)
at org.apache.slide.webdav.WebdavServlet.init(WebdavServlet.java:263)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
at org.apache.slide.webdav.WebdavServlet.init(WebdavServlet.java:205)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.
java:1029)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:86
2)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContex
t.java:4013)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4
357)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase
.java:823)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:80
7)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDep
loyer.java:277)
at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.j
ava:701)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:432
)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java
:349)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
eSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478
)
at org.apache.catalina.core.StandardService.start(StandardService.java:4
80)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:231
3)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
=======
So the big question is - what files are created/modified when trying to integrate a
read-only store into an existing environment, and would it be possible to configure
those files to a different location (example: the <-scope->.def.xml files) in a
standard fashion?
thanky!
-D
p.s. I recommend adding in another attribute to the <scope> tag to configure where it
should store that file, but that is only if <scope> is the only file created/changed
in a read-only store during integration.