Commons�ŃI�u�W�F�N�g�v�[�����O�������F����Ɋ�����Jakarta Project�i5�j

» 2003�N04��12�� 00��00�� ���J
[���c���F�C�i���j����]

�@������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

Pool - �I�u�W�F�N�g�̃v�[�����O����������

�@�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

ObjectPool�C���^�[�t�F�C�X��PoolableObjectFactory�C���^�[�t�F�C�X

�@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

�\1�@ObjectPool�C���^�[�t�F�C�X�̃��\�b�h
���\�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

�\2�@ObjectPool�C���^�[�t�F�C�X�̎����N���X
�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

�\3�@PoolableObjectFactory�C���^�[�t�F�C�X�̃��\�b�h
���\�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

Pool�̎g�p��

�@����ł̓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

TvvO̎s �T���v���v���O�����̎��s���

�@�uPush!�v�Ə�����Ă���{�^���������ƁA�e�L�X�g�{�b�N�X�Ŏw�肳�ꂽ�񐔂������̏������J��Ԃ��ď������Ԃ̍��v�i�b�j��\�����܂��B

  1. Connection�I�u�W�F�N�g�̎擾
  2. SQL���̔��s�iSELECT 1�j
  3. Connection�I�u�W�F�N�g�̉��

�@�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

�T���v���v���O�����̓���

�@��������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
  /**
   * ����JSP�̏����������܂��B
   */
  public void jspInit()
  {
    try {
      // MySQL�̂��߂�JDBC�h���C�o�����[�h���܂��B
      Class.forName("com.mysql.jdbc.Driver");

      // �I�u�W�F�N�g�v�[���̊Ǘ��N���X�̃C���X�^���X�𐶐����܂��B(1)
      PoolableObjectFactory factory = new SimpleConnectionFactory(
        url_, user_, password_);

      // �I�u�W�F�N�g�v�[���̃C���X�^���X�𐶐����܂��B(2)
      pool_ = new StackObjectPool(factory);
    } catch (Throwable t) {
      throw new RuntimeException(t);
    }
  }

�@�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
{
    ... �i���j ...

    /**
     * ���̃N���X�̃C���X�^���X�𐶐����܂��B
     *
     * @param url �f�[�^�x�[�X�ڑ��̂��߂�URL�B
     * @param user �f�[�^�x�[�X�ڑ��̂��߂̃��[�U���B
     * @param password �f�[�^�x�[�X�ڑ��̂��߂̃p�X���[�h�B
     */
    public SimpleConnectionFactory
       (String url, String user, String password)
    {
        url_ = url;
        user_ = user;
        password_ = password;
    }

    /**
     * java.sql.Connection�I�u�W�F�N�g�𐶐����܂��B
     *
     * @return ���������I�u�W�F�N�g�B
     */
    public Object makeObject()
        throws Exception
    {
        return DriverManager.getConnection(url_, user_, password_);
    }
}

�@�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;
  for (int i = 0; i < count; i++) {
   try {
    // Connection�I�u�W�F�N�g���擾���܂��B
    con = getConnection(usePool);

    // SQL�������s���܂��B
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT 1");

    rs.close();
    stmt.close();
   } finally {
    // Connection�I�u�W�F�N�g��ԋp���܂��B
    returnConnection(con, usePool);
   }
  }

�@���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
  /**
   * java.sql.Connection�I�u�W�F�N�g��Ԃ��܂��B
   *
   * @param usePool true�̎��v�[������I�u�W�F�N�g���擾���ĕԂ��܂��B
   *        false�̎��I�u�W�F�N�g�𖈉񐶐����ĕԂ��܂��B
   * @return java.sql.Connection�I�u�W�F�N�g�B
   */
  private Connection getConnection(boolean usePool)
    throws Exception
  {
    if (usePool) {
      // �I�u�W�F�N�g�v�[������I�u�W�F�N�g�����o���܂��B(3)
      return (Connection)pool_.borrowObject();
    } else {
      return DriverManager.getConnection(url_, user_, password_);
    }
  }

���X�g5�@index.jsp��returnConnection()���\�b�h
  /**
   * java.sql.Connection�I�u�W�F�N�g�̎g�p���I�����܂��B
   *
   * @param con java.sql.Connection�I�u�W�F�N�g�B
   * @param usePool true�̎��I�u�W�F�N�g���v�[���ɕԋp���܂��B
   *        false�̎��I�u�W�F�N�g���N���[�Y���܂��B
   */
  private void returnConnection(Connection con, boolean usePool)
    throws Exception
  {
    if (con != null) {
      if (usePool) {
        // �I�u�W�F�N�g�v�[���ɃI�u�W�F�N�g��ԋp���܂��B(4)
        pool_.returnObject(con);
      } else {
        con.close();
      }
    }
  }

�@���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

�M�҃v���t�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.

'; this.insertTarget = document.querySelector('#cmsBody .subscription') || document.querySelector('#cmsBody .inner'); }; BodyAdIMSWithCCE.prototype = Object.create(BodyAdContent.prototype); BodyAdIMSWithCCE.prototype.activate = function () { refreshGam('InArtSpecialLink'); } // global reference window.itm = itm; //entry point BodyAdEventBase.polyfill(); const bodyAdManager = BodyAdManager.getInstance(); bodyAdManager.addEventListener(BodyAdManager.EVENTS.READY, function (ev) { bodyAdManager.loadAdvertise(); }); bodyAdManager.init(); })();
�X�|���T�[����̂��m�点PR

���ڂ̃e�[�}

Microsoft  WindowsőO2025
AI for GWjAO
[R[h^m[R[h Zg by IT - ITGWjArWlX̒SŊ􂷂gD
Cloud Native Central by IT - XP[uȔ\͂gD
�V�X�e���J���m�E�n�E �y�����i�r�zPR
���Ȃ��ɂ������߂̋L��PR

RSS�ɂ‚���

�A�C�e�B���f�B�AID�ɂ‚���

���[���}�K�W���o�^

��IT�̃��[���}�K�W���́A �������A���ׂĖ����ł��B���Ѓ��[���}�K�W�������w�ǂ��������B