db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kristian Waagan <Kristian.Waa...@Sun.COM>
Subject Re: running Mode config
Date Thu, 23 Mar 2006 22:36:38 GMT
Philippe Lamote wrote:
> Hi List,
> I think I have a typical "development" setup config question for Derby.
> In "production", obviously running Derby in embedded mode has the 
> advantage it can run in the same JVM, which is better, 
> security/performance wise, that over the network.
> BUT during development one often wishes to follow, with an external 
> client (like DBVisualizer, Aqua Data Studio - both of which are Java 
> Apps), what the code does to the DB.
> (and possibly interact)
> Therefore, what I tried is:
> 1/ In an application properties file I keep the default parameters for 
> Derby. (Default = in production e.g. ConnDriver = the embedded driver)
> But it also keeps a "runningMode"="development" | "production" value. 
> If its value is "development", in the application init method, some 
> values are overwritten: cf 2/
> 2/ In the App init method is an if-clause thet sets/overwrites these 
> settings in case the "runningMode" is "development":
>     - ConnURL = "jdbc:derby://localhost:1527/"+ derbyHome;
>     - System.getProperties().put("derby.drda.startNetworkServer","true");
>     - added: try{
>             NetworkServerControl server = new 
> NetworkServerControl(InetAddress.getByName("localhost"),1527);
>             server.start(null);}
>             catch (Exception e) { e.printStackTrace();
>             }
>     - driver to use is set to org.apache.derby.jdbc.ClientDriver

Hi Philippe,

I think the code above starting the network server is the cause for the 
exception, or the connection string you use.
What do the 'InetAddress.getByName("localhost")' command return? If it 
is neither "localhost" nor "", the connection string 
"jdbc:derby://localhost:1527/..." will not work.
Say the hostnamed returned is "philippe", then you must use the 
connection string "jdbc:derby://philippe:1527/...".
These observations concern the client driver, not the embedded driver.

Double check what the network server is started with, or just hard-code 
"localhost" to see if that fixes the problem. If the problem goes away, 
you can adjust your code accordingly.


> From the Derby doc I understand firing off the Server keep it running, 
> also beyond main(), until you manually fire a shutdown command.
> --> I thought this would allow me to connect via a Java DB app and 
> never having to do any extra config apart from setting this 
> runningMode variable in the properties file. (or with Spring, as you 
> wish)
> Yet , I get this exception:
> An error occured while establishing the connection.
>    Type: org.apache.derby.client.am.DisconnectException   Error Code: 
> -4499
> Message:
>    java.security.PrivilegedActionException : Error opening socket to 
> server localhost on port 1527 with message : null
> (using the ClientDriver, Login/Passw = APP/) I tried providing a 
> password anyway ("key") and also this passw in the DB viewer app, 
> without any effect though.
> So the questions I have, are:
> - I feel setting "derby.drda.startNetworkServer" to "true" AND issuing 
> the "new NetworkServerControl(...)" are doing twice the same and that 
> I can (as in: would better!) drop one of them. Is this correct?
> - Is the driver the app itself has to use to connect to the DB, after 
> firing the Network Server: the ClientDriver, or the EmbeddedDriver? 
> The doc got me confused about this.
> - Any suggestions as to how to make this work properly? :-) It looks 
> like either the Server has shutdown already when I use the DB app 
> (although the server was started and not shutdown that I know of), or 
> that I need a password (thought this was never necessary, unless you 
> explicitely set "authentication" somewhere)
> Thanks for suggestions,
> Philippe

View raw message