On Tue, Jan 6, 2009 at 10:42 AM, imadhusudhanan <[email protected]> wrote: > I need suggestions. My application is a multi user webapp where we do > document management (upload, download etc). I propose few design ideas to use > jackrabbit. Pls do help me choose one also do put your ideas to use JR > effectively. > > 1) As this is a multi user environment, i consider spliting up the user > into workspaces and keeping the accessibility of the user to his/her > workspace. > 2) Can One repository one user a better idea .. ? can we have this kind of > design such that when a new user comes he will get a new repo.
Creating a new workspace is a rather "big" operation for "just" a new user, and your code gets tricky once it wants to access data from multiple users + some common content inside the same request if multiple workspaces get involved, because you need to know both workspace and path to identify a location. Also, you would have to implement access control in your application (ie. only user1 can write to workspace user1ws, only XY is allowed to create a new workspace, etc.), which is a feature that is already present in JCR but optimized for node-level ACLs. Using even multiple repositories won't work at all - or only with lots of efforts, since you need multiple Jackrabbit instances for those repositories (you'd need to write code to setup a new repository incl. configuration, database access, etc) - so this is too much work for simply a new user. IMHO the best way is to put all users into one workspace and use folder structures to separate them. A good analogy is the unix filesystem standard for modeling the repository, so you'd might have /home/user1, /home/user2 etc. Access rights can easily separate them from each other. See also rule #3 of David's Model "Workspaces are for clone(), merge() and update()": http://wiki.apache.org/jackrabbit/DavidsModel#head-ca639e0ee110b80e8277a50f9b9de092b5d86427 Regards, Alex -- Alexander Klimetschek [email protected]
