�쐬�@2002/11/9
�X�V�@2002/11/27
���̃y�[�W��EJB�ɂ��Ẵ����ł��B
Enterprise Java Beans�B
EJB�̂�������ɏ]���āA�J�����邱�ƂŁA �A�v���P�[�V�����̐��Y���A�ێ琫�A�g�����Ȃǂ����シ��B
EJB�R���e�i���V�X�e�����x���̃T�[�r�X���s���Ă����̂ŁA �A�v���P�[�V�����J���҂͍�肽���h���C���ɐ�O�ł���B �g�����U�N�V������Z�L�����e�B�� (��������H)�ȒP�Ȑݒ�Ŏ����ł���B
�����A���������������̂���ρB�~���������B��������R�X�g�������B �߂�ǂ������B�V�X�e���̐M�������g������ ����قǏd�v�łȂ��ꍇ�ɂ͋t���ʁB �Ȃ̂ŁA�Ȃ�ł�����ł��g���n�j�Ƃ����킯�ł��Ȃ��B
���[���� | ���� |
---|---|
�G���^�[�v���C�YBean�v���o�C�_ | EJB���R�[�f�B���O����l |
�A�v���P�[�V�����A�Z���u�� | Bean�v���o�C�_�̍����EJB��
DD��Ńg�����U�N�V������Z�L�����e�B��lj�����B |
�f�v���C�� | EJB���A�v���P�[�V�����T�[�o�Ƀf�v���C���A
���\�[�X�̃}�b�s���O���s���B |
�V�X�e���Ǘ��� | �A�v���P�[�V�����T�[�o���Ǘ����� |
EJB�T�[�o�v���p�C�_ | EJB�T�[�o����� |
EJB�R���e�i�v���o�C�_ | EJB�R���e�i����� |
�T�[�o�v���o�C�_�A�R���e�i�v���o�C�_�́A �A�v���P�[�V�����T�[�o�����l�B
�d�l�ネ�[���͕�����Ă��邪�A�����l�������̃��[�������Ȃ��Ă��B �����ȃ`�[�����ƂP�l�S���ɂȂ�ł��傤�B
EJB�ɂ͂������̎�ނ�����܂��B
�Z�b�V����Bean�́A�r�W�l�X�v���Z�X�����f�����������̂ł��B �v���Z�X�Ƃ́A�Ⴆ�A��������A����Ȃǂ̃��W�b�N���w���܂��B �Z�b�V����Bean�͂���ɁA��Ԃ����X�e�[�g�t���Z�b�V����Bean�ƁA ��Ԃ������Ȃ��A�X�e�[�g���X�Z�b�V����Bean�̎�ނ�����܂��A
�G���e�B�e�B�[Bean�́A�r�W�l�X�G���e�B�e�B�[�����f�����������̂ł��B �G���e�B�e�B�[�Ƃ́A�Ⴆ�f�[�^�x�[�X�̂P�e�[�u���������肵�܂��B �G���e�B�e�B�[Bean�͂���ɁA�i�������R���e�i�ɂ܂�����A CMP(Container Managed Persistence : �R���e�i�Ǘ��̉i����) �� BMP(Bean Managed Persistence : Bean�Ǘ��̉i����) �̎�ނ�����܂��B
�G���e�B�e�B�[Bean�̔w�オ�f�[�^�x�[�X�̏ꍇ�A CMP��SQL�̓R���e�i�������I�ɍ��܂��B BMP�̓v���O���}��SQL�������܂��B CMP�������i�ABMP���I�[�_���C�h�Ƃ��������ł��B
���b�Z�[�W�h���u��Bean�͔����b�Z�[�W�������ꍇ�ɗ��p���܂��B
�X�e�[�g(���)�����������Ȃ����̈Ⴂ�B
�X�e�[�g�t���̑�\��̓V���b�s���O�J�[�g
�X�e�[�g���X�̕����A�X�e�[�g�t�����p�t�H�[�}���X���悢�̂ŁA �ǂ����ł��悯��A�X�e�[�g���X��I�����ׂ��B
InitialContext context = new InitialContext(); Object object = context.lookup("HelloBean"); HelloHome home = (HelloHome)javax.rmi.PortableRemoteObject.narrow(object, HelloHome.class); Hello hello = home.create(); String message = hello.sayHello(); System.out.println(message);
InitialContext�͈����Ȃ��̏ꍇ�ɂ́A�N���X�p�X����jndi.properties����������B
������Properties���w�肵���ꍇ�ɂ͂��̒l���g���B
lookup�̈����ɂ�EJB�R���e�i�Ŏw�肵��JNDI�����w��
narrow�̓i���[�B�Ƌ��߂�B�v���O�����̈Ӗ��I�ɂ̓N���X�̃^�C�v��ۏ��邱�ƁB
Remote�Ăюw���ɂ͕K�{�BLocal�C���^�[�t�F�C�X�̎��ɂ͒P�ɃL���X�g�ʼnB
�悭����G���[��ClassCastException�B
�N���C�A���gJAR���N���X�p�X�Ɋ܂߂Ă��Ȃ�����(�X�^�u���Ȃ�����)������B
�X�^�u�I�ɍ쐬����d�g�݂�EJB�R���e�i�ł́A�N���C�A���gJAR���s�v(JBoss�Ƃ�)�B
Handle���g�����ƂŁA�ꎞ�I�ɃV���A���C�Y����EJB�Q�Ƃ̕ۑ����\�B �ۑ�����Handle�𑼂̃N���C�A���g�ɓn�����Ƃ��ł���B
EJBHome�̃n���h��HomeHanle�ƁAEJBObject�p�̃n���h��Handle������B
�g�������͕s���B
EJB1.1 �G���e�B�e�B�[Bean
CMP�͊����i�ABMP�̓I�[�_�[���C�h�B
���낢�댈�܂肪����
public class ManBean implements EntityBean{ //�t�B�[���h //EJB1.1��CMP�ł̓t�B�[���h��public�ł���K�v������܂��B public String id; public String name; public int age; /** * �Ԃ�l�̌^�͎�L�[�N���X��CreateException��throw����K�v������܂��B * �܂��Ԃ�l��null��Ԃ��K�v������܂��B */ public String ejbCreate(String id) throws CreateException{ this.id = id; return null; } /** * ejbCreate�Ɠ��������������܂��B */ public void ejbPostCreate(String id){ } //...
CMP�ƈႢ�A�f�[�^�x�[�X�A�N�Z�X�R�[�h�����O�Ŏ�������B
�t�@�C���_���\�b�h���R�[�h��ɏ���
public class ManBean implements EntityBean{ private EntityContext context; //�t�B�[���h //CMP����Ȃ��̂ŕ��ʂ�private private String id; private String name; private int age; /** * �Ԃ�l�̌^�͎�L�[�N���X��CreateException��throw����K�v������܂��B * �܂��Ԃ�l�͎�L�[��Ԃ��K�v������܂��B */ public String ejbCreate(String id) throws CreateException{ this.id = id; String sql = "INSERT INTO " + TABLE + "(" +ID+ ") VALUES(\"" +id+ "\")"; executeUpdate(sql); return id;//CMP����Ȃ��̂ŕ��ʂɎ�L�[��Ԃ� } //...
���\�b�h | ���� |
---|---|
ejbCreate | DB��INSERT���A�Ԃ�l�Ɏ�L�[��Ԃ� |
ejbPostCreate | �ˑ��I�u�W�F�N�g�Ȃǂ����� |
ejbFindByPrimaryKey | DB����SELECT���A���݂������L�[��Ԃ� |
���̑��̃t�@�C���_���\�b�h | DB����SELECT���A��L�[���R���N�V������Ԃ� |
ejbLoad | DB����SELECT |
ejbRemove | DB����DELETE |
ejbStore | DB��UPDATE |
setEntityContext | �R���e�L�X�g�̃Z�b�g |
unsetEntityContext | �R���e�L�X�g�̃A���Z�b�g |
ejbActivate | EJB���A�N�e�B�u������B
�R���e�L�X�g�����L�[���擾���A�Z�b�g�B |
ejbPassivate | EJB���A�N�e�B�u�����A���\�[�X���J������B
�Ⴆ�Ύ�L�[��null��������B |
EJB2.0�ł�1.1����CMP�̏����������Ȃ�ς��܂����B �o�[�W�����A�b�v�Ƃ������͕ʕ��ł��B
�V���ɓ������ꂽ�d�l�ňȉ��̖��������ł��܂��B
1.1�̎��̖��_ | ���� |
---|---|
RDB�e�[�u���̊֘A���ȒP�ɕ\���ł��Ȃ� | 1.1�ł͓���ȏł��Ȃ��̂ɁA�֘A��\�����邽�߂�BMP�ɂ��Ȃ���Ȃ�܂���ł����B
2.0�ł�Relation�ɂ��֘A��\���ł��܂��B CMP2.0���g�����ƂŁA���O�ōH�v���Ȃ��Ă��A�G�C���A�V���O�̖��������ł��܂��B |
�x�� | Local�C���^�[�t�F�C�X����������܂����B
�����x�̍����A�ЂƂ܂Ƃ܂��EJB�́AEJB����EJB��Local�C���^�[�t�F�C�X�ŃA�N�Z�X���邱�ƂŁA�����ɂȂ�܂��B �܂��AEJB�R���e�i�̍œK�����i�݁A���x�̌��オ�����܂��B �ŋ߂͈�ʓI��BMP���A�R���e�i���œK���\��CMP�̕��������ɂȂ�܂��B |
finder���\�b�h�̃N�G���ɈڐA�����Ȃ� | 2.0�ł�Querry Language�Ƃ������ʌ���ŋL�q���邱�Ƃɂ��A
EJB�̃|�[�^�r���e�B�����߂܂��B |
EJB�N���X�Ƀt�B�[���h�͎������Aabstract�̃Z�b�^�A�Q�b�^���`���܂��B
Container Managed Relationship�B�e�[�u���Ԃ̊֘A��CMP�ŕ\���ł��܂��B
�悭�������ĂȂ����B�B�B
JMS��Queue����Ĕ���EJB���Ă�
�悭�g����̂͊m�F���[�����M�Ƃ�
�����[�g�A�z�[���C���^�[�t�F�C�X�͕s�v�ŁA onMessage(Message)���������邾��
JMS���b�Z�[�W���O�ɂ͈ȉ��̂Q�̃��f��������B
Point-to-Point�@��Queue
Publish/Subscribe�@��Topic
�g�s�b�N�̃T�u�X�N���C�u�ɂ͈ȉ��̂Q�̕���������B
�P�v(Durable)
�i��(Persistent)
InitialContext ctx = new InitialContext(); QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("QueueConnectionFactory"); Queue queue = (Queue)ctx.lookup("HelloQueue"); QueueConnection con = factory.createQueueConnection(); QueueSession session = con.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); MapMessage message = session.createMapMessage(); message.setString("word", "hello"); QueueSender sender = session.createSender(queue); sender.send(message);�ڑ��t�@�N�g���Ɛڑ���̂Q�����b�N�A�b�v���Ďg���炵���B
���\�[�X�̕����I�Ȉʒu���\�[�X�R�[�h���番�����邽�߂̎d�g��
���� | DD��̋L�q | ���� |
---|---|---|
���G���g�� | env-entry | �P�Ȃ�l�ւ̃}�b�s���O |
Bean�Q�� | ejb-ref/ejb-local-ref | ����EJB�ւ̃}�b�s���O |
���\�[�X�}�l�[�W���ڑ��t�@�N�g�� | resource-ref | �f�[�^�\�[�X�AJavaMail�Z�b�V�����AJMS�ڑ��A
URL���\�[�X�A���K�V�[���\�[�X�ւ̃}�b�s���O resource-ref�̓��\�[�X�t�@�N�g���ւ̎Q�Ƃł��B �Ⴆ�f�[�^�\�[�X�Q�Ƃ́A�Q�Ɛ��Connection�łȂ�DataSoruce�ł��B |
���\�[�X���Q�� | resource-env-ref | JMS���M���JavaMailSession�ւ̃}�b�s���O |
EJB | java:comp/env/ejb |
�f�[�^�\�[�X | java:comp/env/jdbc |
JMS | java:comp/env/jms |
URL | java:comp/env/url |
�R�l�N�^API | java:comp/env/eis |
InitialContext�̈����ɒ���JNDI���w�肹���A
java:comp/env/�`�Ƀ}�b�s���O���邱�ƂŁA
���(�f�v���C����EJB���J��)���\�[�X���_��ɕύX�\�B
�Ȃ��Ajava:comp/env/�`��lookup�͓���J2EE�����炵���g���Ȃ��B
�R���e�i�Ⴂ��R���e�i�Ȃ��̃N���C�A���g�����
�����b�N�A�b�v���܂��B
�g�����U�N�V����
�g�����U�N�V�������g�����U�N�V�������肤������B
���� | ���� |
---|---|
���q��(Atomicity) | �@ |
��ѐ�(Consistency) | �@ |
������(Isolation) | �@ |
������(Durability) | �@ |
�����̖��
���� | |
---|---|
�_�[�e�B���[�h | �X�V�r���R�~�b�g�O�̃f�[�^���ǂ܂��
(���̌ネ�[���o�b�N����āA���炨������) |
�m�����s�[�^�u�����[�h | |
�t�@���g�����[�h | �}���A�폜���ꂽ�f�[�^���ǂ܂��(�ǂ܂�Ȃ�) |
�������x���̐ݒ�
�������x�� | �_�[�e�B ���[�h | �m�����s�[�^�u�� ���[�h | �t�@���g�� ���[�h | ���� |
---|---|---|---|---|
TRANSACTION_NONE | �~ | �~ | �~ | �g�����U�N�V�������s��Ȃ� |
TRANSACTION_READ_UNCOMMITED | �~ | �~ | �~ | |
TRANSACTION_READ_COMMITED | �� | �~ | �~ | |
TRANSACTION_REPEATABLE_READ | �� | �� | �~ | |
TRANSACTION_SERIALIZABLE | �� | �� | �� |
CMT���R���e�i�Ǘ��̃g�����U�N�V�����B �g�����U�N�V�����̋��E�ݒ�̕��@�́A DD�Ƀg�����U�N�V�����������L�q���邱�Ƃōs���B
BMT��Bean�Ǘ��̃g�����U�N�V�����B �g�����U�N�V�������T�|�[�g���Ȃ����\�[�X�ւ̃A�N�Z�X��A �X�e�[�g�t���Z�b�V����Bean�ŁA�g�����U�N�V�����I�ȏ����� �����������Ƃ��ɗ��p����BUserTransaction�C���^�[�t�F�C�X���g���B
�Ȃ��A�G���e�B�e�B�[Bean�͕K��CMT�炵���B
���� | ���� |
---|---|
Required | �Ȃ�����B���ʁB |
RequiredNew | �V���ɍ��B |
Mandatory | �Ȃ��ƃG���[�B |
Supports | ����Ύg���B |
NotSupported | �����Ă��g��Ȃ��B |
Never | ��������G���[�B |
�N���C�A���g����UserTransaction���g����
UserTransaction ut = (UserTransaction)ctx.lookup("java:comp/UserTransaction"); ut.begin(); //... ut.commit();
java:comp/UserTransaction�͌��܂蕶��H
�Z�b�V����Bean��CMT������������@�� SessionSynchronization�C���^�[�t�F�C�X���g�����@������B
���\�b�h | ���� |
---|---|
void afterBegin() | |
void afterCompletion(boolean committed) | |
void beforeCompletion() |
�ݒ�ł���g�����U�N�V����������Required�ARequiredNew�AMandatory�̂�
�p�� | ���� |
---|---|
�F�� | |
���� | |
�v�����V�p��(���)
Principal | �X�̃��[�U�[ |
�N���f���V���� | |
������ |
�����Ȃ��������T���v���ł��B ����A���Ȃ肢��������B
session.zip | �V���v���Z�b�V����Bean |
cmp11.zip | �V���v��CMP1.1 |
bmp11.zip | �V���v��BMP1.1 |
cmp20.zip | �V���v��CMP2.0 |
cmr.zip | �V���v��CMR |
- | �V���v��CMR ���d�x 1:* |
mdbean.zip | �V���v��JMS |
resref.zip | �V���v�����\�[�X�Q�� |
trans.zip | �g�����U�N�V�������� |
- | UserTransaction |
sec.zip | �V���v���Z�L�����e�B |
sec2.zip | �V���v���Z�L�����e�B2�A�V���v��EAR(clientjar+ejbjar) |
helloear.zip | 2002/12/1
�V���v��EAR(war+ejbjar) �r���h���C�}�C�` |
handle.zip | 2002/11/26
�X�e�[�g�t���Z�b�V����Bean��Handle���g���Ă݂��B ��s�a��Bean�B�T�[�o�[���N���b�V������Ɨa�����ӂ��ƂԂ����ˁB |