在LotusDomino中应用webservice

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

在LotusDomino中应用webserviceLotusDominoV7.0在LotusDominoDesigner中引入了新的Web服务设计元素。因此在LotusDomino应用开发中使用Web服务变得更加容易。其中LotusDomino负责处理所有的WSDL创建和SOAP操作,我们所要做的事情就是在Web服务设计元素中编写代码,设计Web服务。LotusDomino就可以发布WSDL文件、将引入的SOAP请求转换为类上的方法调用以及返回方法的结果(如果有的话)作为SOAP响应。LotusDominoWeb服务可以用lotusscript,java两种语言编写。而调用Web服务的方法却有很多。一、设计Web服务。点新建Web服务。设计自己的Web服务。WebServiceProperties框中的Basics附签对Basic附签上的字段说明如下:Name(必需的):Web服务的名称,是客户机访问WSDL文件或服务的方法时所使用的名称。Alias:除Name之外的另一名称,用户使用该名称可以访问服务。Comment:有关Web服务的信息数据的字段(通常,该字段的信息不超过一句话;有关Web服务的较长描述或信息应写在代码的注释中)。WarniftheWSDLinterfaceismodified:该选项警告您对代码所做的更改是否修改了由Web服务产生的WSDL文件。这对于确保WSDL文件的一致很有用,但是应该意识到,如果选中了该选项,则您将无法保存带有已修改的WSDL文件的服务。PortTypeclass(必需的):用作Web服务接口的类的名称。换句话说,它就是Web服务代码中带有用户可访问的public方法的类。框中的第二个附签是Security附签(参见图4)。图4.WebServiceProperties框中的Security附签对Security附签上的字段说明如下:Runaswebuser:该选项使Web服务代码能够在调用Web服务的用户的安全性上下文中运行(默认情况下,它将在LotusDominoDesigner中最后签名Web服务的那个ID的安全性上下文中运行)。Runonbehalfof:该字段允许指定用户,如果想让Web服务代码运行在特定用户的安全性上下文中,而不是LotusDominoDesigner中最后签名Web服务的那个ID的安全性上下文中。Allowremotedebugging:该选项允许远程调试Web服务(有关远程调试的信息,请参阅LotusDominoDesigner帮助主题“UsingtheRemoteDebugger”)。Profilethiswebservice:该选项将在Web服务运行时使其生成分析信息(有关分析的信息,请参阅LotusDominoDesigner帮助主题“ProfilingagentsandWebservices”)。Setruntimesecuritylevel:设置为1,允许大多数LotusScript和Java操作正确运行;对于读/写文件、创建COM对象或执行网络操作等,根据需要,设置为2或3(有关更多信息,请参阅LotusDominoDesigner帮助主题“RestrictedLotusScriptandJavaagentoperations”)。Defaultaccessforthiswebservice:该选项允许控制哪些用户可以访问Web服务,并超出了使用数据库ACL所能进行的控制(如果Anonymous用户无法访问Web服务,则当用户尝试进行连接时,将收到错误401AccessDenied或404NotFound)。AllowPublicAccessuserstousethiswebservice:该选项使得仅拥有数据库ACL中“ReadPublicDocuments”访问权的用户可以使用该Web服务,当不想为大量用户授予完全的Reader访问权限(或更高级别)时,这点很有用。框中的第三个附签是Options附签(参见图5)。图5.WebServiceProperties框中的Options附签对Options附签上的字段说明如下:Programmingmodel:可用选项是RPC或Message(大多数情况下使用RPC)。SOAPmessageformat:在该字段中,为此Web服务选择SOAP消息格式,LotusDominoV7.0中的默认格式是RPC/encoded。IncludeoperationnameinSOAPaction:该选项要求操作名称存在于外来请求的SOAP动作标头中(很少需要)。Porttypename:默认情况下,该字段值与Basics附签上PortTypeclass字段的值相同(尽管您可以使用任何想用的名称)。生成WSDL文件时使用该值。Serviceelementname:默认情况下,该字段值是PortType名称加上单词Service(尽管您可以使用任何想用的名称)。生成WSDL文件时使用该值。Serviceportname:默认情况下,该字段值是Domino(尽管您可以使用任何想用的名称)。生成WSDL文件时使用该值。可以选择是用lotusscript或JAVA语言编辑你的Web服务。以下是lotusscript编写的一个简单的例子。%INCLUDElsxsd.lssClasssaveworkflowSubNEWEndSubFunctionsaveworkflowxml(xmlfilenameAsString,xmltextAsString)AsStringOnErrorGotoerrhandleDimoutputStreamAsNotesStreamDimsessionAsNewNotesSessionSetoutputStream=session.CreateStreamDimoutputFileAsStringoutputFile=Curdir$()+datadominohtmlworkflow+xmlfilenameIfoutputStream.Open(outputFile)ThenCalloutputStream.WriteText(xmltext,EOL_CRLF)CalloutputStream.CloseEndIfsaveworkflowxml=1ExitFunctionerrhandle:MsgboxStr(Err)+行号:+Str(Erl)+错误信息saveworkflow:saveworkflowxml+Error$ResumeNextEndFunctionEndClass一、Web服务的调用。1、lotusscript代理中调用webservice。在window平台上我们可以使用MSSOAPtoolkit来调用。可以下载MSSOAPtoolkit3.0,并在服务器上安装MSSOAPtoolkit3.0。在代理中的代码如下:SubInitializeOnErrorGotoerrhandleDimssAsNewNotesSessionDimdocAsNotesDocumentSetdoc=ss.DocumentContextDimclientAsVariantDimxmlfilenameAsStringDimxmltextAsStringxmlfilename=doc.xmlfilename(0)xmltext=doc.xmltext(0)SetClient=CreateObject(MSSOAP.SoapClient30)CallClient.mssoapinit()DimresultAsStringIfNotClientIsNothingThenresult=Client.saveworkflowxml(xmlfilename,xmltext)Elseresult=nowebEndIfExitSuberrhandle:MsgboxStr(Err)+行号:+Str(Erl)+错误信息saveworkflowxml:+Error$ResumeNextEndSub2、javascript中调用webservice。varxmlfilename=document.all.xmlfilename.valuevarxmltext=document.all.xmltext.valuevarxmlhttp=newActiveXObject(Microsoft.XMLHTTP);varsoapMessage,soapData,URL;//SetthesoapmessagesoapMessage=?xmlversion=1.0encoding=utf-8?;soapMessage+=soap:Envelopexmlns:xsi=:xsd=:soap==soap:Body;//Setthedataforsoapbody----begin------soapData=saveworkflowxmlxmlns==xmlfilename+xmlfilename+/xmlfilename;soapData+=xmltext+xmltext+/xmltext;soapData+=/saveworkflowxml;//Setthedataforsoapbody----end------soapMessage=soapMessage+soapData+/soap:Body;soapMessage=soapMessage+/soap:Envelope;varurlstr=(POST,urlstr,false);xmlhttp.SetRequestHeader(Content-Type,text/xml;charset=utf-8);xmlhttp.SetRequestHeader(SOAPAction,);xmlhttp.send(soapMessage);varx=xmlhttp.responseXML;3、FLASH中调用webservice。importmx.services.WebService;//定义WebService的路径;varws_url:String=定义WebService对象;varws:WebService=newWebService(ws_url);//调用WebService方法;varcallObject=ws.SAVEWORKFLOWXML(_parent.workflowxml,_global.workxml.toString());//设置返回结果对象;callObject.onResult=function(result){trace(result);}//如果调用错误返回信息(这个是可选的);callObject.onFault=function(fault){trace(fault:+fault.faultstring);}4、java代理中调用webservice,首先在代理工程中引入相关的包。importlotus.domino.*;importjava.io.*;importjava.util.*;importjav

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功