[RISOLTO][[Java] Connettersi a Postgre sql da java

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Archimede Pitagorico
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 861
Iscrizione: domenica 22 aprile 2007, 19:51

Re: [Java] Connettersi a Postgre sql da java

Messaggio da Archimede Pitagorico »

NO! Mai creato un war. Sinora sto ancora sotto il mio server locale, e questo esclude tantissime ipotesi. Peraltro, ai tempi di mySql qualcuno mi disse che quello era l'unico e solo modo corretto di caricare una risorsa in un'applicazione. Prampa l'unica spiegazione è che l'errore sia nelle classi che ho postato. Potresti dirmi che ne pensi? Grazie tantissimo.
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: [Java] Connettersi a Postgre sql da java

Messaggio da prampa »

Peraltro, ai tempi di mySql qualcuno mi disse che quello era l'unico e solo modo corretto di caricare una risorsa in un'applicazione.
...che vuol dire?...

io ora sto sotto windows perche' devo finire degli "scarichi" e non ho la possibilità di aprire linux dove ho postgres. Di seguito ti posto il mio context.xml per la connessione al DB: chiaramente vedi solo le cose in comune....

Codice: Seleziona tutto

<Context 
	path="/FunctionPoint" 
	docBase="FunctionPoint" 
	debug="5" 
	reloadable="true" 
	crossContext="true">
	<Resource 
		auth="Container" 
		driverClassName="org.postgresql.Driver" 
		maxActive="10" 
		maxIdle="5" 
		maxWait="10000" 
		type="javax.sql.DataSource" 
	    factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
		removeAbandoned="true" 
		logAbandoned="true" 
		removeAbandonedTimeout="60" 
		url="jdbc:postgresql:test" 
		name="jdbc/FunctionPoint" 
		username="postgres"
		password="postgres"
	/> 
</Context>
e comunque prova a fare un catch di ClassNotFoundException qualdo carichi i driver e vedi se è li' il problema.

edit: ho trovato questo con google al volo:

Codice: Seleziona tutto

String url = "jdbc:postgresql://localhost/test";
Properties props = new Properties();
props.setProperty("user","fred");
props.setProperty("password","secret");
props.setProperty("ssl","true");
Connection conn = DriverManager.getConnection(url, props);

String url = "jdbc:postgresql://localhost/test?user=fred&password=secret&ssl=true";
Connection conn = DriverManager.getConnection(url);

visualizza due metodi per accedere a postgres. dovrebbero andare bene.....se non funziona è perche' non trova i driver o postgres non è startato. L'utente è esistente e riesci a collegarti dal client?
Ultima modifica di prampa il lunedì 28 aprile 2008, 22:56, modificato 1 volta in totale.
Stoned
Prode Principiante
Messaggi: 154
Iscrizione: mercoledì 17 gennaio 2007, 17:38

Re: [Java] Connettersi a Postgre sql da java

Messaggio da Stoned »

Perchè non posti lo stack dell'errore che ottieni  ;)
Avatar utente
AlexSistemiFree
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1373
Iscrizione: venerdì 15 dicembre 2006, 9:43

Re: [Java] Connettersi a Postgre sql da java

Messaggio da AlexSistemiFree »

Oppure posta l'intero programma, magari usando un servizio di file hosting così chi vuole se lo scarica, e vede dove si trova l'errore.

Per il discorso del war, in netbeans ti viene fatto in automatico nel caso non siano presenti errori nel progetto durante la compilazione, in eclipse dovrei guardarci.
Archimede Pitagorico
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 861
Iscrizione: domenica 22 aprile 2007, 19:51

Re: [Java] Connettersi a Postgre sql da java

Messaggio da Archimede Pitagorico »

CI SONO RIUSCITO!

Non avevo correttamente indicato i privilegi nella stringa di connessione. Ma soprattutto (sarà per la grande semplicità delle query presenti nella mia applicazione) ho dovuto cambiare solo la parte della connessione; non ho toccato tutto il resto ed ora tutto funziona perfettamente.

Ultima cosa: grazie Prampa quando verso Natale con insistenza e convinzione mi avevi spinto a sviluppare separando le varie parti di un'applicazione (connessione, classi business, ecc) dandomi anche una tua applicazione di prova per mostrarmi come si faceva.

SE NON CI FOSSI STATO TU, QUELLO CHE STAMATTINA HO FATTO IN 30 SECONDI CAMBIANDO TRE RIGHE MI AVREBBE RICHIESTO SETTIMANE. GRAZIE DAVVERO. A VOLTE ESSERE UN PO' PERFEZIONISTI E SFORZARSI DI RISPETTARE DETERMINATI CRITERI PAGA ENORMEMENTE IN TERMINI DI GESTIONE DEL CODICE E DI MANUTENIBILITA'.
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: [RISOLTISSIMO][[Java] Connettersi a Postgre sql da java

Messaggio da prampa »

ti ringrazio, ma ad onor del vero per questo tipo di problematiche anche se avessi sviluppato in altro modo avresti impiegato 30 secondi per cambiare i parametri di connessione e far funzionare il tutto. Quello che cambia invece nel separare la parte che accede ai dati dalla parte web, è :
1) diventa molto semplice la manutenzione, o almeno sai subito dove mettere le mani: non devi ancdare a cercare chissà dove....
2) impacchettando tutto in un jar gli stessi metodi pubblici li puoi usare anche in altre applicazioni importando il .jar (esempio, visto che stai combattendo con jasper report, invece di recuperare i dati nel report con una select, potersti a) nella servlet lato web invocare il metodo stampa, b) lato DB (il metodo deve essere statico) o anche lato web utilizzare i metodi esistenti nella business per accedere ai dati e manipolarli, restituendo un vector, c) lato web nella servlet chiamare jasper passandogli i parametri e il vector, d) nello sviluppo del report lo fai puntare alla classe di interscambio presente nel jar DB).
3) nella parte pubblica di interfaccia con il lato web fornisci dei metodi che accettano classi di parametri e restituiscono classi di interscambio. Chiunque puo' usufruire di questi metodi.
4) si accede al db e si applica la logica di business. I metodi restituiscono classi dove gli attributi non sono formattati: ad esempio una data o un valore numerico. Il client deciderà come formattare la data e il numero in base alla lingua (anche se qui una trasgressione è plausibile....ad esempio potrebbe anche esistere nella classe di interscambio un metodo getDataPubblicazioneFormattata che ritorna una formattazione della data di pubblicazione di un libro in un formato predefinito dd/mm/yyyy...nel caso in cui si voglia esporre in una jsp la classe impacchettata nel lato db).
5) se cambia il db tu puoi avere più classi di business ognuna specializzata per il proprio db. Esempio: se devi inserire un'occorrenza in un db mysql puoi utilizzare un campo ad autoincremento, mentre su postgres o oracle devi usare una sequence: saranno due classi differenti, a meno di non utilizzare altri metodologie di accesso, vedi hibernate, castor & company. Al lato web non interessa come e dove siano memorizzati i dati e tantomeno preparare le select/insert/update/delete: lui chiede inseriscLibro e si aspetta che da qualche parte l'occorrenza venga inserita, chiede listaLibri e si aspetta che ritorni una collezione di una classe. Il come e dove i dati sono memorizzati spetta solo alla parte DB. In questo modo qualsiasi cambiamento al DB non avrà impatti anche sul web. Altrimenti è un suicidio!!
6) l'aspetto transazionale è più semplice da gestire e con le eccezioni diventa tutto piu' coerente
7) sei più o meno pronto per ampliare la tua applicazione: passare su un application server è sicuramente piu' facile in questo modo.

In ogni caso vale sempre il principio: fai una cosa e cerca di riutilizzarla sempre!

ciao
Ultima modifica di prampa il venerdì 2 maggio 2008, 18:55, modificato 1 volta in totale.
nicolino90
Prode Principiante
Messaggi: 6
Iscrizione: martedì 13 novembre 2012, 14:01
Desktop: xfce
Distribuzione: xubuntu 12.04

Re: [Java] Connettersi a Postgre sql da java

Messaggio da nicolino90 »

Stoned » [url=http://forum.ubuntu-it.org/viewtopic.php?p=1201838#p1201838]lunedì 28 aprile 2008, 1:37[/url] ha scritto:
prampa ha scritto: occhio che fare una select o una insert su postgres e mysql non è propriamente uguale. Non basta solo modificare la connessione. Ad esempio su postgres la tabella con il nome USER non la puoi utilizzare, su postgres sono previste le sequences mentre su mysql ci sono i campi con autoincremento, etc etc. E' per questo motivo che la parte che si preoccupa di accedere al db deve essere isolata dal resto, avere i parametri per la connessione esterni (context.xml) e non scolpiti al suo interno, avere una interfaccia pubblica, o roba simile, che accetta parametri dal lato web e richiama una classe specifica per accedere al db in uso e ritorna i dati in una classe di comunicazione web/db. Allora sì che è solo aprire una connessione con uno o l'altro db.....
Poi anche lato server le procedure o le function sono diverse e devono essere riscritte.
Dio benedica Hibernate  (rotfl)
prampa ha scritto: Per il resto anche secondo me con java/j2ee è più performante postgres ed è più database rispetto a mysql, senza togliere nulla a quest'ultimo!!!!!e poi occupa molta meno ram rispetto a mysql (io ho solo 512 di ram...) e ti rendi conto il numero di connessioni che apri e lasci aperte (almeno sotto linux, non so sotto windows).
Chissà se dopo l'acquisizione da parte di Sun mysql farà un bel salto....

Vorrei sapere da stoned se fosse possibile avere un progetto fatto con hibernate, io ho provato a crearlo ma mi blocco alla configurazione di hibernate, potreste aiutarmi :muro:
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Connettersi a Postgre sql da java

Messaggio da Zoff »

nicolino90 » [url=http://forum.ubuntu-it.org/viewtopic.php?p=4256907#p4256907]9 minuti fa[/url] ha scritto: Vorrei sapere da stoned se fosse possibile avere un progetto fatto con hibernate, io ho provato a crearlo ma mi blocco alla configurazione di hibernate, potreste aiutarmi :muro:
La discussione è vecchia di 4 anni e l'utente Stoned è inattivo dal 2010.
Uno sguardo alle date prima di scrivere non farebbe male :P

Quì trovi un tutorial passo passo per il deploy di un progetto:
http://docs.jboss.org/hibernate/orm/3.3 ... orial.html
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti