For some simplicity, I'd consider using Hibernate together with Derby.
Derby is an embedded database that can run from within the WEB-INF/lib
folder. Hibernate allows you to materialize and persist your data more
or less automatically without too much effort. You can use SQL or the
Hibernate approach to persist data.
If you use database locking in the backend, your servlets can 'share'
information and it keeps the synchronization code within the database
(if you use singletons and synchronized for example, you always lock
out others even if they are not related).
Good luck!
Rgds,
Chiraz