I think, in a Java client connecting directly to the EJB, the Business delegate handles all the connections and the business tier details. This can very well do a client side caching as Java client can have the session handling locally. In this case Java client connects to a EJB through a Stateless session facade implementing remote interface.
For the web user, if you use plan to share JVM for the servlet container and the EJB container, same server, then the Servlet client can have a seperate BD that connects to the EJB via a statefull session bean,( session stored in the business tier). Clearly the BD for this scenario cannot be the same.
On the otherhand, if the client talks to the Business tier via a servlet front controller, then I don't see why one would need a seperate BD for two interfaces. I would rather use a HTTP proxy at the client tier and the BD would be the same for both the web client and the java client at the web tier.