JBI中SE的开发过程

SE开发

1)实现Bootstrap接口,这个类将在SE在安装时被调用。所有和程序相关的动作将在这个类中完成初始化与消除(uninstall)

2)实现接口:serviceunitManager接口。这个接口在SE部署SU时将会被调用。用来管理SU的生命周期,如Start,Stop,ShutDown,Init。所有和SU相关的初如化工作将在里初始化与结束。它的构造函数中接收javax.jbi.component.ComponentContext做为参数。

start方法中:

a.     组件必须通知JBI引擎,它已经是一个激活的endpoint

b.     创建一个与service名字相匹配的javax.xml.namespace.QName类型的类实例,和你组件将提供的URI

c.     这些值必须与组件的部署描述文档中的值一样

d.     创建一个javax.jbi.servicedesc.ServiceEndpoint类对象,并通过ComponentContextk r activateEndpoint方法来激活。

e.     在部署描述文档中引用你所创建的endpoint。如下所示:

QName qn = new QName("http://www.payroll.org/payroll.wsdl","PayrollService");

try {

ServiceEndpoint ref = mContext.activateEndpoint(qn, "SE_Endpoint");

} catch (JBIException JBIe) {

...

}

以上和种配置不应用硬编码的方式写入,而应当是通过ServiceUnitManagerdeploy方法中的ServiceUnitPath参数获得XML描述文档jbi.xml,经过parse生成正确的值。

3)实现Runnable接口,来接收来自NMRJBI Engine的消息。

并且实现:getServiceDescription(ServiceEndpoint),isExchangeWithConsumerOkay(SE,ME),ResolveEndpointReference(DocumentFragment).

4)实现component类。这个类是组件的核心类,负责接收,处理,返回消息。

init方法中:

a.     存储ComponentContext

b.     创建ServiceUnitManager

Public void init(ComponentContext compCtx){

        If(compCtx!-null){

        This.mContext=compCtx;

        This.mServiceUnitMgr=new ServiceUnitManager(compCtx);

}

}

start方法中:

a.     ComponentContext中接收DeliveryChannel对象。

b.     创建接收消息的MsgReceiver,并以DeliveryChannel对象为参数。

c.     MsgReceiver对象中启动新进程。如下所示:

try {

this.mChannel = this.mContext.getDeliveryChannel();

this.mMsgReceiver = new TestMsgReceiver(this.mChannel);

Thread recThrd = new Thread(this.mMsgReceiver);

recThrd.start();

} catch (MessagingException me) {

...

}

整体类图如下所示:(要图者QQ联系:15196866)

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值