Suresh Thalamati wrote: > > I tried the following steps to create a simple readonly DB on file > system it seems to work fine for me. > > 1) shutdown the DB with no pending transaction (this step is same for > jars also), to avoid rollbacks during recovery on a readonly system. > 2) disable(deny) write permission for all the files/directories > under databases directory for the user id. that is starting the > DB. 3) derby store seems to recognize that database is read only > if is it unable to create/modify files under database directory. > 4) start each JVM that access the database with property > derby.storage.tempDirectory > (D"derby.storage.tempDirectory=c:/temp/x2") to specify different > temp directory for each instance , for the queries to create > temporary files in different directories. > > My guess is , you are not disabling the write permissions correctly > for the database directory on the OS. Otherwise it would not be > able to > boot in the in the write mode at all, because it needs to crearte > lock files, and log files ..etc to do anything. > You're right. My problem here is, as my own user, I'm setting the directory to read-only, but under Windows that doesn't stop apps from writing to the directory (whereas under Linux, for example, it would... unless that app went and set the directory writeable somehow again.) But... unfortunately, we want to support this scenario where one user creates some data, then sets their own data into read-only so that others can look at it. So I'll have to come up with some other workaround. I think my workaround might need to be some kind of classloader trick. If I load the database from the classpath, even if the actual data is on the filesystem, Derby should still open in read-only mode. The trick is going to be making a custom ClassLoader pointing to the parent directory of the database, and then somehow getting Derby to use that classpath instead of its normal one. I guess if I load Derby from that same ClassLoader, then it should work. Maybe there is another way though. I guess another really horrible way to do it would be to add every filesystem root to the classpath. It would be a bit heavy-handed, but I guess it would work as a last resort. :-) Daniel -- Daniel Noll NUIX Pty Ltd Level 8, 143 York Street, Sydney 2000 Phone: (02) 9283 9010 Fax: (02) 9283 9020 This message is intended only for the named recipient. If you are not the intended recipient you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this message or attachment is strictly prohibited.