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.