PDA

View Full Version : [Java] Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException


The_Carver
29-06-2009, 18:09
Salve a tutti...
ho dovuto creare un web service in java(netbeans 5.5) utilizzando tomcat e il protocollo soap collegando il tutto ad un database sviluppato con Postgresql.

Il progetto in java non da nessun errore....il tomcat è installato correttamente e funzionante....l'unico problema credo sia la connessione al database....

apro pgadminIII mi connetto al database...
faccio partire tomcat....
e do il run all'applicazione su netbeans...

compare la finestra di login del web-service, ma non appena inserisco nome utente e password si viene a creare questa eccezzione:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Intro.loginActionPerformed(Intro.java:523)
at Intro.access$100(Intro.java:22)
at Intro$2.actionPerformed(Intro.java:112)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Java Result: 1
BUILD SUCCESSFUL (total time: 4 minutes 33 seconds)


Premetto che il web-service è stato sempre funzionante ma dal giorno alla notte ha smesso creandomi questo problema....
Credo sia il collegamento al database che non avviene in quanto nella finestra di tomcat non viene mostrato nemmeno l'errore di mancato collegamento al database.

vi posto anche il codice relativo alla connessione.

public static void connetti() {
try {
Class.forName("org.postgresql.Driver");
connessione = DriverManager.getConnection("jdbc:postgresql://localhost/prenotazione_traghetti", "postgres", "postgres");
istruzione = connessione.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
System.out.println("Connessione al DB avvenuta");
} catch (Exception ex) {
System.err.println(ex.getMessage());
System.out.println("Errore di connessione al database");
}
}

/**
* Viene utilizzata per effettuare la disconnessione dal data base.
*/
public static void disconnetti() {
try {
connessione.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}

//Dichiarazione variabili
private static Connection connessione;
private static Statement istruzione;
private static ResultSet risultato;
}


grazie a tutti quelli che mi illumineranno su tale problema.
un bacione iniziale :Prrr:

The_Carver
29-06-2009, 22:10
help!!!

:muro:
:muro:

:rolleyes:

PGI-Bis
29-06-2009, 23:23
Se hai accesso ai sorgenti guarda cosa c'è nella riga 523: troverai un "qualcosa." e "qualcosa" è il problema.

Si tratta comunque di bug del programma generato dal comune errore di non verificare che i riferimenti su cui si opera siano diversi da null - quando vengono "dall'esterno".

The_Carver
30-06-2009, 10:04
in quella linea c'è praticamente la risposta del server all'inserimento di nome utente e password(che sono memorizzati nel database postgresql)

e infatti l'errore dice appunto che "non riesce ad avere informazioni"....
ecco perche secondo me l'applicazione non riesce a connettersi al database di postgresql e ad accedere ai dati del DB.

banryu79
30-06-2009, 11:01
Stai inserendo una accopiata password/nome sbagliata?
Postaci uno spezzone di codice di una decina di righe che comprenda la riga 253.

Il punto è che lì hai una reference null su cui si cerca di accedere a un metodo/campo, da cui l'errore. Se riesci a capire qual'è la reference a null e perchè capita che sia a null, hai la risposta al tuo problema.

The_Carver
30-06-2009, 12:01
private void loginActionPerformed(java.awt.event.ActionEvent evt) {
try {
URL address= new URL("http://"+ip+":8080/soap/servlet/rpcrouter");

//Costruzione della chiamata
Call chiamata = new Call();
chiamata.setTargetObjectURI("urn:server");
chiamata.setMethodName("controllaAgenzia");
chiamata.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

//creazione parametri che dovro' passare al soap
Vector<Parameter> params = new Vector<Parameter>();
String u = user.getText();
String p = String.valueOf(password.getPassword());

params.addElement(new Parameter("user", String.class, u, null));
params.addElement(new Parameter("password", String.class, p, null));

chiamata.setParams(params);//parametri passati al soap

try {
//Invocazione RPC
Response respons = chiamata.invoke(address, "");

//qui ho la risposta inviata dal server
Parameter par = respons.getReturnValue();
Object value = par.getValue();
String REP = String.valueOf(value);
System.out.println(REP);
if (REP.equals("ACK_agenzia")) {
new MainAgenzia(ip);
this.dispose();
} else if (REP.equals("NACK_agenzia")) {
JOptionPane.showMessageDialog(null, "I dati inseriti non sono corretti", "Errore", JOptionPane.ERROR_MESSAGE);
password.setText("");
user.setText("");
}
} catch (SOAPException e) {
System.out.println("Errore causato: ("+e.getFaultCode()+"):"+e.getMessage());
}
} catch (MalformedURLException ex) {
System.out.println("H1 "+ex.getMessage());


la riga in oggetto è in grassetto....
il fatto strano è che è sempre partito.....dalla sera alla mattina invece ha iniziato a darmi questo errore....
ricordo che le informazioni per il login(nome utente e password) le prende dal database postgresql.

Altra cosa.....quando partiva nella finestra di Tomcat mi dava "Connessione DB avvenuta" ora proprio niente....

il nome utente e la password sono giuste....

PGI-Bis
30-06-2009, 13:12
Prova a connetterti al database usando la console di postgre con le credenziali che usi nel programma. Giusto per iniziare ad escludere qualche possibilità. Se funziona il problema non è la base dati.

The_Carver
30-06-2009, 13:37
riesco a connettermi al database sia con pgadmin III sia da linea di comando psql per postgres....

\c prenotazione_traghetti

You are now connected to database "prenotazione_traghetti"

secondo me c'è qualche problema col connector JDBC di postgresql altrimenti non si spiega.

:mc:

PGI-Bis
30-06-2009, 13:46
Puoi escludere che sia il driver jdbc con una rapida prova. Crea una classe Java che si connette al databae usando JDBC. Se funziona neppure quello è il problema.

The_Carver
30-06-2009, 14:19
è il driver JDBC!!!!!!

-.-"

sta cosa è stranissima....molto ma molto strana....

si connette per una settimana, funziona tutto bene e poi puffete da problemi???

che mi consigliate di fare.....

uso postgresql 8.3.5 e il JDBC è postgresql-8.3-604.jdbc3.jar

PGI-Bis
30-06-2009, 14:22
il programmino Java che verifica la connessione jdbc rilascia qualche eccezione?

The_Carver
01-07-2009, 15:11
scusami per il ritardo...

ricontrollando meglio...effettivamente il programmino di connessione al database funge....
quindi si esclude anche il connettore in questo caso...

c'è rimasto il tomcat e il soap?!
ma io credo di averli configurati benissimo....ho seguito la guida del prof. senza problemi.....e sinceramente funge tutto.
anche il deploy dei metodi delle classi.

PGI-Bis
01-07-2009, 15:19
Funziona tutto tranne il tuo programma. Qualcosa che non va ci deve essere per forza. Ricontrolla la configurazione.

The_Carver
03-07-2009, 11:37
:mc:

niente!
rinstallato tomcat soap tutto da capo......fatto il deploy dell'applicazione tutto ok!

faccio partire il web-service.....e niente......stesso errore stessa musica!!:muro:


:confused:
mah.

non so piu che fare....
e pensare che il WS partiva ed era funzionantissimo.

banryu79
03-07-2009, 12:31
//qui ho la risposta inviata dal server
Parameter par = respons.getReturnValue();
Object value = par.getValue();

Se lavori con un IDE con debugger hai già provato a settare un breakpoint sulla riga in grassetto e seguire passo-passo, verificando i campi delle istanze restituite?

The_Carver
04-07-2009, 17:23
fatto ma con scarsi risultati....purtroppo blocca tutto.

purtroppo credo che sia questo il problema

Response respons = chiamata.invoke(address, "");

le chiamate rpc che non danno nessuna risposta dal server....

sto impazzendo :mc:

ho configurato il soap e il tomcat correttamente secondo le procedure del prof. e funge....infatti il deploy delle classi è avvenuto con successo...
ma purtroppo quel passaggio mi blocca....

che mi consigliate di fare???...oltre a darmi all'ippica???