��8��@J2EE�̃g�����U�N�V��������


 �g�����U�N�V��������

�@��������́A�g�����U�N�V������EJB�ɂ‚��ĉ�����܂��傤�B

�@

 �g�����U�N�V���������̐ݒ�

�@�g�����U�N�V���������́Adeployment descriptor�ɋL�^����܂��B�ł�����A���낢��ȂƂ���ł��̑����𓮂������Ƃ͉”\�Ȃ̂ł����A��{�I�ɂ�EJB�̊J���҂����̑������L�`���Ɛݒ肵�Ă������Ƃ��K�v�ł��B

�@�g�����U�N�V���������̎w��́A�r�[���S�̂ɑ΂��Ă��A�X�̃��\�b�h���Ƃɂ��”\�ł��B�r�[���S�̂ɂ͂��鑮�����w�肵���̂ɁA���̃r�[���̓����̃��\�b�h�ɁA����Ƃ͈قȂ鑮�����w�肵���ꍇ�ɂ́A���\�b�h�ւ̎w�肪�D�悳��܂��B

�@�g�����U�N�V���������̎w��́A�Z�b�V�����E�r�[���ɑ΂��Ă��A�G���e�B�e�B�E�r�[���ɑ΂��Ă��”\�Ȃ̂ł����A�����Ⴂ�����݂��܂��B�Z�b�V�����E�r�[���ł́A���̑����̎w�肪�”\�Ȃ̂́A�����[�g�E�C���^�[�t�F�C�X�Œ�`���ꂽ�r�W�l�X�E���\�b�h�����ŁA�z�[���E�C���^�[�t�F�C�X��create���\�b�h�ɂ͋�����Ȃ��̂ł����A�G���e�B�e�B�E�r�[���̏ꍇ�ɂ́A�r�W�l�X�E���\�b�h�����łȂ��Acreate�Aremove�A�t�@�C���_�E���\�b�h�ɂ����̑����ݒ肪�”\�ł��B

�@

 Container-Managed Transactions�̃��[���o�b�N

�@Container-Managed Transactions�����[���o�b�N����̂�2�‚̏ꍇ������܂��B1�‚́A�V�X�e����O��������ꂽ�ꍇ�ł��B���̂Ƃ��A�R���e�i�́A�����I�ɁA�g�����U�N�V���������[���o�b�N���܂��B����1�‚̏ꍇ�́AEJBContext�C���^�[�t�F�C�X��setRollbackOnly���\�b�h���Ăяo���ꂽ�ꍇ�ł��B���̃��\�b�h�́A�R���e�i�ɁA�g�����U�N�V�����̃��[���o�b�N�𖽂��܂��B

�@�ł�����A�V�X�e����O�ł͂Ȃ��A�v���P�[�V�����E���x���̗�O�Ńg�����U�N�V�����̃��[���o�b�N���N�������Ƃ���Ȃ�A��O�����̃R�[�h�̒��ŁA�܂��AsetRollbackOnly���\�b�h���Ăяo�����Ƃł��B���̗�́ABankEJB�r�[���ŁA�c�����}�C�i�X�ɂȂ�Ȃ��悤�ȃ`�F�b�N���s���Ă���Ƃ���ł��BInsufficientBalanceException�́A�A�v���P�[�V�����E���x���̗�O�ł�����A�܂�setRollbackOnly���\�b�h���Ă΂�Ă��܂��B����AEJBException�̓V�X�e����O�ł��̂ŁA���̏ꍇ�ɂ����[���o�b�N�͎��s����邱�ƂɂȂ�܂��B

public void transferToSaving(double amount) throws
  InsufficientBalanceException {

  checkingBalance -= amount;
  savingBalance += amount;

  try {
    updateChecking(checkingBalance);
    if (checkingBalance < 0.00) {
      context.setRollbackOnly();
      throw new InsufficientBalanceException();
    }
    updateSaving(savingBalance);
  } catch (SQLException ex) {
    throw new EJBException
      ("Transaction failed due to SQLException: "
      + ex.getMessage());
  }
}


�@

 Bean-Managed Transactions�̏ꍇ

�@Container-Managed Transactions�́A�R�[�h��啝�ɏ��Ȃ����邱�Ƃ��ł��郁���b�g�����锼�ʁA���̂悤�ȍׂ��ȃg�����U�N�V�����̐���͓���Ȃ�܂��B

�g�����U�N�V����A�J�n
....
�e�[�u��A�X�V
....
�@�����A����X��������������
�@�@�@�g�����U�N�V����A����
�@���邢�́A����Y����������Ă����
�@�@�@�e�[�u��B�X�V
�@�@�@�g�����U�N�V����A����
�@���̂�����ł��Ȃ���΁A
�@�@�@�g�����U�N�V����A���s
�@�@�@�g�����U�N�V����B�J�n
�@�@�@�e�[�u��C�X�V
�@�@�@�g�����U�N�V����B����

�@���������Ƃ��ɂ́A�R���e�i�Ƀg�����U�N�V�����̊Ǘ���C����̂ł͂Ȃ��r�[�����g���g�����U�N�V�����̊Ǘ����s�����Ƃ��”\�ł��B�������A�G���e�B�e�B�E�r�[���ł͂�������Bean-Managed Transactions�͔F�߂��Ă��܂���B

�@Bean-Managed Transactions�ɂ́A�f�[�^�x�[�X�̃g�����U�N�V�����@�\�𗘗p����JDBC�g�����U�N�V�����ƁAJava Transaction API�̋@�\�𗘗p����JTA�g�����U�N�V������2�‚̎�ނ�����܂��B�ǂ���̕�������邩���߂�K�v������܂��B

�@���̉�ʂ́ADeploytool��Bean-Managed Transactions���w�肵�Ă���Ƃ���ł��B

���3

���4


�@

 JDBC Transactions�̏ꍇ

�@JDBC Transactions�̃v���O���������邽�߂ɂ́Ajavax.sql.Connection�C���^�[�t�F�C�X�̒���commit��rollback���\�b�h�𗘗p���܂��B���̃��X�g�����Ă��������B

public void ship (String productId, String orderId, int quantity) {

  try {
    con.setAutoCommit(false);
    updateOrderItem(productId, orderId);
    updateInventory(productId, quantity);
    con.commit();
  } catch (Exception ex) {
    try {
      con.rollback();
      throw new EJBException("Transaction failed: " +
        ex.getMessage());
    } catch (SQLException sqx) {
      throw new EJBException("Rollback failed: " +
        sqx.getMessage());
    }
  }
}


�@

 JTA Transactions�̏ꍇ

�@J2EE�ɂ́AJava Transaction Service�iJTS�j�ƌĂ΂��T�[�r�X�����݂��܂��B�����A�r�[���̃g�����U�N�V���������ɁAJTS�̃��\�b�h���A���ڌĂяo����邱�Ƃ͂���܂���B�܂��AJTA�̃��\�b�h���Ăяo����A���ꂪJTS�̒჌�x���̃��[�`�����Ăяo���Ă��܂��B

�@JTA�̃g�����U�N�V�����́AJ2EE�̃g�����U�N�V�����E�}�l�[�W���ɂ���ăR���g���[������Ă��܂��BJTA�g�����U�N�V�����̋��E�ݒ�̂��߂ɂ́AUserTransaction�C���^�[�t�F�C�X��begin�Acommit�Arollback���\�b�h���g���܂��B���̃R�[�h�́ATellerEJB����̂��̂ł����Abegin�Ŏn�܂�commit�ŏI���2�‚̃��\�b�h�̌Ăяo�����A�f�[�^�x�[�X�X�V�̃g�����U�N�V�����̋��E���߂Ă��܂��B�����A���̃u���b�N���̃f�[�^�x�[�X�X�V�����s���ė�O����������΁Arollback���\�b�h���Ă΂�āA�V����EJBException���������܂��B

public void withdrawCash(double amount) {
  UserTransaction ut = context.getUserTransaction();

  try {
    ut.begin();
    updateChecking(amount);
    machineBalance -= amount;
    insertMachine(machineBalance);
    ut.commit();
  } catch (Exception ex) {
    try {
      ut.rollback();
    } catch (SystemException syex) {
      throw new EJBException
        ("Rollback failed: " + syex.getMessage());
    }
    throw new EJBException
      ("Transaction failed: " + ex.getMessage());
  }
}

�@�{�A�ڂ́A�uJ2EE�́AWeb�ƃf�[�^�x�[�X�����ԁA�T�[�o�E�T�C�h�̃~�h���E�F�A�Z�p�ł���v�Ƃ����ϓ_����AJ2EE�̊�b��������Ă��܂����B�������炳��ɔ��W���������̂��߂ɁA�ȉ��̎Q�l�L�����Љ�ĘA�ڂ��I��肽���Ǝv���܂��B


5/5

J2EE�̊�b�i��8��j
�@ �R���s���[�e�B���O�ɂ�����g�����U�N�V�����̕K�v��
�@ �g�����U�N�V�����̊�b��m��
�@ J2EE�̃g�����U�N�V����
�@ �g�����U�N�V���������̓���
�g�����U�N�V��������

�A�ړ��e
J2EE�̊�b
�@ ��1��@Java Pet Store�ŁAJ2EE��̌�����(1)
�@ ��2��@Java Pet Store�ŁAJ2EE��̌�����(2)
�@

��3��@J2EE�A�v���P�[�V�����Ɣz�u�ideployment�j

�@ ��4��@J2EE�A�v���P�[�V�������\������R���|�[�l���g
�@ ��5��@�f�[�^�x�[�X�̃u���E�U�����
�@ ��6��@EJB�ɂ�����R���e�i�ƃR���|�[�l���g
�@ ��7��@J2EE�̃Z�L�����e�B�̃L�z����m��
��8��@J2EE�̃g�����U�N�V��������


�A�ڋL���ꗗ




Java Agile �t�H�[���� �V���L��
��IT���[���}�K�W���@�V������X�^�b�t�̃R���������[���œ͂��܂��i�����j

���ڂ̃e�[�}

Java Agile �L�������L���O

�{�� ����