質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

1回答

1409閲覧

SpringBoot製APIをAWS Elastic BeansTalkにデプロイした場合にDB接続できない

Omoju1928

総合スコア0

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

1クリップ

投稿2021/07/06 07:22

編集2021/07/06 07:25

前提・実現したいこと

現在タスク管理Webアプリケーションを作成していますが、AWS関連で問題に直面しています。
SpringBootを用いたJavaから、AWS上で稼働しているPostgreSQLのRDBに対してtruncateを発行するAPIを作成し、MavenビルドしてAWS Elastic beansTalK上にデプロイしました。

ローカル環境上でHTTPリクエストを発行して処理を実行した際には正常に動いていたのですが、、
AWS上にデプロイしたAPIに対して処理を実行するようにHTTPリクエストを発行すると、以下のエラーが発生してしまいます。

発生している問題・エラーメッセージ

Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:467) org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:400) org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:595) org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:382) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750) org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692) dev.itboot.rest.repository.service.TaskService$$EnhancerBySpringCGLIB$$666f3ff5.truncate(<generated>) dev.itboot.rest.controller.TaskController.save(TaskController.java:51) java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.base/java.lang.reflect.Method.invoke(Method.java:566) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1063) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) javax.servlet.http.HttpServlet.service(HttpServlet.java:681) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) javax.servlet.http.HttpServlet.service(HttpServlet.java:764) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.base/java.lang.Thread.run(Thread.java:829)

application.yml(設定ファイル)

server:
port: 5000
mybatis:
configuration:
map-underscore-to-camel-case: true
type-aliases-package: dev.itboot.mb.model
mapper-locations: classpath*:/dev/itboot/mb/mapper/TaskMapper.xml
spring:
jpa:
database: POSTGRESQL
datasource:
url: jdbc:postgresql://xxxxxxxxx.c24wcvafvnyz.ap-northeast-1.rds.amazonaws.com:5432/testdb(デプロイしたものには正しいurlを記載しています)
username: postgres
password: xxxxxxxxxxxxxx(デプロイしたものには正しいパスワードを記載しています)
hikari:
maximum-pool-size: 10

また、ソースコードの該当処理は以下のservice.truncate()です。

Java

1 @PostMapping("/") 2 String save(@RequestBody Task[] taskList) { 3 cHandler.setLevel(Level.SEVERE); 4 logger.addHandler(cHandler); 5 String statusMsg = "DB access is OK"; 6 7 try { 8 service.truncate(); 9 for(Task task:taskList) { 10 repository.save(task); 11 } 12 } catch(Exception e) { 13 StringBuilder sb = new StringBuilder(); 14 logger.log(Level.SEVERE,"error: " , e); 15 sb.append(e.getMessage() + "@" + e.getCause() + "@"); 16 StackTraceElement[] steArr = e.getStackTrace(); 17 for(StackTraceElement ste :steArr) { 18 sb.append(ste.toString() + "@") ; 19 } 20 return gson.toJson(sb.toString()); 21 } 22 return gson.toJson(statusMsg); 23 }

試したこと

application.ymlに色々設定を足してみたりしましたが、どれも効果はなく。。。
ローカル環境上だと正しく動きますので、問題はMavenビルドした後のjarに問題があるのか、
それともAWS上にデプロイした状態でDB接続を行う際に何か必要な設定があるのか、、、
完全にお手上げ状態です。どなたか、助けていただけませんでしょうか。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Spring Boot 2.5.1以降をお使いでしょうか?
それであれば、初期化方法が変更されているので、以下の追加をお試しください。

application.yml(設定ファイル)

yaml

1spring: 2 sql: 3 init: 4 mode: always

バージョン別の初期化モードの一覧も、追記させて頂きます。

yaml

1# Spring Boot 2.5.1以降の場合 2spring.sql.init.mode: always 3 4# Spring Boot 2.5.0の場合 5# 設定不要 6 7# Spring Boot 2.4や2.3の場合 8spring.datasource.initialization-mode: always 9

投稿2021/07/06 17:08

編集2021/07/10 14:26
KT001

総合スコア618

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Omoju1928

2021/07/08 05:17

KT001様 ご回答いただきありがとうございます! ご提案いただきました設定を反映させてみましたが、同じエラーが発生してしまいました。。 一体何が原因なんでしょうかね。。????
KT001

2021/07/08 13:08

こちら、ローカルからAmazon RDS(PostgreSQL)に接続した場合は、問題なく全処理が動く感じでしょうか? もし動くなら、Elastic BeansTalkの環境かもしれませんね。。 掲載可能でしたら、service.truncate();の中の処理を掲載して頂くことは可能でしょうか?
Omoju1928

2021/07/11 02:03

KT001様 返信が遅くなってしまい申し訳ございません。 ローカルからAmazon RDS(PostgreSQL)に接続し、service.truncate()を実行した際には問題なく動作します! そのため仰っておられる通り、Elastic BeansTalkの環境の問題の可能性が高そうですかね。。。 一応service.truncate()の中身も記載いたします!シンプルなtruncate文です。Mybatisでマッピングしているので、xmlファイルの中身を記載させて頂きますね。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="dev.itboot.rest.mapper.TaskMapper"> <insert id="insert"> INSERT INTO task(id,taskname) VALUES (#{id}, #{taskName}) </insert> <delete id="truncate"> TRUNCATE TABLE task; </delete> </mapper>
KT001

2021/07/11 10:50

Elastic Beanstalk以外で動作するのであれば、環境の問題が高そうですね。。。 起動ポートも5000番で問題ないように見えるのですが、何かAWSでカスタマイズしているものは、ございますでしょうか? (例えば、別々のVPCにしているとか、セキュリティグループをカスタマイズしている等)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問