2014-03-27 5 views
0

우리는 데이터베이스의 인증을 사용하는 응용 프로그램을 가지고 있으며이를 연결에 사용합니다. 즉, 응용 프로그램에 로그인하면 응용 프로그램은 데이터베이스에 대한 해당 사용자 이름/암호로 연결을 시도하고 해당 연결을 해당 세션에 사용합니다. 따라서 Fred가 사용자 이름 "fred"로 응용 프로그램에 로그인하면 "fred"라는 데이터베이스에 사용자가 있어야하며 Fred는 응용 프로그램을 사용할 때 해당 연결을 사용합니다.Wildfly/JBoss에서 연결 풀링을 비활성화하는 방법은 무엇입니까?

우리는 이미 이것을 처리하는 데이터 소스를 가지고 있으며 데이터베이스 연결 풀링을 해제하면 Glassfish에서 작동합니다. 이제 Wildfly로 마이그레이션하고 싶지만이 기능을 사용할 수없는 것 같습니다.

응용 프로그램이 시작되면 Wildfly의 데이터베이스 설명자에서 사용자 이름/암호를 사용하여 "초기화"쿼리를 실행합니다. 그건 제대로 실행됩니다. 로그인을 시도하면 초기화 쿼리의 사용자도 연결에 속하게됩니다.

min-pool-size 및 max-pool-size를 1로 설정하려고했는데 JPA 구현이 "관리 연결을 가져올 수 없음"예외를 발생시킵니다.

<pool> 
    <min-pool-size>1</min-pool-size> 
    <max-pool-size>2</max-pool-size> 
    <use-strict-min>true</use-strict-min> 
    <allow-multiple-users>true</allow-multiple-users> 
    <prefill>false</prefill> 
    </pool> 

그 연결 풀링이 우리를 망치는 것 같다 :

다음 설정은 응용 프로그램이 시작되었지만 로그인 사용자가 연결에 사용자 이름과 일치하지 않기 때문에 로그인 할 수 없습니다 가져옵니다. 누구든지 풀링을 차단하는 방법에 대한 아이디어가 있습니까? 또는 누군가는 이것을 어떻게 다룰 것인가에 대한 아이디어가 있습니까?

답변

0

내가 잘못한 것을 알았습니다. . 원래 데이터 소스 코드는 결코 getConnection(username,password)이라고 불리지 않았습니다. 일단 내가 그것을 바꿨 더라면, 일이 잘 작동하는 것처럼 보입니다.

2

나는 응용 프로그램에 로그인하는 동일한 사용자와 함께 데이터베이스에 액세스하도록 설계된 응용 프로그램을 결코 가질 수 없습니다. 그것은 많은 이유로 데이터베이스 관리의 악몽 같은 나쁜 생각처럼 보입니다.

풀링은 이유 때문에 존재하므로 응용 프로그램에서 연결을 다시 사용할 수 있으며 각 사용자 또는 세션에 대한 연결을 열고 닫는 오버 헤드가 없습니다. 500 명의 사용자가있는 경우 대부분의 시간 동안 유휴 상태에 있거나 연결이 끊어 질 수있는 500 개의 연결이 있습니다. 데이터베이스에 액세스하는 사람을 기록해야하는 경우 간단히 기록하거나 테이블을 가질 수 있습니다. 응용 프로그램이 해당 정보를 기록합니다.

+0

나는 그것이 좋은 생각이라고 말하지 않고있다. 그러나 그것은 내 시간 전에 오래 결정된 디자인이다. 솔직히이 애플리케이션을 사용하는 500 명의 사용자는 많은 사용자가 될 것입니다. – MikeHoss