2013-03-23 1 views
1

jbdc에 멀티 스레딩 액세스 문제가 있다고 들었습니다. 나도 다른 게시물에서 권장하는 boneCP를 들었지만, 다른 누군가가 비동기적인 것들에 대해 쉽고 높은 성능을 발견했는지 궁금합니다.이 java/MySQL 데이터베이스 프로그램에 사용할 연결 풀 API가 무엇인지 확실하지 않습니다.

또한 Apache 버전이 Java 1.6 이상에서는 작동하지 않을 수도 있고 'm using java.runtime.version : 1.7.0_07-b11

답변

1

실제로 다른 API를 시도한 후에 BoneCP에 정착했습니다. Java 1.7에서 사용하고 있으며 높은 동시성 상황에서도 훌륭하게 작동합니다. 또한 개발자는 문제를보고 할 때 반응 적입니다.

나는 이전에 C3P0을 사용했지만 BoneCP로 전환 한 후에는 매우 이상한 버그가있었습니다. C3P0을 조금이라도 파헤 치면 몇 년 동안 그대로 유지되었으며 개발이 재개되었다는 것을 알 수 있습니다. 그것은 내 응용 프로그램에서 이상한 시간에 고장.

일반적인 MySQL JDBC 패키지의 MysqlConnectionPoolDataSource을 사용합니다. 그럼 난 그냥 (당신이 원하는대로 설정을 조정할 수 있습니다) 다음과 같은 일을 설정합니다

pbds = new BoneCPDataSource();  
pbds.setDatasourceBean(mysqlcpds); 
pbds.setMinConnectionsPerPartition(1);    
pbds.setMaxConnectionsPerPartition(10);  
pbds.setIdleConnectionTestPeriodInMinutes(60); 
pbds.setIdleMaxAgeInMinutes(240); 
pbds.setPartitionCount(1); 

를 그리고, 당신은 단지이 객체에서 Connection의를 얻을 (이 스레드 안전합니다.) 나는 몇에서 동일한 코드를 사용 스레드; 블록이 특히 편리하고 보일러의 많은 피할 시도 -과 - 자원 자바 7 (더 finally이 필요하지 않습니다 및 연결이 보장 폐쇄 예정) :

try(Connection conn = pbds.getConnection()) { 

    ... do stuff with conn 

} catch (SQLException e) {   
    e.printStackTrace(); 
} 
+0

이 달의 맛 것으로 보인다 API. 이상하게 작동합니까? 하나의 지속적인 연결을 유지했던 것과 마찬가지입니까? –

+0

나는 동의한다, 잠시 동안 좋은 옵션이없는 것처럼 보였다. 그러나 잠시 동안 검색을 한 후에 BoneCP를 고수했습니다. 어느 것이 단일 연결을 유지 했습니까? –

+0

확실하지 않습니다. 그것은 오늘 내가 읽은 글에서 언급되었다. 내가 그것을 내려다 보려고하면 3 시간을 보내고 그것을 결코 발견하지 못한다. (너무 평범한). 하지만 그래. 나는 이것을 줄 것이다. 확실히 내 자신의 예제 코드를 찾을 수 있지만 훌륭한 튜토리얼을 알고 있다면 여기에 놓으십시오. = D 감사합니다. –

관련 문제