Hello,

I was asked offline by Michael to post the message below for him.

----- Michael

I figured it out.

System.setProperty("derby.system.home", ascfg.getEBDBPath() ); System.setProperty(START_NETWORK_SERVER, "true");
           System.out.println("start me");
           NetworkServerControl nc = new NetworkServerControl();
// change to nc.start(new PrintWriter(System.out)) to see // error messages from server nc.start(new PrintWriter(System.out));
System.out.println("end start");
if( !ascfg.isInitDone()) Thread.sleep(ARBITRARY_DELAY);
// and the Client driver for actual access (certainly the connection pool uses this) Class.forName(DERBY_NETWORK_CLIENT_DRIVER);
System.out.println("end instantiate");
           log.info(MSG_INIT_SUCCESS);

This showed the error didn't occur till after this code - until the client 
driver was instantiated!

The system.setproperty for start_network_server has to be left out, or else the 
client driver (not the embedded one, or I might have guessed this!) tries to 
start a second derby.

The system.setproperty was a left over legacy, since the previous program had used that 
plus the embedded driver to start up Derby. When I refactored to use the "more 
elegant" NetWorkServerControl, I left the setproperty in, figuring it was harmless. 
and I figured the client didn't have the same logic as the embedded. Sigh. Live and learn!


Lord know what it is about posting a message about something one has been 
thinking about for a couple of months that clarifies one's thinking!

-----


--
Kristian


Kristian Waagan wrote:
Michael Bell wrote:
Derby 10.4.2.0. Also experienced with earlier.
Java 1.42_16/1.5_16
Windows XP, 2000, 2003. Might also be case on Linux
Tomcat 4.1, 5.5

Situation:

from the System.out (see below)

Could not listen on port 1527 on host localhost:
 java.net.BindException: Address already in use: JVM_Bind

Hello Michael,

Just a few initial questions:
a) Has Derby been started/restarted earlier when this happens, or does it happen on the first startup attempt?
b) Have you confirmed that you have nothing else running on port 1527?
c) From where are you starting the Derby network server?
   (i.e. standalone app, appserver, embedded in another app)
d) Does the same thing happen if you start the server with "java -jar derbyrun.jar server start -h 0.0.0.0 -p 1527" (or omit -h if you want to use localhost only)?
e) Are you using IPv6?

What you describe sure sounds as issues in the socket handling of the OS (or possibly Java) or that something else is using the port, but if it happens the first time you start Derby it might be a bug in Derby itself. If you can easily reproduce this, it would be nice if you could run with the debug version.



Reply via email to