masakr s motorovým JDBC ===
Už více než měsíc se snažím u jednoho zaměstnance na počítači rozběhnout připojení k databázi Firebird pomocí JDBC. Mám kvůli tomu spoustu přezčasů, ale nic nepomohlo. Kompletně jsem reinstaloval systém a ani to nepomohlo. JDBC pořád jenom háže hlášku:
org.firebirdsql.jdbc.FBSQLException: Could not obtain
connection during blocking timeout (5000 ms)
org.firebirdsql.gds.GDSException: Unable to complete network request
to host
Takže programátor měl oraz a dostával k práci jenom takové úkoly u kterých nebyla potřeba komunikace s databází.
Napadlo mně, že by to mohl způsobovat SecurityManager. Nezpůsoboval. Ostatní programy neměli problém se připojit, jenom to co bylo napsáno v JAVA. Tak sem mu dal za úkol prozkoumat schopnosti Apache Derby databáze, a hopla ani tohle neroběhal. Takže problém nebyl ve Firebirdovi, ale skutečně někde v JAVA.
Zajímavé bylo, že neměl problém spustit jettyho a otevřít jakýkoli port, ale připojit se na porty jakékoli databáze (ať již na localhost, nebo někde jinde v síti) nebylo možné.
Nakonec mně napadlo, co tak zkusti remote debuging:
# jdb -connect
com.sun.jdi.SocketAttache:port=4444
A ani ten se nezvladnul připojit. Takže java umí naslouchat, ale neumí se připojit. Při uvažování jsem si všiml téhle chyby: java.net.UnknownHostException: zarko: zarko (zarko je jméno počítače).
Tak sem se mrknul do /etc/hosts a na řídku
127.0.0.1 localhost
Tak sem tam dopsal
127.0.0.1 localhost zarko
A hle vše začalo fungovat. Sem rád, že to už funguje. Nejsem rád, protože tahle chyba je v JAVA už od verze 1.4 a já sem (asi) první kdo na něho narazil a ztrávil nad ním tolik času