我们正在构建一个基于Java的web应用程序,它通过Hibernate访问Oracle后端。
下面是我们的堆栈/工具:
要从本地机器访问RDS,我们将端口转发localhost:2521到our-rds-instance-name.wercytsdzeszx.us-east-1.rds.amazonaws.com:1521。
我们正在使用tomcat6-maven插件运行嵌入式Tomcat。我们的Maven测试配置是干净包tomcat6 6:只运行war。这将部署WAR文件到http://app.local:8080/our-app-name/,并允许我们通过这个链接测试站点。
使用Hibernate,当我们从本地嵌入式Tomcat实例运行web应用程序时,我们可以成功地连接到RDS实例。
然而,当我们将WAR文件部署到EC2实例(它是访问RDS实例的安全组的一部分)时,应用程序将无法再访问数据库。我们收到这个错误:
org.hibernate.exception.GenericJDBCException:无法打开连接
这让我心烦意乱。我们已经在运行Tomcat的SQLPlus实例上安装了EC2,并且可以连接到RDS实例,因此EC2实例确实可以连接到RDS实例。
我们的本地连接字符串应该如下所示:*jdbc:oracle:thin:USER_NAME/password@localhost:2521/sid*
我们的*jdbc:oracle:thin:USER_NAME/password@our-rds-instance-name.wercytsdzeszx.us-east-1.rds.amazonaws.com:1521/sid* (暂存)实例连接字符串如下所示:
我可以提供更多的细节,但我首先想得到的主要问题在那里,这样我就不会用无用的信息混水摸鱼。
我很感激所有的反馈。
托尼
发布于 2013-05-08 15:49:02
我已经解决了这个问题。
结果发现,Oracle时区错误(ORA-01882: timezone区域未找到)是罪魁祸首。我们为我们的EC2 AMI使用的Ubuntu服务器有一个默认的时区设置,我猜这是无法识别的。我已经看到了这个错误,但无知地认为它不可能与数据库连接错误有关。
我们使用dpkg-重新配置tzdata命令将时区设置为正确的时区,并重新启动Tomcat。这使我们能够成功地连接到Oracle数据库。
托尼
https://stackoverflow.com/questions/16427133
复制相似问题