�@������A�O��uXML���ȒP��Java�I�u�W�F�N�g�Ƀ}�b�s���O�v�Ɉ�������Commons�v���W�F�N�g�̊��p�@���Љ�܂��B�����2��A���Ńv�[�����O���e�[�}�ɂ��܂��B����́A�I�u�W�F�N�g�v�[�����O��e�ՂɎ������邽�߂�Pool�R���|�[�l���g�B�����Ď���́A�f�[�^�x�[�X�R�l�N�V�������s�����߂�DBCP�R���|�[�l���g�ɂ��Đ������Ă����܂��B
�@�I�u�W�F�N�g�̃v�[�����O�́A�p�t�H�[�}���X�����ړI�Ɏg�p����܂��B�v�[�����O�Ƃ́A���������I�u�W�F�N�g���v�[���ipool�j�ɒ~�ς��Ă����A�K�v�ɂȂ����ۂɃv�[������I�u�W�F�N�g�����o���ė��p���A�s�v�ɂȂ����ۂɂ̓I�u�W�F�N�g���v�[���ɖ߂����Ƃł��B���p����x�ɃI�u�W�F�N�g��������@�ɔ�ׁA���x�������Ƃ������_������܂��B
�@���K�͂ȃv���O�����ł̓I�u�W�F�N�g���v�[�������ʂ͂��܂肠��܂��A�Ⴆ�T�[�o�T�C�h�v���O���~���O�ł́A�X���b�h�I�u�W�F�N�g��f�[�^�x�[�X�R�l�N�V�����I�u�W�F�N�g�Ȃǂ́A�����ɃI�[�o�[�w�b�h��������I�u�W�F�N�g���v�[�����čė��p���邱�Ƃ��悭����܂��BJakarta Commons��Pool�R���|�[�l���g�́A�I�u�W�F�N�g���v�[�����邽�߂̃��J�j�Y������܂��B���̌��e���M���_�ł�Pool�R���|�[�l���g�̍ŐV�o�[�W������1.0.1�ł��B
�@Pool�̍������Ȃ��C���^�[�t�F�C�X�Ƃ��āAObjectPool�iorg.apache.commons.pool.ObjectPool�j��PoolableObjectFactory�iorg.apache.commons.pool.PoolableObjectFactory�j��2�̃C���^�[�t�F�C�X������܂��B
�@ObjectPool�̓I�u�W�F�N�g�v�[���C���X�^���X�𗘗p���邽�߂̃C���^�[�t�F�C�X�ŁAPoolableObjectFactory�̓I�u�W�F�N�g�v�[���ɒ~�ς���I�u�W�F�N�g�̃��C�t�T�C�N�����Ǘ����邽�߂̃C���^�[�t�F�C�X�ł��BPool��p���ăI�u�W�F�N�g�v�[������������ɂ́A�ʏ�܂��v�[������I�u�W�F�N�g�̃��C�t�T�C�N�����Ǘ�����PoolableObjectFactory�C���^�[�t�F�C�X�̎����N���X���������A����PoolableObjectFactory�C���^�[�t�F�C�X�̎����N���X���R���X�g���N�^�ɗ^����ObjectPool�C���^�[�t�F�C�X�̎����N���X�̃C���X�^���X�����܂��B��͐�������ObjectPool�C���X�^���X����I�u�W�F�N�g�����o���ė��p���A�s�v�ɂȂ������_��ObjectPool�C���X�^���X�ɃI�u�W�F�N�g��Ԃ��킯�ł��B
�@ObjectPool���\1�̂悤�ȃ��\�b�h�����C���^�[�t�F�C�X�ł��B�����̃��\�b�h�̂����K�{�Ȃ̂�borrowObject�AreturnObject�Aclose��3�ł��B
���\�b�h�� | ���� | |
---|---|---|
borrowObject | �v�[������I�u�W�F�N�g�����o�� | |
clear | �v�[�����̃A�C�h����Ԃ̃I�u�W�F�N�g���N���A����i�I�v�V�����j | |
close | �v�[�����N���[�Y���� | |
getNumActivate | �v�[��������o����ė��p����Ă���I�u�W�F�N�g�̌���Ԃ��i�I�v�V�����j | |
getNumIdle | �v�[�����̃A�C�h����Ԃ̃I�u�W�F�N�g�̌���Ԃ��i�I�v�V�����j | |
returnObject | �v�[��������o�����I�u�W�F�N�g��ԋp���� | |
setFactory | �I�u�W�F�N�g�����邽�߂�PoolableObjectFactory��ݒ肷��i�I�v�V�����j | |
�@ObjectPool#borrowObject()���\�b�h�͈����Ȃ��ŃI�u�W�F�N�g���v�[��������o���܂��B�P�Ƀv�[�����O����̂ł͂Ȃ��A����L�[�ƃI�u�W�F�N�g�����ѕt���ĊǗ��������ꍇ�́AObjectPool�̑����KeyedObjectPool�C���^�[�t�F�C�X�iorg.apache.commons.pool.KeyedObjectPool�j�̎����N���X��p���܂��BKeyedObjectPool�C���^�[�t�F�C�X�͈����Ȃ���borrowObject()���\�b�h�̑����java.lang.Object�N���X�̃I�u�W�F�N�g�������Ɏ���borrowObject()���\�b�h�������Ă���A���̃��\�b�h��p���邱�ƂŃL�[���w�肵�ăI�u�W�F�N�g���v�[��������o�����Ƃ��ł���悤�ɂȂ��Ă��܂��B
�@Pool�ɂ�ObjectPool�̎����N���X�Ƃ���GenericObjectPool�AStackObjectPool�ASoftReferenceObjectPool��3�i���ꂼ��org.apache.commons.pool.impl�p�b�P�[�W�j���p�ӂ���Ă��܂��i�����ɑΉ�����KeyedObjectPool�̎����N���X������܂��j�B���ꂼ��̃N���X�̐������\2�ɂ܂Ƃ߂Ă����܂��B�܂��AObjectPool�̎����N���X��Ǝ��ɍ쐬���邱�Ƃ��ł��܂��B���̏ꍇ�ABaseObjectPool�N���X�iorg.apache.commons.pool.BaseObjectPool�j�̃T�u�N���X�Ƃ��č쐬���邱�Ƃ���������Ă��܂��B
�N���X�� | ���� | |
---|---|---|
GenericObjectPool | �ėp�I�ȃI�u�W�F�N�g�v�[�� | |
StackObjectPool | ���肳�ꂽ���̃I�u�W�F�N�g���v�[������悤�ȃI�u�W�F�N�g�v�[���B�������A�C�h����Ԃ̃I�u�W�F�N�g���Ȃ��Ƃ��ɃI�u�W�F�N�g�̎��o���v���������ꍇ�ɂ͐V�K�ɃI�u�W�F�N�g������ | |
SoftReferenceObjectPool | �A�C�h����Ԃ̃C���X�^���X���K�X�K�x�[�W�R���N�^�ɂ���ď��������悤�ȃI�u�W�F�N�g�v�[�� | |
�@PoolableObjectFactory���\3�̂悤�ȃ��\�b�h�����C���^�[�t�F�C�X�ł��B���̃C���^�[�t�F�C�X�̎����N���X�̓I�u�W�F�N�g�v�[�����I�u�W�F�N�g�̃��C�t�T�C�N�����Ǘ����邽�߂ɗp�����܂��B�ʏ�ObjectPool�̎����N���X��PoolableObjectFactory�I�u�W�F�N�g�������Ɏ��R���X�g���N�^�������Ă���A�����Ƃ��Ďw�肳�ꂽPoolableObjectFactory��p���ăI�u�W�F�N�g�̊Ǘ����s���悤�ɂȂ��Ă��܂��i�Ȃ�KeyedObjectPool�̎����N���X�̃R���X�g���N�^�ɂ�KeyedPoolableObjectFactory�N���X�iorg.apache.commons.pool.KeyedPoolableObjectFactory�j�̃I�u�W�F�N�g���w�肵�܂��j�B
���\�b�h�� | ���� | |
---|---|---|
makeObject | �I�u�W�F�N�g��V�K�ɐ������� | |
activateObject | �I�u�W�F�N�g���v�[��������o�����O�ɌĂ�� | |
passivateObject | �I�u�W�F�N�g���v�[���ɕԋp���ꂽ�Ƃ��ɌĂ�� | |
validateObject | �v�[��������o�����I�u�W�F�N�g�������ł��邩�ǂ����肷�� | |
destroyObject | �v�[������I�u�W�F�N�g���j�������Ƃ��ɌĂ�� | |
�@PoolableObjectFactory�̎����N���X�̍쐬���ȕ։����邽�߂̊��N���X�Ƃ��āABasePoolableObjectFactory�N���X�iorg.apache.commons.pool.BasePoolableObjectFactory�j���p�ӂ���Ă��܂��B
�@����ł̓T���v���v���O������p���ċ�̓I��Pool�̎g������������Ă��������Ǝv���܂��B�T���v���v���O�����̓f�[�^�x�[�X�ɑ��Ďw�肵���������N�G�X�g�s����悤��Web�A�v���P�[�V�����ł��B�f�[�^�x�[�X�ւ̃A�N�Z�X��JDBC�h���C�o����������Connection�I�u�W�F�N�g�ijava.sql.Connection�j��p���čs���܂����A�{�T���v���v���O�����ł�Pool��p���Ă���Connection�I�u�W�F�N�g���v�[�����O���čė��p���܂��B
�@�{�e�̃T���v���v���O�����삳����ɂ�Tomcat��MySQL���K�v�ł��i����m�F��Tomcat 4.1.18��MySQL 2.23.51�̑g�ݍ��킹�ōs���܂����j�B�v���O�����̃A�[�J�C�u������������_�E�����[�h�ł��܂��B�_�E�����[�h�����A�[�J�C�u��W�J���Ăł���sample�f�B���N�g����Tomcat��webapps�f�B���N�g���ȉ��ɃR�s�[����Web�u���E�U����http://localhost:8080/sample/index.jsp�ɃA�N�Z�X���Ă��������iTomcat�̃g�b�v�y�[�W��URL��http://localhost:8080/�Ƃ��܂��j�B��������1�̂悤�ȉ�ʂ��\������܂��B
�@�uPush!�v�Ə�����Ă���{�^���������ƁA�e�L�X�g�{�b�N�X�Ŏw�肳�ꂽ�������̏������J��Ԃ��ď������Ԃ̍��v�i�b�j��\�����܂��B
�@�u�v�[�����g�p���Ȃ��f�[�^�x�[�X�A�N�Z�X�v�̍��̃{�^���������ƁA����Connection�I�u�W�F�N�g�����ăf�[�^�x�[�X�ɃA�N�Z�X���܂��B����ɑ��āu�v�[�����g�p����f�[�^�x�[�X�A�N�Z�X�v�̍��̃{�^���������ƁAConnection�I�u�W�F�N�g������̂ł͂Ȃ��I�u�W�F�N�g�v�[������Connection�I�u�W�F�N�g�����o���ăf�[�^�x�[�X�A�N�Z�X���s���܂��B��҂̕���Connection�I�u�W�F�N�g������R�X�g��������Ȃ��������ɏ������s�����Ƃ��ł��܂��B
�@��������A�{�e�̃T���v���v���O�����ɂ�����Pool�̗��p���@�ɂ��ċ�̓I�ɐ������Ă����܂��BPool��p���ăI�u�W�F�N�g�̃v�[�����O����������ɂ́A�܂�ObjectPool�̃C���X�^���X�����܂��B������s���Ă���̂�index.jsp��jspInit()���\�b�h�ł��i���X�g1�j�B
���X�g1�@index.jsp��jspInit()���\�b�h |
/** |
�@�I�u�W�F�N�g�v�[���𗘗p����ɂ́A�v�[�����O����I�u�W�F�N�g�̃��C�t�T�C�N�����Ǘ����邽�߂�PoolableObjectFactory�C���^�[�t�F�C�X�̎����N���X��p�ӂ���K�v������܂��B���̂��߂܂�Connection�I�u�W�F�N�g�̃��C�t�T�C�N�����Ǘ�����SimpleConnectionFactory�N���X�inet.skirnir.sample.SimpleConnectionFactory�j�̃C���X�^���X�����܂��i1�j�B�ʏ�Pool���g���ăI�u�W�F�N�g�v�[�����O����������ɂ́A���̂悤�ɓƎ���PoolableObjectFactory�̎����N���X��p�ӂ���K�v������܂��B
�@SimpleConnectionFactory�N���X��BasePoolableObjectFactory�̃T�u�N���X�Ƃ��č쐬���Ă���܂��i���X�g2�j�B�����ł�Connection�I�u�W�F�N�g�����邽�߂�makeObject()���\�b�h�̂ݎ������Ă��܂����A�v�[�����O����I�u�W�F�N�g�̐����ɂ���Ă�PoolableObjectFactory�C���^�[�t�F�C�X�̂��̂ق��̃��\�b�h����������K�v�����邩������܂���B
���X�g2�@SimpleConnectionFactory.java�i�����j |
public class SimpleConnectionFactory extends BasePoolableObjectFactory |
�@�b��jspInit()�ɖ߂��܂��BConnectionFactory�N���X�̃C���X�^���X��������A��������ConnectionFactory�C���X�^���X���R���X�g���N�^�̈����Ƃ��ė^����ObjectPool�̃C���X�^���X�����܂��i2�j�B�����ł�StackObjectPool�N���X��p���Ă��܂��B�Ȃ��I�u�W�F�N�g�v�[���̃C���X�^���X�̐����ɂ́A���ڃR���X�g���N�^���Ăяo�����@�̂ق��Ƀt�@�N�g���N���X��p������@������܂��BStackObjectPool�N���X�ɑΉ�����t�@�N�g���N���X�Ƃ��Ă�StackObjectPoolFactory�N���X�iorg.apache.commons.pool.impl.StackObjectPoolFactory�j���p�ӂ���Ă��܂��B
�@�ȏ�ŏ����������͏I���ł��B���̌�Web�u���E�U��ŁuPush!�v�{�^���������ƃf�[�^�x�[�X�A�N�Z�X���s�����������s����܂��Bindex.jsp�̂����A���̏����Ɋւ��镔�������X�g3�Ɏ����܂��B
���X�g3�@�{�^�����������Ƃ��̏����i�����j |
Connection con = null; |
�@���X�g3�ł�getConnection()���\�b�h��Connection�I�u�W�F�N�g���擾���A�f�[�^�x�[�X�Ƀ��N�G�X�g�𑗐M������returnConnection()���\�b�h��Connection�I�u�W�F�N�g�̎g�p���I�����Ă��܂��BgetConnection()�I�u�W�F�N�g��returnConnection()�I�u�W�F�N�g�͂��ꂼ�����X�g4�����X�g5�̂悤�ɋL�q����Ă��܂��B
���X�g4�@index.jsp��getConnection()���\�b�h |
/** |
���X�g5�@index.jsp��returnConnection()���\�b�h |
/** |
�@���X�g4�ł͐�قǐ��������I�u�W�F�N�g�v�[���̃C���X�^���X�ɂ���ObjectPool#borrowObject()���\�b�h���Ăяo�����Ƃɂ����Connection�I�u�W�F�N�g���v�[��������o���Ă��܂��i3�j�B����A���X�g5�ł�ObjectPool#returnObject()���\�b�h���Ăяo����Connection�I�u�W�F�N�g���v�[���ɕԋp���Ă��܂��i4�j�B�Ȃ��A�K�v�ȏ�����������I�������͒ʏ�PoolableObjectFactory�N���X���s���Ă���܂��̂ŁA�v�[������I�u�W�F�N�g�����o�����Ƃ���Connection�I�u�W�F�N�g��������������A�v�[���ɃI�u�W�F�N�g��ԋp����Ƃ���Connection�I�u�W�F�N�g���N���[�Y�����肷��K�v�͂���܂���B
�@�܂Ƃ߂�ƁAPool��p�����I�u�W�F�N�g�v�[���̗��p�̗���͈ȉ��̂悤�ɂȂ�܂��B
�i1�j | �v�[������I�u�W�F�N�g�̂��߂�PoolableObjectFactory�C���^�[�t�F�C�X�̎����N���X�̃C���X�^���X�i�ȉ�pof�j������ |
---|---|
�i2�j | ���������C���X�^���Xpof���R���X�g���N�^�̈����ɗ^����ObjectPool�C���X�^���X�i�ȉ�op�j������ |
�i3�j�i4�j | �K�v�ɉ����Ĉȉ��̏������J��Ԃ� �Eop.borrowObject()���\�b�h��p���ăI�u�W�F�N�g���v�[��������o���i�ȉ�o�j �E��o�����I�u�W�F�N�go���g�p���� �Eop.returnObject()���\�b�h��p���Ď��o�����I�u�W�F�N�go���v�[���ɕԋp���� |
�@�����Pool�����֗��Ƀf�[�^�x�[�X�̃R�l�N�V�������v�[�����O�ł���DBCP���Љ�܂��B
���c���F�i�悱�� �����Ђ��j
�����H�Ƒ�w���ƌ�A�i���j���łɓ��ЁB���݁A�m�����f�B�A���{���g���[�ɂăR�~���j�e�B�x�[�X��L�V�X�e���̌����ɏ]���B���w�Z�̂��납��R���s���[�^�ɐG��A��ɃQ�[���v���O���~���O��ʂ���BASIC�A�A�Z���u�����͂��߂Ƃ��鑽���̌�����w�ԁBJava�ł�Jakarta�v���W�F�N�g�̐��ʕ��𗘗p���Ă������Ŏ��Web�A�v���P�[�V�����v���O���~���O�̖ʔ����Ɉ�����AJa-Jakarta�v���W�F�N�g�̊����ɍv���������ŃI�[�v���\�[�X��Java�x�[�X��Web�R���e���c�Ǘ��V�X�e���ł���Kvasir/Sora�̊J�����s���Ă���B
Copyright © ITmedia, Inc. All Rights Reserved.