Java EE 환경의 오브젝트 풀링
Java EE Application Server는 메시지 구동 Bean 응용프로그램, Enterprise Java Bean및 Servlet에서 사용할 수 있는 연결 풀링 기능을 제공합니다.
WebSphere® Application Server 는 성능을 향상시키기 위해 JMS 제공자에 대한 연결 풀을 유지보수합니다. 애플리케이션이 JMS 연결을 작성할 때 애플리케이션 서버는 사용 가능한 연결 풀에 연결이 이미 있는지 여부를 판별합니다. 있는 경우 연결이 애플리케이션에 리턴됩니다. 그렇지 않으면 새 연결이 작성됩니다.
IBM® MQ 메시징 제공자를 사용하는 경우, 아웃바운드 메시징을 수행하는 애플리케이션 (예: 엔터프라이즈 Java Bean및 서블릿) 및 메시지 구동 Bean 리스너 포트 컴포넌트는 이러한 연결 풀을 사용할 수 있습니다.
IBM MQ 메시징 제공자 활성화 스펙은 IBM MQ 자원 어댑터에서 제공하는 연결 풀링 기능을 사용합니다. 자세한 정보는 WebSphere MQ 자원 어댑터의 특성 구성 을 참조하십시오.
연결 풀 사용의 예에서는 아웃바운드 메시징을 수행하는 애플리케이션과 수신기 포트가 JMS 연결을 만들 때 무료 풀을 사용하는 방법을 설명합니다.
무료 연결 풀 유지 관리 스레드에서는 애플리케이션 또는 수신기 포트가 연결을 완료했을 때 이러한 연결에 어떤 일이 발생하는지 설명합니다.
풀 유지 관리 스레드 예제에서는 JMS 연결이 부실해지는 것을 방지하기 위해 무료 연결 풀을 정리하는 방법을 설명합니다.
WebSphere Application Server 에는 연결 팩토리의 최대 연결 수 특성으로 지정되는 팩토리에서 작성할 수 있는 연결 수에 대한 한계가 있습니다. 이 특성의 기본값은 10이며 한 번에 하나의 연결 팩토리에서 최대 10개의 연결을 작성할 수 있음을 의미합니다.
각 팩토리는 연관된 여유 연결 풀이 있습니다. 애플리케이션 서버가 시작되면 여유 연결 풀이 비어 있습니다. 팩토리에 대한 여유 풀에 존재할 수 있는 최대 연결 수는 최대 연결 수 특성에서도 지정됩니다.
WebSphere Application Server에서 연결 풀링이 작동하는 방법에 대한 정보는 JMS 연결에 대한 연결 풀링 구성을 참조하십시오. 다른 애플리케이션 서버의 경우 적절한 애플리케이션 서버 문서를 참조하십시오.
연결 풀이 사용되는 방법
모든 JMS 연결 팩토리에는 연관된 연결 풀이 있으며 연결 풀에는 0개이상의 JMS 연결이 포함되어 있습니다. 모든 JMS 연결에는 연관된 JMS 세션 풀이 있으며 모든 JMS 세션 풀에는 0개이상의 JMS 세션이 포함되어 있습니다.

- connectionFactory.createConnection()
- ConnectionFactory.createConnection(String, String)
- QueueConnectionFactory.createQueueConnection()
- QueueConnectionFactory.createQueueConnection(String, String)
- TopicConnectionFactory.createTopicConnection()
- TopicConnectionFactory.createTopicConnection(String, String)
풀에 여유 연결이 없고 이 팩토리에서 작성된 연결 수가 해당 팩토리의 maximum connections 특성에 지정된 한계에 도달하지 않은 경우 연결 관리자는 애플리케이션이 사용할 새 연결을 작성합니다.
그러나 애플리케이션이 연결 작성을 시도하지만 이 팩토리에서 작성된 연결 수가 이미 팩토리의 maximum connections 특성과 동일한 경우 애플리케이션은 연결이 사용 가능해질 때까지(여유 풀에 돌아올 때까지) 기다립니다.
애플리케이션이 대기하는 시간은 연결 풀의 connection timeout 특성에 지정되고 기본값은 180초입니다. 연결이 180초 내에 여유 풀에 돌아오면 연결 관리자가 즉시 풀에서 가져와서 애플리케이션에 전달합니다. 하지만 제한시간이 초과하면 ConnectionWaitTimeoutException이 발생합니다.
- Connection.close()
- QueueConnection.close()
- TopicConnection.close()
