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="&lt;collection/&gt;" 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.

Reply via email to