前提・実現したいこと
現在タスク管理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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/08 05:17
2021/07/08 13:08
2021/07/11 02:03
2021/07/11 10:50