Ho aspettato a rispondervi perché nel frattempo per eliminare qualsiasi altra ipotesi, ho realizzato una web app Java semplicissima con una unica classe che legge quei dati e la presenta in una pagina jsp. Senza impostare messaggi di errore miei, e lasciando quelli del Tomcat come mi avete detto. Questo che vi posto sotto è il messaggio di errore completo:
codice:
javax.servlet.ServletException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.index_jsp._jspService(index_jsp.java:67)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:123)
org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:124)
org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
org.postgresql.jdbc3.Jdbc3Connection.<init>(Jdbc3Connection.java:24)
org.postgresql.Driver.makeConnection(Driver.java:386)
org.postgresql.Driver.connect(Driver.java:260)
java.sql.DriverManager.getConnection(DriverManager.java:512)
java.sql.DriverManager.getConnection(DriverManager.java:193)
utility.TestClass.myCn(TestClass.java:24)
org.apache.jsp.index_jsp._jspService(index_jsp.java:56)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
E questa è la stringa di connessione, che a questo punto come si vede dall'errore è l'unica responsabile del problema visto che la stessa stringa in locale funziona (correggetemi se mi sbaglio).
codice:
myConnection = DriverManager.getConnection("jdbc:postgresql://localhost:/mydb?user=myuser&password=mypsw");
Anche inserendo la porta indicata dal mio provider non cambia nulla.
codice:
myConnection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/mydb?user=myuser&password=mypsw");
A questo punto non ci sono dubbi: questa stessa stringa, che in locale va benissimo, per funzionare in remoto ha bisogno di qualcosa che non ho aggiunto. Cosa?
Grazie tantissimo a tutti.
Archimede