Ieri ho installato l'aggiornamento per OSX a java 1.6.0_29 e, dopo qualche minuto, ho lanciato una applicazione che ho realizzato per fare del debug da un cliente.
Problema:l'applicazione non mi loggava!
Memore di una mail di qualche giorno prima dei miei colleghi che mi segnalavano questo problema con la versione del JDKincriminata, ho fatto un po' di debug e ho scoperto che il problema risiede in una classe del JDK incriminato.
Nella versione 1.6.0_29, al momento di creare una connessione JDBC verso SQLServer, rimane appesa la chiamata all'infinito e la VM non riesce ad istanziare la connessione.
Facendo un po' di scouting su internet, ho scoperto che c'è un bug nella versione che ho appena installato! (come dice sempre il mio socio si, sono un uomo fortunato.. ;))
Nel dettaglio, questo è il problema (preso dal bug sul sito di Sun):
Creating a JDBC connection through customer JDBC Driver 2.0, 3.0, 4.0 CTP 3,
or jTDS 1.2.5 driver to a customer SQL server 2008R2 database using
JDK 1.6.0_29 results in an indefinite wait for a connection.
This worked fine on all previous versions from 1.6.0_27.
A questo punto, la soluzione è stata semplice: ho sovrascritto il jar jsse.jar che si trova tra le lib del JDK (è qui dentro che sono specificate le classi incriminate)con lo stesso preso da una versione precedente del JDK e tutto è tornato ad andare senza problemi.
Oppure potete optare anche per le soluzioni proposte da Oracle / Sun:
Revert to Java 1.6.0_27 or earlier version, or upgrade to 1.7.0_01.
Or switch customer database server.
SQL Server 2008, 2005, 2000 all work.
Anche se mi sembravano un pochino forti come soluzioni; per questo ho optato per la sovrascrittura del jar! ;)
Infine, ecco un po' di riferimenti al bug:
Spero d'esservi stato d'aiuto! ;)
Alla prossima!;)