有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

AWS Web应用程序部署上的java超时问题。ebextensions配置不工作

请帮助我在AWS(Amazon Web服务)上启动WAR Spring MVC Web应用程序 由于与数据库的连接超时(与RDS的连接也与Amazon的连接超时)而失败

我在当地工作绝对不错。通过tomcat连接到我的RDS并工作, 但是当我在AWS上部署这场战争时-超时

我试图添加配置以增加超时,但AWS似乎忽略了这一点

你能帮忙吗

WAR文件的结构:

-META-INF
-WEB-INF
  |- classes
  |- lib
  |- view (*.jsp here)
-.ebextensions
  |- timeout.config

超时。配置内容:

option_settings:
    - namespace: aws:elasticbeanstalk:command
      option_name: Timeout
      value: 1800

日志: 在哪里。书刀。impl。GenreDAOImpl。findAll(GenreDAOImpl.java:49)我对DB的第一个请求

16-Jun-2018 20:24:46.050 SEVERE [http-nio-8080-exec-8] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [dispatcher] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection] with root cause
 java.net.SocketTimeoutException: connect timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:161)
    at oracle.net.nt.ConnOption.connect(ConnOption.java:159)
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:428)
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:506)
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:595)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:230)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1452)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:496)
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:208)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:153)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:144)
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:196)
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:159)
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:394)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:474)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:484)
    at com.books.dao.impl.GenreDAOImpl.findAll(GenreDAOImpl.java:49)

弹性豆茎的安全性

Security Group for elastic bean

ec2的安全性 Security Group for EC2 instance where public access failed


共 (1) 个答案

  1. # 1 楼答案

    实际上,这不是配置文件不工作的问题,而是由于安全组阻止了端口或不允许应用程序与数据库连接

    因此,如果您正在使用RDS实例,请检查您的RDS的安全组,以及它所在的VPC。最好的方法就是尝试ping你的RDS实例,看看你是否得到了它的回复

    如果您使用的是在实例内部运行的Mysql,那么只需在EC2安全组中允许端口(3306用于Mysql)。由于您的端口未打开,因此AWS将无法建立连接 在这种情况下,如果在部署之前没有安装Mysql,则必须在实例中安装Mysql

    当您尝试使用您的本地开发(Tomcat)时会发生什么,因此,在我们的代码中,我们提到localhost:3306作为连接URL,并且在同一台机器上(您的开发和MySQL),它工作得很好