masakr s motorovým JDBC ===

Obrázek uživatele benzin@jabber.cz
Vložil benzin@jabber.cz, Pá, 2007-07-27 10:48 :: | |

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.FBSQLEx­ception: Could not obtain connection during blocking timeout (5000 ms) org.firebirdsql­.gds.GDSExcep­tion: 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.Soc­ketAttache:por­t=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.Unknow­nHostException: 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 Sad