关闭

JBI中SE的开发过程

标签: thread文档service化工引擎存储
1721人阅读 评论(2) 收藏 举报
分类:

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)

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:56040次
    • 积分:852
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:9篇
    • 译文:1篇
    • 评论:17条
    最新评论