AWS Beanstalk 与 DataNucleus 的 RDS 问题
Posted
技术标签:
【中文标题】AWS Beanstalk 与 DataNucleus 的 RDS 问题【英文标题】:AWS Beanstalk to RDS issues with DataNucleus 【发布时间】:2011-07-28 00:26:37 【问题描述】:我正在尝试运行部署到 Amazon Beanstalk 的 JSP 文件,该文件使用 DataNucleus 连接到 RDS,并且收到以下错误:
javax.jdo.JDOFatalDataStoreException:找不到适合 jdbc 的驱动程序:mysql://mydblahblah.rds.amazonaws.com:3306/mydb?autoReconnect=true 根本原因 java.sql.SQLException:找不到适合 jdbc 的驱动程序:mysql://bmydblahblah.rds.amazonaws.com:3306/mydb?autoReconnect=true java.sql.DriverManager.getConnection(DriverManager.java:640) java.sql.DriverManager.getConnection(DriverManager.java:200)现在我在类路径中有 MySQL 连接器文件(它位于 WebContent/WEB-INF/lib/mysql-connector-java-5.1.15-bin.jar
,所以这应该可以工作。
我还确认,如果我从那里删除库,我会收到“com.mysql.jdbc.Driver not found on CLASSPATH”错误。
这是我的datanucleus.properties
文件的样子:
所有这些都适用于连接到 RDS 的本地 Tomcat。只有在 Beanstalk 上运行时才会失败。
任何想法可能导致此问题?
谢谢
【问题讨论】:
不知道您的问题,除了在不同的位置尝试 jdbc 驱动程序,但只是想知道您是否有时间记录有关在 Beanstalk 上使用 DataNucleus 的内容并将其提供给 DataNucleus 项目?谢谢 在它工作之前,没有什么可记录的。 DataNucleus 是一个绝妙的想法,但让它发挥作用并始终如一地发挥作用绝非易事。 不用说它适用于我们提供的所有平台,并且没有报告的问题阻止其在这些平台上使用。人们始终有责任定义他们的问题,并有选择地为它做出贡献。 那是 JDBC 正在寻找驱动程序但没有找到它,而不是 DataNucleus。因此,您应该查看驱动程序的注册以及将其放在 CLASSPATH 中的位置并检查它是否正在注册 【参考方案1】:我 [几乎] 使用以下过程解决了这个问题: http://www.cubehouse.org/blog/2011/03/04/using-rds-aws-mysql-on-an-elastic-beanstalk-java-tomcat-server-with-ec2-security-permissions/
此外,您的 EC2 安全组需要为端口 3306 设置规则。 可悲的是,这段代码可以读但不能写。
【讨论】:
是的,我听说其他人在 DataNucleus 上遇到这个问题,甚至可以追溯到 2.2.1 版。他们降级回 2.0 以使其再次工作。我们会看看其他人是否有解决方案。 如上所述,JDBC是找不到JDBC驱动的东西,所以把你的注意力集中在JDBC注册机制上【参考方案2】:所以我们在没有任何其他更改的情况下降级到 DataNucleus 2.0,问题就消失了。伤心,但它奏效了。我不推荐使用 MySQL 的较新版本的 DataNucleus。
【讨论】:
发帖人花时间调试 Beanstalk 产品(问题与 DataNucleus 无关)datanucleus.org/servlet/forum/viewthread_thread,7643以上是关于AWS Beanstalk 与 DataNucleus 的 RDS 问题的主要内容,如果未能解决你的问题,请参考以下文章
AWS dynamoDB 与 Elastic Beanstalk。啥更符合我的目的?
AWS Beanstalk 与 DataNucleus 的 RDS 问题
一个 AWS 账户中的 Elastic Beanstalk 能否与另一个 AWS 账户中的 RDS 通信?
如何将 AWS 凭证与 Jenkins 一起使用以部署到 Elastic Beanstalk?