java - 使用 Play 框架的 EC2 连接到 RDS

标签 java amazon-ec2 playframework amazon-rds

我有一个使用 Play 框架构建的小型站点,我试图在 EC2 服务器上针对 Amazon RDS 实例运行该站点。我可以在我的机器上针对 RDS 实例运行该应用程序,一切正常。但是当我将它部署到我的 EC2 服务器时,出现了这个错误:

The last packet successfully received from the server was 1,282,977,731,085 milliseconds ago.  The last packet sent successfully to the server was 0 milliseconds ago.
        at play.db.DBPlugin.onApplicationStart(DBPlugin.java:87)
        at play.Play.start(Play.java:381)
        at play.Play.init(Play.java:247)
        at play.server.Server.main(Server.java:85)
Caused by: java.net.ConnectException: Connection refused

我的第一个想法是它是某种安全设置,但我有一个基于 Spring 的应用程序在同一台 EC2 服务器上的 Tomcat 中运行,使用相同的用户名和密码连接到同一 RDS 实例,并且它工作得很好。只有 Play 应用程序存在连接问题。

我似乎无法解释为什么会发生这种情况,也无法提出解决方法。

有人以前见过这样的东西吗?

最佳答案

问题出在 application.conf 文件上。如果您像这样指定本地数据库:

db=mysql:root:pass@db

你的产品数据库是这样的:

%prod.db.url=jdbc:mysql://<your-db-ip>:3306/db
%prod.db.user=db_user
%prod.db.pass=db_pass

尝试在生产环境中运行时会出现此错误,因为 Play!实际上正在尝试使用 db=mysql:root:pass@db 参数进行连接,因为产品参数不会具体覆盖该参数。要解决此问题,请务必在本地和生产环境中以相同的方式连接到数据库。这对我有用:

db.url=jdbc:mysql://localhost:3306/db
db.user=root
db.pass=pass

%prod.db.url=jdbc:mysql://<your-db-ip>:3306/db
%prod.db.user=db_user
%prod.db.pass=db_pass

关于java - 使用 Play 框架的 EC2 连接到 RDS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3589782/

相关文章:

java - 使 javafx textArea 的背景清晰

java - 如何获取任何网站的 JSON 数据以在我的 android native 应用程序中解析和使用

mysql - 如何将 Scala StaticQuery SELECT 查询的结果直接发送到 JSON 对象

java - 使用 Play Framework 的电子邮件提取器

javascript - 设置元素 id = javascript 函数

java - 用于隐藏 Java Web 服务的身份验证详细信息的外观

java - 我希望这个程序在用户输入其尺寸的长度和宽度时显示一个星号框

linux - 在 EC2 实例上设置 SSL 证书

python - 在 AWS Elastic Beanstalk 上创建 Django super 用户

php - EC2 集群上的 Nginx 扩展和瓶颈识别