服务器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>方法作了同样的修改。
闽公网安备 35060202000074号