1 year ago
#354455
IDragunov
When trying to display a list of books from the database on the jsp page , i have Null value for 'password'
I has been develop webapp via servelt + jsp , apache tomcat and postgresql and have problems with connection to database. I don't understand how it's decide. Exception :
org.postgresql.util.PSQLException: Something unusual has occurred to cause the driver to fail. Please report this exception.
at org.postgresql.Driver.connect(Driver.java:285)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
at org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:103)
at org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:87)
at ua.dragunov.library.dao.UserDAO.getAll(UserDAO.java:93)
at ua.dragunov.library.service.UserService.getAll(UserService.java:33)
at ua.dragunov.library.servlets.BookListServlet.doGet(BookListServlet.java:19)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalArgumentException: Null value for 'password'
at org.postgresql.shaded.com.ongres.scram.common.util.Preconditions.checkNotNull(Preconditions.java:41)
at org.postgresql.shaded.com.ongres.scram.common.util.Preconditions.checkNotEmpty(Preconditions.java:55)
at org.postgresql.shaded.com.ongres.scram.client.ScramSession$ServerFirstProcessor.clientFinalProcessor(ScramSession.java:128)
at org.postgresql.jre7.sasl.ScramAuthenticator.processServerFirstMessage(ScramAuthenticator.java:147)
at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:778)
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:161)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51)
at org.postgresql.jdbc.PgConnection.\<init\>(PgConnection.java:225)
at org.postgresql.Driver.makeConnection(Driver.java:465)
at org.postgresql.Driver.connect(Driver.java:264
UserDAO code :
@Override
public List<User> getAll() {
List<User> users = new ArrayList<>();
try(Connection connection = dataSource.getConnection()) {
Statement getAllStatement = connection.createStatement();
ResultSet resultSet = getAllStatement.executeQuery("SELECT * FROM users");
while (resultSet.next()) {
User user = new User();
user.setId(resultSet.getLong(1));
user.setLogin(resultSet.getString(2));
user.setEmail(resultSet.getString(3));
user.setPassword(resultSet.getString(4));
users.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}
My DataSource code :
public class LibraryDataSource {
private static final Logger LOGGER = Logger.getLogger(LibraryDataSource.class);
private LibraryDataSource() {}
public static DataSource getLibraryDataSource() {
PGSimpleDataSource libraryDatasource = new PGSimpleDataSource();
try(FileReader propertiesReader =
new FileReader("src/main/resources/application.properties")) {
Properties databaseProperties = new Properties();
databaseProperties.load(propertiesReader);
libraryDatasource.setURL(databaseProperties.getProperty("databaseUrl"));
libraryDatasource.setUser(databaseProperties.getProperty("databaseUser"));
libraryDatasource.setPassword(databaseProperties.getProperty("databasePassword"));
} catch (FileNotFoundException e) {
LOGGER.info("LibraryDataSource::getLibraryDataSource : ", e);
} catch (IOException e) {
LOGGER.info("LibraryDataSource::getLibraryDataSource : ", e);
}
return libraryDatasource;
}
}
I tried to choose any version of tomcat and i was test on main method and in main method it's work. All data from the database is pulled, but have some problems on server
java
postgresql
jdbc
tomcat9
0 Answers
Your Answer