[RISOLTO][[Java] Connettersi a Postgre sql da java
-
Archimede Pitagorico
- Scoppiettante Seguace

- Messaggi: 861
- Iscrizione: domenica 22 aprile 2007, 19:51
Re: [Java] Connettersi a Postgre sql da java
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.
Re: [Java] Connettersi a Postgre sql da java
...che vuol dire?...Peraltro, ai tempi di mySql qualcuno mi disse che quello era l'unico e solo modo corretto di caricare una risorsa in un'applicazione.
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>
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);
Ultima modifica di prampa il lunedì 28 aprile 2008, 22:56, modificato 1 volta in totale.
Re: [Java] Connettersi a Postgre sql da java
Perchè non posti lo stack dell'errore che ottieni 
- AlexSistemiFree
- Entusiasta Emergente

- Messaggi: 1373
- Iscrizione: venerdì 15 dicembre 2006, 9:43
Re: [Java] Connettersi a Postgre sql da java
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.
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

- Messaggi: 861
- Iscrizione: domenica 22 aprile 2007, 19:51
Re: [Java] Connettersi a Postgre sql da java
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'.
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'.
Re: [RISOLTISSIMO][[Java] Connettersi a Postgre sql da java
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
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
Stoned » [url=http://forum.ubuntu-it.org/viewtopic.php?p=1201838#p1201838]lunedì 28 aprile 2008, 1:37[/url] ha scritto:Dio benedica Hibernate (rotfl)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.
Chissà se dopo l'acquisizione da parte di Sun mysql farà un bel salto....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).
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
Re: [Java] Connettersi a Postgre sql da java
La discussione è vecchia di 4 anni e l'utente Stoned è inattivo dal 2010.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
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
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
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti
