동일한 JDBC 연결을 사용하여 Spring Boot REST API를 여러 번 호출하는 경우
P粉769045426
2023-08-27 09:40:00
<p>Java/Spring Boot로 작성되었으며 Tomcat 9에서 실행되는 REST 웹 서비스가 있습니다. </p>
<p>한 웹 서비스 호출에서 MySQL 임시 테이블을 생성하고 다른 서비스 호출에서 해당 테이블에 액세스해야 합니다. 임시 테이블은 연결 범위이므로 첫 번째 호출에서 테이블을 생성할 때와 두 번째 호출의 "select" 쿼리에서 사용한 것과 동일한 연결을 사용해야 합니다. </p>
<p>문제는 Tomcat이 연결 풀에서 JDBC 연결을 관리한다는 것입니다. 두 번째 서비스 호출에서는 JDBC 연결 수에 관계없이 연결 풀에서 하나의 연결을 선택할 수 있습니다. 이 경우 임시 테이블은 표시되지 않습니다. </p>
<p>내 질문은: 연결 풀에서 동일한 연결을 어떻게 선택할 수 있습니까? 이를 구별하는 어떤 종류의 로고/라벨이 있습니까? </p>
후속 요청에서 "동일한" 연결이 사용되도록 보장할 수 있더라도 풀에서 연결을 할당하는 과정에는 세션 상태와 관련된 항목을 재설정하는 작업이 포함되므로 이는 도움이 되지 않습니다.
이것은 의도된 것이며 좋은 점입니다. 그렇지 않으면 한 데이터베이스 세션에서 관련되지 않은 다른 세션으로 개인 데이터가 유출될 수 있기 때문입니다. 예를 들어, 한 사용자가 일부 중요한 데이터를 임시 테이블에 저장한 후 다른 사용자의 데이터베이스 세션이 해당 임시 테이블을 읽을 수 있는 경우 이는 문제가 될 수 있습니다. 미해결 트랜잭션, 세션 변수 및 연결 문자 집합에도 동일하게 적용됩니다. 풀에서 연결이 할당되면 이들 모두가 재설정됩니다.
따라서 임시 테이블을 사용하는 경우 연결이 사용된 후 삭제되므로 동일한 요청 중에만 사용해야 합니다.
다음 요청에서 이전 요청의 데이터를 사용해야 하는 경우 다음을 수행할 수 있습니다.