我正在使用JNDI连接到MySQL数据库,但在执行过程中会抛出异常。

huangapple go评论109阅读模式
英文:

I am connecting to mysql database using JNDI but on execution it ends up on throwing exceptions

问题

以下是您提供的内容的翻译:

这是我面临的异常情况

java.sql.SQLException: 无法创建 PoolableConnectionFactory(不允许公钥检索)

Caused by: java.sql.SQLNonTransientConnectionException: 不允许公钥检索

这是 context.xml 文件

  1. <Context>
  2. <Resource name="jdbc/project"
  3. auth="Container" type="javax.sql.DataSource"
  4. maxActive="25" maxIdle="5" maxWait="10000"
  5. username="Shubham" password="1234abc"
  6. driverClassName="com.mysql.cj.jdbc.Driver"
  7. url="jdbc:mysql://127.0.0.1:3306/studyeasy_db?useSSL=false"/>
  8. </Context>

这是 servlet Demo2.java 文件

  1. package org.studyeasy;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.sql.Connection;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. import javax.annotation.Resource;
  9. import javax.servlet.ServletException;
  10. import javax.servlet.annotation.WebServlet;
  11. import javax.servlet.http.HttpServlet;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14. import javax.sql.DataSource;
  15. @WebServlet("/Demo2")
  16. public class Demo2 extends HttpServlet {
  17. private static final long serialVersionUID = 1L;
  18. @Resource(name="jdbc/project")
  19. private DataSource dataSource;
  20. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  21. PrintWriter out = response.getWriter();
  22. Connection connect = null;
  23. Statement stmt = null;
  24. ResultSet rs = null;
  25. try {
  26. connect = dataSource.getConnection();
  27. String query = "Select * from users";
  28. stmt = connect.createStatement();
  29. rs = stmt.executeQuery(query);
  30. while(rs.next()) {
  31. out.print(rs.getString("email"));
  32. }
  33. } catch (SQLException e) {
  34. // TODO Auto-generated catch block
  35. e.printStackTrace();
  36. }
  37. }
  38. }
  1. java.sql.SQLException: 无法创建 PoolableConnectionFactory不允许公钥检索
  2. at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:669)
  3. at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:544)
  4. at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:753)
  5. at org.studyeasy.Demo.doGet(Demo.java:41)
  6. at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
  7. at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
  8. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
  9. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  10. at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
  11. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  12. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  13. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
  14. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
  15. at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
  16. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
  17. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
  18. at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688)
  19. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
  20. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
  21. at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
  22. at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
  23. at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
  24. at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594)
  25. at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
  26. at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
  27. at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
  28. at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  29. at java.lang.Thread.run(Unknown Source)
  30. Caused by: java.sql.SQLNonTransientConnectionException: 不允许公钥检索
  31. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)
  32. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
  33. at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
  34. at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836)
  35. at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)
  36. at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
  37. at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197)
  38. at org.apache.tomcat.dbcp.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:55)
  39. at org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:355)
  40. at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:115)
  41. at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:665)
  42. ... 27 more

我是初学者,请帮助我!

英文:

These are exceptions I'm facing

java.sql.SQLException: Cannot create PoolableConnectionFactory (Public Key Retrieval is not allowed)

Caused by: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed

Here is context.xml

  1. &lt;Context&gt;
  2. &lt;Resource name=&quot;jdbc/project&quot;
  3. auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot;
  4. maxActive=&quot;25&quot; maxIdle=&quot;5&quot; maxWait=&quot;10000&quot;
  5. username=&quot;Shubham&quot; password=&quot;1234abc&quot;
  6. driverClassName=&quot;com.mysql.cj.jdbc.Driver&quot;
  7. url=&quot;jdbc:mysql://127.0.0.1:3306/studyeasy_db?useSSL=false&quot;/&gt;
  8. &lt;/Context&gt;

This is servlet Demo2.java

  1. package org.studyeasy;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.sql.Connection;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. import javax.annotation.Resource;
  9. import javax.servlet.ServletException;
  10. import javax.servlet.annotation.WebServlet;
  11. import javax.servlet.http.HttpServlet;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14. import javax.sql.DataSource;
  15. /**
  16. * Servlet implementation class Demo2
  17. */
  18. @WebServlet(&quot;/Demo2&quot;)
  19. public class Demo2 extends HttpServlet {
  20. private static final long serialVersionUID = 1L;
  21. @Resource(name=&quot;jdbc/project&quot;)
  22. private DataSource dataSource;
  23. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  24. PrintWriter out = response.getWriter();
  25. Connection connect = null;
  26. Statement stmt = null;
  27. ResultSet rs = null;
  28. try {
  29. connect = dataSource.getConnection();
  30. String query = &quot;Select * from users&quot;;
  31. stmt = connect.createStatement();
  32. rs = stmt.executeQuery(query);
  33. while(rs.next()) {
  34. out.print(rs.getString(&quot;email&quot;));
  35. }
  36. } catch (SQLException e) {
  37. // TODO Auto-generated catch block
  38. e.printStackTrace();
  39. }
  40. }
  41. }
  1. java.sql.SQLException: Cannot create PoolableConnectionFactory (Public Key Retrieval is not allowed)
  2. at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:669)
  3. at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:544)
  4. at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:753)
  5. at org.studyeasy.Demo.doGet(Demo.java:41)
  6. at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
  7. at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
  8. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
  9. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  10. at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
  11. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  12. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  13. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
  14. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
  15. at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
  16. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
  17. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
  18. at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688)
  19. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
  20. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
  21. at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
  22. at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
  23. at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
  24. at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594)
  25. at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
  26. at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
  27. at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
  28. at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  29. at java.lang.Thread.run(Unknown Source)
  30. Caused by: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
  31. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)
  32. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
  33. at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
  34. at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836)
  35. at com.mysql.cj.jdbc.ConnectionImpl.&lt;init&gt;(ConnectionImpl.java:456)
  36. at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
  37. at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197)
  38. at org.apache.tomcat.dbcp.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:55)
  39. at org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:355)
  40. at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:115)
  41. at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:665)
  42. ... 27 more

I'm beginner please help me!

答案1

得分: 1

我很高兴你加入了Stack Overflow。这个错误与你的Java代码无关。错误代码显示:

  1. java.sql.SQLException:无法创建PoolableConnectionFactory(不允许进行公钥检索)

你只需要设置一个用户名和密码来连接你的数据库。

英文:

I'm glad that you joined stack overflow. This error has nothing to do with your Java code. The error code says:

  1. java.sql.SQLException: Cannot create PoolableConnectionFactory (Public Key Retrieval is not allowed)

All you need to do is set up a username and password to connect to your database.

huangapple
  • 本文由 发表于 2020年4月4日 00:06:54
  • 转载请务必保留本文链接:https://go.coder-hub.com/61015950.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定