Pagina 1 di 2

Internet Explorer, java e MySQL: nullptr e resultset vuoti

Inviato: mercoledì 30 maggio 2012, 20:45
da Alessio89
In pratica con il CMS che abbiamo sviluppato per il progetto di software engineering funziona perfettamente su tutti i browser tranne che su internet explorer.

Che novità direte voi, ma in questo caso non si tratta di html o aspetti grafici bensì di funzionalità: il sistema è scritto in java e utilizza un db in mysql.

Diverse funzionalità non funzionano in quanto ci ritornano dei nullpointer o degli empty resultSet solo in determinate occasioni (le più importanti -.-) e solo con Internet Explorer.

Con Opera, Firefox, Safari e chrome funziona tutto perfettamente e nel log di apache non abbiamo nemmeno un warning.
La cosa strana è che avevamo notato un comportamento simile con una vecchia versione di firefox datata oltre 2 anni, eppure internet explorer 9 non mi sembra così vecchio da non gestire un sistema in jdk6, apache e mysql :|

Per quanto per noi sia ininfluene la cosa (visto che afligge solo e proprio explorer) vorremmo capire anche il perché di questo strano comportamento. All'inizio pensavamo che fosse per problemi di filtri, encoding delle pagine o di html5 ma a quanto pare non è questo il problema, sembra che java da un giorno all'altro abbia smesso di funzionare bene con explorer.

Come JDK usiamo la 1.7* con target a 1.6* e l'intero sistema è sviluppato su netbeans 7.1.*.

Re: Internet Explorer, java e MySQL: nullptr e resultset vuo

Inviato: mercoledì 30 maggio 2012, 23:31
da dino
Ma alla fine è una applicazione JAVA che si installa come plugin? Oppure produce solo pagine HTML? Nel primo caso non saprei aiutarti ma anche in istituto una app JAVA funzionante su IE non funziona su Firefox (caso contrario al vostro ma esemplificativo). Nel secondo caso ci deve essere qualcosa di errato nella gestione del meccanismo rerquest / response

Re: Internet Explorer, java e MySQL: nullptr e resultset vuo

Inviato: giovedì 31 maggio 2012, 0:53
da Alessio89
il sistema di fondo è scritto in java e gira su un server apache, il browser vede solo pagine html e qualche cookie, quindi siamo nel secondo caso.

quel che non capisco è che se fosse un problema di resquest e response allora perché da problemi solo con explorer? la cosa non ha senso. è possibile che vi sia stato qualche modifica al database (visto che non lo controlliamo direttamente) e che dia problemi con explorer o una versione di firefox dei inizio 2009 se non precedente?

in pratica le query leggermente "significative" se eseguite da html sotto explorer ritornano resultset vuote mentre in altre occasioni è il sistema in java a ritornanrci dei nullpointer generici :|

Abbiamo anche una serie di test, ma nessuno ci ritorna i problemi in questione.

abbiamo anche riempito tutto di try-catch per cercare qualche tipo di eccezzione ma nada. :\

Re: Internet Explorer, java e MySQL: nullptr e resultset vuo

Inviato: giovedì 31 maggio 2012, 8:40
da dino
Si ma il punto è che non c'è alcuna relazione fra query e browser. Il browser manda una richiesta che deve essere intercettata da una servlet (pagina jsp). Tale pagina poi chiama un metodo di una classe JAVA che - se non ricordo male - nel vostro caso funge sia da controller che da business e questa poi esegue la query e ritorna qualcosa (resultset). Tale ritorno viene elaborato poi dalla servlet e trasformato in codice HTML per il browser.

Se il RS è vuoto non può essere colpa del browser a meno che questo non invii parametri errati. In debug avete controllato cosa arriva dalla request quando usate IE?

Re: Internet Explorer, java e MySQL: nullptr e resultset vuo

Inviato: giovedì 31 maggio 2012, 9:47
da Alessio89
il problema è questo: non capiamo da dove parta il tutto, e non abbiamo conoscenze sufficienti per debugging di questo tipo.

ieri mi sono rifatto per l'ennesima volta a ritroso il percorso dei vari oggetti e delle varie query ma non si riesce a capire da dove parta il tutto in quanto i messaggi di errore sono privi di senso e parlano sempre di nulpointer o resultset vuoti, sin dal principio. eppure le prime connessioni al db le fa con explorer, altrimenti non riusciremmo nemmeno a loggare nel sistema.

Re: Internet Explorer, java e MySQL: nullptr e resultset vuo

Inviato: giovedì 31 maggio 2012, 10:26
da dino
Posta il codice della pagina JSP

Re: Internet Explorer, java e MySQL: nullptr e resultset vuo

Inviato: giovedì 31 maggio 2012, 11:18
da Alessio89
mmm ormai è troppo tardi xD

Tanto la presentazione del progetto è andata bene :)

In ogni caso se fossi curioso qua c'è la repo: http://code.google.com/p/startup-phd/source/checkout

Re: Internet Explorer, java e MySQL: nullptr e resultset vuo

Inviato: giovedì 31 maggio 2012, 11:40
da dino
Menomale! Ma il nome della pagina incriminata qual'è?

Re: Internet Explorer, java e MySQL: nullptr e resultset vuo

Inviato: giovedì 31 maggio 2012, 13:29
da Alessio89
le pagine che creano problemi sono le estimate.jsp (sono due ma essenzialmente identiche, le abbiamo sdoppiate perché non avevamo tempo per gestire due tipi di utenti sulla stessa pagina)

Cmq già dubito che proveranno il codice di persona, figuriamoci se lo provano su explorer xD

Re: Internet Explorer, java e MySQL: nullptr e resultset vuo

Inviato: giovedì 31 maggio 2012, 13:46
da dino
Va bene che siete partiti da zero e magari senza alcuna linea guida ma quella pagina non si può guardare! Trovare le query sulla pagina JSP è la stessa cosa che programmare pagine ASP alla vecchia maniera! Mannaggia a voi! E ti credo che non debuggate :p

Così tanto per dire, tutta la parte di business e accesso al DB non deve MAI essere esposta sulle pagine JSP che al massimo si preoccupano di mostrare i dati e fare qualcosa di banale ma su dati che provengono dal controller in forma di - ad esempio - ResultSet.

Tanto per capirci.

1. Quello che mi aspetto di trovare sulla pagina JSP è:

Codice: Seleziona tutto

MissionRequest mission = (MissionRequest) session.getAttribute( "missioneRichiesta" );
2. Quello che vorrei vedere sul controller è:

Codice: Seleziona tutto

String name = (String )request.getParameter("name");
String type= (String )request.getParameter("type");
Integer id = Integer.valueOf((String )request.getParameter("id"));

ResultSet risultato = NomeClasseBusiness.getPreventive( String name, String type, Integer id );

session.setAttribute("missioneRichiesta", risultato );
}
3. E quello che vorrei vedere sulla logica di Business è:

Codice: Seleziona tutto

public ResultSet getPreventive( String name, String type, Integer id ) {
	Query q = new Query( name,  type, id );
	return q.executeOnPhdDatabase();
}
Ovviamente a grandi linee ;). Spero sia chiaro e soprattutto siano chiari i vantaggi ;)