PC_MAGAS Δημοσ. 6 Ιουνίου 2015 Δημοσ. 6 Ιουνίου 2015 Καλησπέρα προσπαθώ να παίξω με connection pool και έκανα ένα μικρο Servlet: package test; import java.io.IOException; import java.io.PrintWriter; import java.sql.SQLException; import javax.naming.NamingException; import javax.servlet.*; import javax.servlet.http.*; import models.Test; /** * Created by pcmagas on 6/6/2015. */ public class Phonebook extends HttpServlet { @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { loadView(request, response); } @Override public void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name=request.getParameter("name"); String surname=request.getParameter("surname"); try { Test t=new Test(); int id=t.insertData(name,surname); loadView(request, response); } catch(NamingException n) { n.printStackTrace(); } catch (SQLException s) { s.printStackTrace(); } } private void loadView(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); RequestDispatcher view= request.getRequestDispatcher("./views/phonebook.jsp"); view.forward(request,response); } } Και μια κλάση να παίζει το ρόλο του Μοντέλου για να κάνω τα πάρε δώσε με την βάση: package models; import java.sql.*; import javax.sql.DataSource; import javax.naming.InitialContext; import javax.naming.NamingException; /** * Created by pcmagas on 6/6/2015. */ public class Test { private Connection dbConnection=null; /** *Constructor Method that Initialises the connection */ public Test() throws NamingException,SQLException { DataSource theSource= (DataSource) new InitialContext().lookup("java:/comp/env/jdbc/test"); dbConnection = theSource.getConnection(); } /** * Inserts an entry to contacts Table * @param name * @param surname * @return -1 on failure else it returns the id */ public int insertData(String name, String surname) { try { String sql="INSERT INTO contacts (name,surname) VALUES (?,?) RETURNING id"; PreparedStatement p = dbConnection.prepareStatement(sql); p.setString(1,name); p.setString(2,surname); p.executeUpdate(); ResultSet rs = p.getResultSet(); if(rs.next()) { return rs.getInt(1); } else { return -1; } } catch(SQLException e) { e.printStackTrace(); return -1; } } } Το Web.xml είναι: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Testing Servlets</display-name> <filter> <filter-name>setCharacterEncodingFilter</filter-name> <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <async-supported>true</async-supported> </filter> <filter-mapping> <filter-name>setCharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding>UTF-8</page-encoding> </jsp-property-group> </jsp-config> <servlet> <servlet-name>Test</servlet-name> <servlet-class>test.Test</servlet-class> </servlet> <servlet-mapping> <servlet-name>Test</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> <servlet> <servlet-name>FileUpload</servlet-name> <servlet-class>test.FileUpload</servlet-class> </servlet> <servlet-mapping> <servlet-name>FileUpload</servlet-name> <url-pattern>/files</url-pattern> </servlet-mapping> <servlet> <servlet-name>Session</servlet-name> <servlet-class>test.Session</servlet-class> </servlet> <servlet-mapping> <servlet-name>Session</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet> <servlet-name>UrlParams</servlet-name> <servlet-class>test.PostUrlParams</servlet-class> </servlet> <servlet-mapping> <servlet-name>UrlParams</servlet-name> <url-pattern>/url</url-pattern> </servlet-mapping> <servlet> <servlet-name>Phonebook</servlet-name> <servlet-class>test.Phonebook</servlet-class> </servlet> <servlet-mapping> <servlet-name>Phonebook</servlet-name> <url-pattern>/phonebook</url-pattern> </servlet-mapping> <Context> <Resource name="jdbc/test" global="jdbc/test" auth="Container" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/test" username="pcmagas" password="pcmagas" maxActive="100" maxIdle="20" minIdle="5" maxWait="10000"/> </Context> <multipart-config> <location>/tmp</location> <max-file-size>20848820</max-file-size> <max-request-size>418018841</max-request-size> <file-size-threshold>1048576</file-size-threshold> </multipart-config> </web-app> Και το pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>web</groupId> <artifactId>simple-servlet</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>simple-servlet Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.4-1201-jdbc41</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> <finalName>simple-servlet</finalName> </build> </project> Αλλά παίρνω ένα NullPointerException εκεί που λέει: PreparedStatement p = dbConnection.prepareStatement(sql); Και ορίστε και το Stack trace: e.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [Phonebook] in context with path [/simple-servlet] threw exception java.lang.NullPointerException at models.Test.insertData(Test.java:45) at test.Phonebook.doPut(Phonebook.java:27) at javax.servlet.http.HttpServlet.service(HttpServlet.java:649) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)
mad-proffessor Δημοσ. 10 Ιουνίου 2015 Δημοσ. 10 Ιουνίου 2015 Δες στα logs της postgres τι γίνεται αν εκτελείται κ πως το statement. Μπορείς να δοκιμάσεις να μη χρησιμοποιησεις anonymous parameters και να δεις αν εκτελείται κανονικά.
PC_MAGAS Δημοσ. 10 Ιουνίου 2015 Μέλος Δημοσ. 10 Ιουνίου 2015 Δες στα logs της postgres τι γίνεται αν εκτελείται κ πως το statement. Μπορείς να δοκιμάσεις να μη χρησιμοποιησεις anonymous parameters και να δεις αν εκτελείται κανονικά. Βασικά στο να πάρω το connection είναι το θέμα δεν δημιουργείτε καν το connection με την postgres. Πιστεύω ότι το θέμα είναι πως έχω σετάρει το pool
mad-proffessor Δημοσ. 11 Ιουνίου 2015 Δημοσ. 11 Ιουνίου 2015 Δε νομίζω οτι εχει διαφορα με ένα απλό jdbc connection απλά είναι σε δικό του ξεχωριστό thread. Οπότε πας σε κονσόλα και κάνεις σύνδεση με το χρήστη σου στη βάση, αν μπαίνεις τότε αλλάζεις το Resource στο xml σου. Εν τέλει το stack trace που παραθέτεις χτυπάει για το query όχι για το connection.
PC_MAGAS Δημοσ. 11 Ιουνίου 2015 Μέλος Δημοσ. 11 Ιουνίου 2015 Έκανα κάποιες αλλαγές στο pool και στο servlet: Στο αρχείο /etc/tomcat7/context.xml έχω τα εξής: <?xml version='1.0' encoding='utf-8'?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- The contents of this file will be loaded for each web application --> <Context> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> <!-- Uncomment this to enable Comet connection tacking (provides events on session expiration as well as webapp lifecycle) --> <!-- <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> --> <Resource name="jdbc/test" global="jdbc/test" auth="Container" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/test" username="pcmagas" password="pcmagas" maxActive="100" maxIdle="20" minIdle="5" maxWait="10000"/> </Context> Στο web.xml: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Testing Servlets</display-name> <filter> <filter-name>setCharacterEncodingFilter</filter-name> <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <async-supported>true</async-supported> </filter> <filter-mapping> <filter-name>setCharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding>UTF-8</page-encoding> </jsp-property-group> </jsp-config> <servlet> <servlet-name>Test</servlet-name> <servlet-class>test.Test</servlet-class> </servlet> <servlet-mapping> <servlet-name>Test</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> <servlet> <servlet-name>FileUpload</servlet-name> <servlet-class>test.FileUpload</servlet-class> </servlet> <servlet-mapping> <servlet-name>FileUpload</servlet-name> <url-pattern>/files</url-pattern> </servlet-mapping> <servlet> <servlet-name>Session</servlet-name> <servlet-class>test.Session</servlet-class> </servlet> <servlet-mapping> <servlet-name>Session</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet> <servlet-name>UrlParams</servlet-name> <servlet-class>test.PostUrlParams</servlet-class> </servlet> <servlet-mapping> <servlet-name>UrlParams</servlet-name> <url-pattern>/url</url-pattern> </servlet-mapping> <servlet> <servlet-name>Phonebook</servlet-name> <servlet-class>test.Phonebook</servlet-class> </servlet> <servlet-mapping> <servlet-name>Phonebook</servlet-name> <url-pattern>/phonebook</url-pattern> </servlet-mapping> <resource-ref> <description>Postgresql connection</description> <res-ref-name>jdbc/test</res-ref-name> <res-type>javax.sql.dataSource</res-type> <res-auth>Container</res-auth> </resource-ref> <multipart-config> <location>/tmp</location> <max-file-size>20848820</max-file-size> <max-request-size>418018841</max-request-size> <file-size-threshold>1048576</file-size-threshold> </multipart-config> </web-app> Στο Test.java: package models; import java.sql.*; import javax.sql.DataSource; import javax.naming.InitialContext; import javax.naming.NamingException; import java.util.logging.*; /** * Created by pcmagas on 6/6/2015. */ public class Test { private Connection dbConnection=null; /** *Constructor Method that Initialises the connection */ public Test() throws NamingException,SQLException { DataSource theSource= (DataSource) new InitialContext().lookup("java:/comp/env/jdbc/test"); this.dbConnection = theSource.getConnection(); } /** * Inserts an entry to contacts Table * @param name * @param surname * @return -1 on failure else it returns the id */ public int insertData(String name, String surname) { try { String sql="INSERT INTO contacts (name,surname) VALUES (?,?) RETURNING id"; PreparedStatement p = dbConnection.prepareStatement(sql); p.setString(1,name); p.setString(2,surname); p.executeUpdate(); ResultSet rs = p.getResultSet(); if(rs.next()) { return rs.getInt(1); } else { return -1; } } catch(NullPointerException r) { r.printStackTrace(); if(dbConnection==null) { return -2; } else { return -3; } } catch(SQLException e) { e.printStackTrace(); return -1; } } } Και στο Phonebook.java package models; import java.sql.*; import javax.sql.DataSource; import javax.naming.InitialContext; import javax.naming.NamingException; import java.util.logging.*; /** * Created by pcmagas on 6/6/2015. */ public class Test { private Connection dbConnection=null; /** *Constructor Method that Initialises the connection */ public Test() throws NamingException,SQLException { DataSource theSource= (DataSource) new InitialContext().lookup("java:/comp/env/jdbc/test"); this.dbConnection = theSource.getConnection(); } /** * Inserts an entry to contacts Table * @param name * @param surname * @return -1 on failure else it returns the id */ public int insertData(String name, String surname) { try { String sql="INSERT INTO contacts (name,surname) VALUES (?,?) RETURNING id"; PreparedStatement p = dbConnection.prepareStatement(sql); p.setString(1,name); p.setString(2,surname); p.executeUpdate(); ResultSet rs = p.getResultSet(); if(rs.next()) { return rs.getInt(1); } else { return -1; } } catch(NullPointerException r) { r.printStackTrace(); if(dbConnection==null) { return -2; } else { return -3; } } catch(SQLException e) { e.printStackTrace(); return -1; } } } Και παίρνω το εξής stacktrace: Ιουν 11, 2015 10:35:11 ΜΜ org.apache.tomcat.jdbc.pool.ConnectionPool init SEVERE: Unable to create initial connections of pool. java.sql.SQLException: org.postgresql.Driver at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254) at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182) at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701) at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635) at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486) at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144) at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116) at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103) at org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:554) at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:242) at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:141) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321) at org.apache.naming.NamingContext.lookup(NamingContext.java:842) at org.apache.naming.NamingContext.lookup(NamingContext.java:153) at org.apache.naming.NamingContext.lookup(NamingContext.java:830) at org.apache.naming.NamingContext.lookup(NamingContext.java:153) at org.apache.naming.NamingContext.lookup(NamingContext.java:830) at org.apache.naming.NamingContext.lookup(NamingContext.java:153) at org.apache.naming.NamingContext.lookup(NamingContext.java:830) at org.apache.naming.NamingContext.lookup(NamingContext.java:167) at org.apache.naming.SelectorContext.lookup(SelectorContext.java:156) at javax.naming.InitialContext.lookup(InitialContext.java:411) at models.Test.<init>(Test.java:20) at test.Phonebook.doPut(Phonebook.java:32) at javax.servlet.http.HttpServlet.service(HttpServlet.java:649) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:274) at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246) ... 44 more Ιουν 11, 2015 10:35:11 ΜΜ org.apache.naming.NamingContext lookup WARNING: Unexpected exception resolving reference java.sql.SQLException: org.postgresql.Driver at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254) at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182) at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701) at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635) at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486) at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144) at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116) at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103) at org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:554) at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:242) at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:141) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321) at org.apache.naming.NamingContext.lookup(NamingContext.java:842) at org.apache.naming.NamingContext.lookup(NamingContext.java:153) at org.apache.naming.NamingContext.lookup(NamingContext.java:830) at org.apache.naming.NamingContext.lookup(NamingContext.java:153) at org.apache.naming.NamingContext.lookup(NamingContext.java:830) at org.apache.naming.NamingContext.lookup(NamingContext.java:153) at org.apache.naming.NamingContext.lookup(NamingContext.java:830) at org.apache.naming.NamingContext.lookup(NamingContext.java:167) at org.apache.naming.SelectorContext.lookup(SelectorContext.java:156) at javax.naming.InitialContext.lookup(InitialContext.java:411) at models.Test.<init>(Test.java:20) at test.Phonebook.doPut(Phonebook.java:32) at javax.servlet.http.HttpServlet.service(HttpServlet.java:649) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:274) at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246) ... 44 more javax.naming.NamingException: org.postgresql.Driver at org.apache.naming.NamingContext.lookup(NamingContext.java:859) at org.apache.naming.NamingContext.lookup(NamingContext.java:153) at org.apache.naming.NamingContext.lookup(NamingContext.java:830) at org.apache.naming.NamingContext.lookup(NamingContext.java:153) at org.apache.naming.NamingContext.lookup(NamingContext.java:830) at org.apache.naming.NamingContext.lookup(NamingContext.java:153) at org.apache.naming.NamingContext.lookup(NamingContext.java:830) at org.apache.naming.NamingContext.lookup(NamingContext.java:167) at org.apache.naming.SelectorContext.lookup(SelectorContext.java:156) at javax.naming.InitialContext.lookup(InitialContext.java:411) at models.Test.<init>(Test.java:20) at test.Phonebook.doPut(Phonebook.java:32) at javax.servlet.http.HttpServlet.service(HttpServlet.java:649) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Άρα είναι κάπου στο pool. Έχε3τε ιδέα τοι ΔΕΝ έχω σετάρε4ι σωστά σε αυτό;
mad-proffessor Δημοσ. 12 Ιουνίου 2015 Δημοσ. 12 Ιουνίου 2015 Στο λεει καθαρα δε βρίσκει τη κλάσση org.postgresql.Driver
PC_MAGAS Δημοσ. 12 Ιουνίου 2015 Μέλος Δημοσ. 12 Ιουνίου 2015 Στο λεει καθαρα δε βρίσκει τη κλάσση org.postgresql.Driver To έμα είναι ΓIATI μα είναι μέσα στο WEB-INF/lib. Να πω ότι δεν ήταν η ριμάδα το Maven κανονίζει να είναι.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα