Have a look at the archives of this list. It has been discussed already that you can use server mode similarly to embedded.

Your application may try first use existing database as client and if fails to connect it may start server.

Actually your second application instance would benefit from accessing as client because of derby server cache.

On Fri, Jun 5, 2009 at 10:51 PM, Ron Olson <tachoknight@gmail.com> wrote:
Hi all-

I am writing an application that uses embedded Derby for holding data
that the application collects/creates. It works great, I really like
Derby.

But, there's a problem: multiple application instances. The
application can be launched multiple times and each instance can
potentially create and retrieve data that would be stored/queried from
Derby. The problem is that the second instance fails to run correctly
because the database is locked by the first instance of the
application.

I can't create a Derby server, the application must be zero-setup and
zero-config; the application handles initial database creation, making
the tables, etc.

I've looked and there doesn't seem to be any info on this. Is this
even possible? If not, might anyone know what I might be able to use?
The original version of the program used SQLite, which keeps the
database in the single file. This was nice, but there isn't a pure
Java way to get at a SQLite db, and besides, I like the additional
functionality Derby gives me.

Thanks for any info,

Tacho