gpt4 book ai didi

java - 部署的 Tomcat 6 webapp 无法连接到 Amazon RDS Oracle 实例

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:09:12 28 4
gpt4 key购买 nike

我们正在构建一个基于 Java Spring 的 Web 应用程序,它通过 Hibernate 访问 Oracle 后端。

这是我们的堆栈/工具:

  • Tomcat 6
  • 行家 3
  • Spring(mvc、web、orm)3.2.0
  • hibernate 4.1.9
  • Oracle 11g 第 2 版
  • Intellij IDEA。

为了从本地机器访问 RDS,我们将端口转发 localhost:2521 到 our-rds-instance-name.wercytsdzeszx.us-east-1.rds.amazonaws.com:1521

我们正在使用 tomcat6-maven-plugin 运行嵌入式 Tomcat。我们用于测试的 Maven 配置是 clean package tomcat6:run-war-only。这会将 WAR 文件部署到 http://app.local:8080/our-app-name/并允许我们通过此链接测试网站。

使用 Hibernate,当我们从本地嵌入式 Tomcat 实例运行 Web 应用程序时,我们可以成功连接到 RDS 实例。

但是 - 这就是它变得愚蠢的地方 - 当我们将 WAR 文件部署到我们的 EC2 实例(它是有权访问 RDS 实例的安全组的一部分)时,应用程序无法再访问数据库。我们收到此错误:

org.hibernate.exception.GenericJDBCException: 无法打开连接

这让我很困惑。我们已经在运行 Tomcat 的 EC2 实例上安装了 SQLPlus,我们可以连接到 RDS 实例,因此 EC2 实例确实有权连接到 RDS 实例。

我们的本地连接字符串看起来像这样:*jdbc:oracle:thin:USER_NAME/password@localhost:2521/sid*

我们的 EC2(暂存)实例连接字符串如下所示:*jdbc:oracle:thin:USER_NAME/password@our-rds-instance-name.wercytsdzeszx.us-east-1.rds.amazonaws.com:1521/sid*

我可以提供更多细节,但我首先想弄清楚主要问题,这样我就不会用无用的信息搅浑水。

我感谢所有反馈。

托尼

最佳答案

我已经解决了这个问题。

事实证明,罪魁祸首是 Oracle 时区错误(ORA-01882:未找到时区区域)。我们用于 EC2 AMI 的 Ubuntu 服务器有一个默认时区集,我猜 Java 或 Oracle 无法识别它。我看到了那个错误,但无知地认为它不可能与数据库连接错误有关。

我们使用 dpkg-reconfigure tzdata 命令将时区设置为正确的时区并重新启动 Tomcat。这使我们能够成功连接到 Oracle 数据库。

托尼

关于java - 部署的 Tomcat 6 webapp 无法连接到 Amazon RDS Oracle 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427133/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com