>

웹 응용 프로그램에서 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 풀에서 이것을 달성하는 방법을 알고 싶습니다.


  • 이전 android - 동적으로 생성 된 프래그먼트에서 customList의 거짓 데이터
  • 다음 c# - datadridview에서 행 위치를 변경하는 방법은 무엇입니까?