first
you should look what an embedded database means, it means that database will run on the same JVM that you application run. so , it will use shared resources....
usually we use embedded database for cases like :
1-providing application that works standalone with no need to setup another databas
2-we do not need full featured database server , features like recovery , transaction isolation ,clustering , ....
also for Demo-ing an application you can use an embeded database
for storing some temp data during you application work, ....
using an embedded database for a web application could bring some problems because , Database will start/stop with your application so if the container crashed it is possible that you lose some data , also using embedde database will limit your application scalablity because you are in one jvm with you database.
you can safely use derby as embeded database with you web application if ,
it is not high load , your data are not too much important , you do not need high availablity ....
ps , derby is an exception between embedded databases. it support both recovery and transaction, isolation... with an small footprint.
list of almost all Open source
java database which some of them could be used in embedded mode
http://www.java-source.net/open-source/database-engines