james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jean T. Anderson" <...@bristowhill.com>
Subject Re: Problems using Derby for stores
Date Sun, 13 Nov 2005 18:31:25 GMT
Bernd Fondermann wrote:
> ... 
> -D properties are indeed recognized at least for opening a socket for 
> derby:
> Added -Dderby.drda.startNetworkServer=true to the phoenix.sh command 
> line plus put derby[net|tools|client].jar into the lib directory 
> containing derby.jar.
> now the embedded db could be connected using the derby command line 
> interface:
> ij> connect 'jdbc:derby://localhost/../apps/james/var/derbydb'

I wonder if there might be a little confusion regarding the use of 
"embedded" (not for Bernd, but possibly for some other readers of these 
posts now or who come along later). A given Derby database can be 
accessed with the Embedded JDBC driver or with the Derby Network Server 
+ client JDBC driver.  Below is more explanation of "embedded" and 
"network server" for anyone who could use the clarification, plus a 
third option that combines the two (and which I suspect Bernd is using).

(1) Embedded

derby.jar includes the embedded jdbc driver. When used, the derby engine 
runs as part of the application (in the same JVM as the application).

The ij connection URL that uses the embedded driver would look like this:

    ij> connect 'jdbc:derby:../apps/james/var/derbydb'

In this case the physical location of the database is relative to the 
directory in which ij was started up (and there are lots of ways to tell 
Derby where to find the database).

A restriction of the embedded driver is that additional connections to 
that database can only be made only through the application that booted 
the database. For example, in this case ij booted the database, so 
nobody can run another application, including a separate instance of ij, 
that also connects to that database.

(2) Network Server

The network server is the application that boots a database and any 
number of clients can then connect to that database from different JVMs.

derbyclient.jar provides the Derby Network Client JDBC driver -- and 
other JDBC drivers are also available.

The ij connection URL that uses the Derby Network Client JDBC driver 
looks like this and requires that the Network Server be started:

    ij> connect 'jdbc:derby://localhost/../apps/james/var/derbydb'

(3) Embedded Network Server

Developers often use this to debug applications intended for embedded 
deployment. While that embedded application is running, it allows the 
developer to additionally connect remotely with something like ij to 
debug any database issues. Details are at 
http://db.apache.org/derby/docs/dev/adminguide/cadminov825149.html . I 
this is the mode that Bernd might be showing.


To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org

View raw message