홈>
웹 응용 프로그램에서 Tomcat JDBC 풀을 구성하고 Tomcat 버전 인 8.0.38 버전과 maven 종속성을 추가했습니다. 이제 해당 풀에서 연결을 가져오고 autoCommit 속성의 값을 확인하고 "true"로 설정 한 다음 해당 연결의 autoCommit을 "false"로 설정했습니다. 그런 다음 트랜잭션을 커밋 한 다음 해당 연결을 닫습니다. 이제 풀에서 다른 연결을 가져오고 autoCommit 속성 값을 확인하면 "false"입니다. 그러나 나는 그것이 사실이라고 기대했습니다. 또한 Apache Common DBCP2 풀링 라이브러리를 사용하는데 이런 종류의 동작은 없습니다. 공통 DBCP2 풀에서 연결할 때마다 autoCommit이 "true"로 설정된 연결을 리턴합니다. 나는 tomcat jdbc pool의 동작을 테스트하고 보았다.
Connection con1 = basicDataSourceWrite.getConnection();
con1.setAutoCommit(false);
System.out.println(con1.getAutoCommit()+ " con1 " );
con1.commit();
con1.close();
Connection con2 = basicDataSourceWrite.getConnection();
System.out.println(con2.getAutoCommit()+ " con2 " );
위 코드의 출력은
false con1
false con2
<bean id="basicDataSourceWrite" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="${mysqlEndpointWrite}" />
<property name="username" value="${mysqlUserWrite}" />
<property name="password" value="${mysqlPasswordWrite}" />
<property name="defaultAutoCommit" value="true" />
<property name="initialSize" value="4" />
<property name="maxActive" value="5" />
</bean>
여기서 defaultAutoCommit을 "true"로 설정해도 작동하지 않습니다. 항상 autoCoomit false와의 연결을 반환합니다.
따라서 일반적인 DBCP2가 이것을 관리하는 방법과 Tomcat JDBC 풀에서 이것을 달성하는 방법을 알고 싶습니다.
- 답변 # 1
관련 자료
- sql - ms access - 동일한 사용자 집합에 대한 다른 테이블의 다른 데이터를 하나의 테이블로 병합
- mysql - Tomcat 85 연결 풀이 DB 장애 조치 후 다시 연결되지 않음
- gcc - 암 인라인 어셈블리에 대한 다른 클러버 설명에 대한 혼란
- asp.net core - 다른보기 반환에 대한 문제
- rust - Vec에 비해 수명이있는 유형을 저장할 때 SmallVec의 동작이 다른 이유는 무엇입니까?
- java - Tomcat 8에서 특정 API 호출에 대해 SSL 연결을 비활성화하는 방법은 무엇입니까?
- gridview - Flutter에서 다른 Stateful 위젯을 연결하는 방법
- python - 배치 파일을 두 번 클릭하고 cronjob에서 실행하면 다른 동작
- python - OOP에서 객체의 동작에 대해 약간 혼란 스럽습니다
- c++ - Google Test에서 템플릿이 다른 여러 템플릿 클래스에서 동일한 동작을 테스트하는 방법은 무엇입니까?
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- JavaScript 변수를 HTML div에 '출력'하는 방법
- python - 문자열에서 특정 문자 제거
이것은 Tomcat JDBC의 알려진 버그 (또는 수정되지 않은 기능)입니다.
defaultAutoCommit
의 값 설정 충분하지 않으면 실제로 해당 설정을 적용하는 인터셉터도 활성화해야합니다. 이것은defaultAutoCommit
를 만들 것입니다 가치는 연결에 영향을 미칩니다.