Hibernate 経由で Oracle バックエンドにアクセスする Java Spring ベースの Web アプリケーションを構築しています。
スタック/ツールは次のとおりです。
- トムキャット6
- メイヴン3
- 春 (mvc、web、orm) 3.2.0
- 休止状態 4.1.9
- オラクル 11g リリース 2
- Intellij IDEA。
ローカル マシンから RDS にアクセスするには、localhost:2521 を our-rds-instance-name.wercytsdzeszx.us-east-1.rds.amazonaws.com:1521 にポート フォワーディングします。
tomcat6-maven-plugin を使用して組み込み Tomcat を実行しています。テスト用の Maven 構成はクリーン パッケージ 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*
詳細を提供することはできますが、最初に主な問題を明らかにしたかったので、役に立たない情報で水域を汚さないようにしました。
すべてのフィードバックに感謝します。
トニー