RA接收协议信号或事件,产生Java表示的对象,然后将它们发射到JSLEE应用服务器中。
JSLEE RA概念由一个RA Type和具体的RA组成
RA Type主要定义了RA产生的事件类型,Sbb和RA之间共享信息(Activity Context),以及Sbb用来访问RA的接口。
RA实现了一个RA Type,一般是有状态的,并且构造了一个内部状态机(Activity),根据不同的信号来改变状态。
Activity Context相当于Activity的接口,二者一一对应。Activity Context可以被RA和Sbb访问(意即Activity也可以被二者访问)
总之,RA Type定义了RA的类型,RA的实现包装了一个具体的协议栈,来产生Java对象代表的事件到SLEE AS,AC用来在RA和Sbb之间交换信息。
RA Type的描述符:
event-jar.xml
resource-adaptor-type-jar.xml
deployable-unit.xml
RA描述符
resource-adaptor-jar.xml
deployable-unit.xml
JSLEE Service
sbb-jar.xml
service.xml
deployable-unit.xml
RA Type的事件定义:event-jar.xml片断
<event-definition>
<event-type-name>javax.sip.message.Request.INVITE</event-type-name>
<event-type-vendor>javax.sip</event-type-vendor>
<event-type-version>1.1</event-type-version>
<event-class-name>javax.sip.RequestEvent</event-class-name>
</event-definition>
resource-adaptor-type-jar.xml
声明activity类型:
<activity-type>
<activity-type-name>
com.maretzke.raframe.ratype.RAFActivity
</activity-type-name>
</activity-type>
一个Activity是一个相关事件流的抽象,可以理解为面向底层的状态机,接收底层协议栈的消息,根据状态变化向上(Sbb)发出事件(Event)
对于SIP来说,一个Activity就是ServerTransaction或ClientTransaction
一个Activity需要对应一个ActivityHandle(实现javax.slee.resource.ActivityHandle接口),用来标识此Activity
在RA的事件处理方法中,通过ActivityHandle来得到Activity(因为RA需要定义一个HashMap表来保存所有activities)
在Sbb的OnXXXEvent方法中,通过ActivityContextInterface来得到Activity
(待续)