服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

j2ee web服务客户端质量报告(二)


  服务器web 服务软件包

  服务器web 服务软件包可自动生成。在sun one studio中,web模块的创建只要选择一组ejb java方法即可,并且web服务软件包的类可由web模块创建。

  该软件包包含许多类和接口。这里最关键的一个就是<servicename>servantinterface_tie 类,在这个类中服务名就是<servicename> 。类tie是web服务模块最上面的堆栈;它将引入的服务调用绑定到创建它的ejb组件上。我们只需修改类tie就可以添加次数纪录。

  tie包括许多方法,但是我们只需修改与ejb商业方法invoke_<x>关联的那一个方法。在方法invoke_<x>中,<x>表示ejb商业方法的名称。我们添加一个 import payload.*; 到类 tie上,并对每个商业方法作了一个小小的修改。让我们看看下面的方法 invoke_submitwork() :

/*
* this method does the actual method invocation for operation: submitwork
*/
private void invoke_submitwork(streaminghandlerstate state) throws exception {

transactionservice.xactservicegenserver.
xactserviceservantinterface_submitwork_requeststruct
myxactserviceservantinterface_submitwork_requeststruct = null;
object myxactserviceservantinterface_submitwork_requeststructobj =
state.getrequest().getbody().getvalue();

/* line added to generated method: */
serializer.queuefirstattachmenttext(state.getmessagecontext());

if (myxactserviceservantinterface_submitwork_requeststructobj
instanceof soapdeserializationstate) {
myxactserviceservantinterface_submitwork_requeststruct =
(transactionservice.xactservicegenserver.
xactserviceservantinterface_submitwork_requeststruct)
((soapdeserializationstate)
myxactserviceservantinterface_submitwork_requeststructobj)
.getinstance();
} else {
myxactserviceservantinterface_submitwork_requeststruct =
(transactionservice.xactservicegenserver.
xactserviceservantinterface_submitwork_requeststruct)
myxactserviceservantinterface_submitwork_requeststructobj;
}

java.lang.string result =
((transactionservice.xactservicegenserver.xactserviceservantinterface)
gettarget()).submitwork
(myxactserviceservantinterface_submitwork_requeststruct.getstring_1());
transactionservice.xactservicegenserver.
xactserviceservantinterface_submitwork_responsestruct
myxactserviceservantinterface_submitwork_responsestruct =
new transactionservice.xactservicegenserver
.xactserviceservantinterface_submitwork_responsestruct();
soapheaderblockinfo headerinfo;
myxactserviceservantinterface_submitwork_responsestruct.setresult(result);

soapblockinfo bodyblock = new soapblockinfo
(ns1_submitwork_submitworkresponse_qname);
bodyblock.setvalue(myxactserviceservantinterface_submitwork_responsestruct);
bodyblock.setserializer
(myxactserviceservantinterface_submitwork_responsestruct_soapserializer);
state.getresponse().setbody(bodyblock);
}

  我们添加了一个单行到invoke_submitwork()上:

serializer.queuefirstattachmenttext(state.getmessagecontext());

  getmessagecontext()返回实现接口javax.xml.rpc.handler.soap.soapmessagecontext 的对象。该对象提供对当前soap信息的访问。我们传递实现接口soapmessagecontext 的对象到payload.serializer中的一个静态方法上。该静态方法从第一个信息附件中获取xml字符串并将它排队等待次数处理器ejb组件的调用。

  我们对每个invoke_<x>方法作了同样的修改。


扫描关注微信公众号