Lotus Domino V7.0 在 Lotus Domino Designer 中引入了新的 Web 服务设计元素。因此在Lotus Domino应用开发中使用Web 服务变得更加容易。其中Lotus Domino 负责处理所有的 WSDL 创建和 SOAP 操作,我们所要做的事情就是在 Web 服务设计元素中编写代码,设计Web 服务。Lotus Domino 就可以发布 WSDL 文件、将引入的 SOAP 请求转换为类上的方法调用以及返回方法的结果(如果有的话)作为 SOAP 响应。Lotus Domino Web 服务可以用lotus script,java两种语言编写。而调用Web 服务的方法却有很多。
一、设计Web 服务。
点新建Web 服务。设计自己的Web 服务。
Web Service Properties 框中的 Basics 附签
对 Basic 附签上的字段说明如下:
Name(必需的):Web 服务的名称,是客户机访问 WSDL 文件或服务的方法时所使用的名称。
Alias:除 Name 之外的另一名称,用户使用该名称可以访问服务。
Comment:有关 Web 服务的信息数据的字段(通常,该字段的信息不超过一句话;有关 Web 服务的较长描述或信息应写在代码的注释中)。
Warn if the WSDL interface is modified:该选项警告您对代码所做的更改是否修改了由 Web 服务产生的 WSDL 文件。这对于确保 WSDL 文件的一致很有用,但是应该意识到,如果选中了该选项,则您将无法保存带有已修改的 WSDL 文件的服务。
PortType class(必需的):用作 Web 服务接口的类的名称。换句话说,它就是 Web 服务代码中带有用户可访问的 public 方法的类。
框中的第二个附签是 Security 附签(参见图 4)。
图 4. Web Service Properties 框中的 Security 附签
对 Security 附签上的字段说明如下:
Run as web user:该选项使 Web 服务代码能够在调用 Web 服务的用户的安全性上下文中运行(默认情况下,它将在 Lotus Domino Designer 中最后签名 Web 服务的那个 ID 的安全性上下文中运行)。
Run on behalf of:该字段允许指定用户,如果想让 Web 服务代码运行在特定用户的安全性上下文中,而不是 Lotus Domino Designer 中最后签名 Web 服务的那个 ID 的安全性上下文中。
Allow remote debugging:该选项允许远程调试 Web 服务(有关远程调试的信息,请参阅 Lotus Domino Designer 帮助主题 “Using the Remote Debugger”)。
Profile this web service:该选项将在 Web 服务运行时使其生成分析信息(有关分析的信息,请参阅 Lotus Domino Designer 帮助主题 “Profiling agents and Web services”)。
Set runtime security level:设置为 1,允许大多数 LotusScript 和 Java 操作正确运行;对于读/写文件、创建 COM 对象或执行网络操作等,根据需要,设置为 2 或 3(有关更多信息,请参阅 Lotus Domino Designer 帮助主题 “Restricted LotusScript and Java agent operations”)。
Default access for this web service:该选项允许控制哪些用户可以访问 Web 服务,并超出了使用数据库 ACL 所能进行的控制(如果 Anonymous 用户无法访问 Web 服务,则当用户尝试进行连接时,将收到错误 401 Access Denied 或 404 Not Found)。
Allow Public Access users to use this web service:该选项使得仅拥有数据库 ACL 中 “Read Public Documents” 访问权的用户可以使用该 Web 服务,当不想为大量用户授予完全的 Reader 访问权限(或更高级别)时,这点很有用。
框中的第三个附签是 Options 附签(参见图 5)。
图 5. Web Service Properties 框中的 Options 附签
对 Options 附签上的字段说明如下:
Programming model:可用选项是 RPC 或 Message(大多数情况下使用 RPC)。
SOAP message format:在该字段中,为此 Web 服务选择 SOAP 消息格式,Lotus Domino V7.0 中的默认格式是 RPC/encoded。
Include operation name in SOAP action:该选项要求操作名称存在于外来请求的 SOAP 动作标头中(很少需要)。
Port type name:默认情况下,该字段值与 Basics 附签上 PortType class 字段的值相同(尽管您可以使用任何想用的名称)。生成 WSDL 文件时使用该值。
Service element name:默认情况下,该字段值是 PortType 名称加上单词 Service(尽管您可以使用任何想用的名称)。生成 WSDL 文件时使用该值。
Service port name:默认情况下,该字段值是 Domino(尽管您可以使用任何想用的名称)。生成 WSDL 文件时使用该值。
可以选择是用lotus script 或JAVA语言编辑你的Web 服务。以下是lotus script编写的一个简单的例子。
二、Web 服务的调用
1、 lotus script代理中调用webservice。
在window平台上我们可以使用MSSOAP toolkit来调用。可以下载MSSOAP toolkit3.0,并在服务器上安装MSSOAP toolkit3.0。在代理中的代码如下:
![](http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
On Error Goto errhandle
Dim ss As New NotesSession
Dim doc As NotesDocument
Set doc=ss.DocumentContext
Dim client As Variant
Dim xmlfilename As String
Dim xmltext As String
xmlfilename=doc.xmlfilename(0)
xmltext=doc.xmltext(0)
Set Client =CreateObject("MSSOAP.SoapClient30")
Call Client.mssoapinit ("http://server/mis/flow.nsf/saveworkflow?WSDL")
Dim result As String
If Not Client Is Nothing Then
result = Client.saveworkflowxml(xmlfilename,xmltext)
Else
result="no web"
End If
Exit Sub
errhandle:
Msgbox Str(Err)+"行号:"+Str(Erl)+"错误信息saveworkflowxml:"+Error$
Resume Next
End Sub
2、 javascript中调用 webservice
![](http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
var xmltext=document.all.xmltext.value
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
var soapMessage, soapData, URL;
// Set the soap message
soapMessage = "<?xml version="1.0" encoding="utf-8"?>";
soapMessage += "<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance""
+ " xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">";
soapMessage += "<soap:Body>";
// Set the data for soap body ---- begin ------
soapData = "<saveworkflowxml xmlns="http://tempuri.org/">";
soapData += " <xmlfilename>" + xmlfilename + "</xmlfilename>";
soapData += " <xmltext>" + xmltext + "</xmltext>";
soapData += "</saveworkflowxml>";
// Set the data for soap body ---- end ------
soapMessage = soapMessage + soapData + "</soap:Body>";
soapMessage = soapMessage + "</soap:Envelope>";
var urlstr="http://server/mis/flow.nsf/saveworkflow?openwebservice"
xmlhttp.Open("POST",urlstr, false);
xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=utf-8");
xmlhttp.SetRequestHeader ("SOAPAction","http://tempuri.org/onlineandmsg");
xmlhttp.send(soapMessage);
var x = xmlhttp.responseXML;
3、 FLASH 中调用webservice
import mx.services.WebService;
//定义WebService的路径;
var ws_url:String = "http://server/mis/flow.nsf/saveworkflow?WSDL";
//定义WebService对象;
var ws:WebService = new WebService(ws_url);
//调用WebService方法;
var callObject = ws.SAVEWORKFLOWXML(_parent.workflowxml,_global.workxml.toString());
//设置返回结果对象;
callObject.onResult = function(result){
trace(result);
}
//如果调用错误返回信息(这个是可选的);
callObject.onFault = function(fault){
trace("fault:"+fault.faultstring);
}
4、 java 代理中调用webservice,首先在代理工程中引入相关的包
import java.io.*;
import java.util.*;
import java.net.*;
import org.w3c.dom.*;
import org.apache.soap.util.xml.*;
import org.apache.soap.*;
import org.apache.soap.encoding.*;
import org.apache.soap.encoding.soapenc.*;
import org.apache.soap.rpc.*;
import org.apache.soap.transport.http.SOAPHTTPConnection;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Document doc = agentContext.getDocumentContext();
String xmlfilename=doc.getItemValueString("xmlfilename")
String xmltext=doc.getItemValueString("xmltext")
// (Your code goes here)
URL url = new URL ("http://server/mis/flow.nsf/saveworkflow?WSDL");
SOAPMappingRegistry smr = new SOAPMappingRegistry ();
StringDeserializer sd = new StringDeserializer ();
smr.mapTypes (Constants.NS_URI_SOAP_ENC, new QName ("", "Result"), null, null, sd);
// 创建传输路径和参数
SOAPHTTPConnection st = new SOAPHTTPConnection();
// 创建调用
Call call = new Call ();
call.setSOAPTransport(st);
call.setSOAPMappingRegistry (smr);
call.setTargetObjectURI ("http://tempuri.org/message/");
call.setMethodName("saveworkflowxml");
call.setEncodingStyleURI ("http://schemas.xmlsoap.org/soap/encoding/");
Vector params = new Vector();
params.addElement(new Parameter("xmlfilename", String.class, xmlfilename, null));
params.addElement(new Parameter("xmltext", String.class,xmltext, null));
call.setParams(params);
Response resp = null;
try {
resp = call.invoke (url,"");
}
catch (SOAPException e) {
System.err.println("Caught SOAPException (" + e.getFaultCode () + "): " + e.getMessage ());
return;
}
// 检查返回值
if (resp != null && !resp.generatedFault()) {
Parameter ret = resp.getReturnValue();
Object value = ret.getValue();
System.out.println ("Answer--> " + value);
}
else {
Fault fault = resp.getFault ();
System.err.println ("Generated fault: ");
System.out.println (" Fault Code = " + fault.getFaultCode());
System.out.println (" Fault String = " + fault.getFaultString());
}
} catch(Exception e) {
e.printStackTrace();
}
}
2
3 Class saveworkflow
4
5 Sub NEW
6
7 End Sub
8
9 Function saveworkflowxml(xmlfilename As String,xmltext As String) As String
10
11 On Error Goto errhandle
12
13 Dim outputStream As NotesStream
14
15 Dim session As New NotesSession
16
17 Set outputStream = session.CreateStream
18
19 Dim outputFile As String
20
21 outputFile=Curdir$()+"datadominohtmlworkflow"+xmlfilename
22
23 If outputStream.Open(outputFile) Then
24
25 Call outputStream.WriteText(xmltext, EOL_CRLF)
26
27 Call outputStream.Close
28
29 End If
30
31 saveworkflowxml="1"
32
33 Exit Function
34
35 errhandle:
36
37 Msgbox Str(Err)+"行号:"+Str(Erl)+"错误信息saveworkflow:saveworkflowxml"+Error$
38
39 Resume Next
40
41 End Function
42
43 End Class
44
原文链接:http://blog.csdn.net/juest365/article/details/6285383
相关推荐
标题"domino中运用webservice"所指的就是在Domino环境中如何利用WebService技术。这通常涉及到以下几个关键知识点: 1. **WebService的基本概念**:WebService是一种基于XML的开放网络协议,它通过SOAP消息协议在...
在本文中,我们将深入探讨Domino如何实现和利用WebService服务,以及这一功能的重要性和实际应用。 1. WebService简介: WebService是一种基于开放标准(如WSDL、SOAP和UDDI)的互联网通信协议,允许不同应用程序...
这个技术使得开发者能够利用Lotus Domino的强大功能,如数据库存储、邮件和协作,集成到Web应用程序或企业系统中。在本篇文章中,我们将深入探讨如何建立和调用Lotus Domino Web服务。 首先,建立Lotus Domino Web...
JESD79-2F DDR2 JESD79-3F DDR3 JESD79-4D DDR4 JESD79-5C DDR5 JESD209-2F LPDDR2 JESD209-3C LPDDR3 JESD209-4E LPDDR4 JESD209-4-1A LPDDR4X JESD209-5C LPDDR5(X)
COMSOL二维光子晶体角态研究:单胞与超胞能带计算及边界态与角态特性分析,COMSOL二维光子晶体角态研究:单胞与超胞能带计算及边界态与角态特性分析,comsol二维光子晶体角态。 单胞能带,超胞能带,边界态以及角态计算。 ,comsol;二维光子晶体;角态;单胞能带;超胞能带;边界态计算,基于Comsol的二维光子晶体角态及能带边界计算研究
六自由度机械臂抓取动作仿真与代码解析:抓取动画、关节参数变化及轨迹图解详解,六自由度机械臂抓取动作仿真指南:掌握两套代码实现动画与轨迹图模拟学习攻略,六自由度机械臂抓取动作仿真-8 两套关于抓取动作的代码,包括抓取动画、关节角、角速度、角加速度的变化仿真、以及抓取轨迹图 简单易懂好上手~ ,六自由度机械臂;抓取动作仿真;抓取动画;关节角变化;角速度角加速度;抓取轨迹图;两套代码;简单易懂好上手,六自由度机械臂抓取动作仿真演示:代码与轨迹图解
ITC网络广播工具软件
Multisim四位密码锁电路仿真设计:设定、开锁与声光报警功能演示资料包,Multisim四位密码锁电路仿真设计:设定、输入、开锁与报警功能详解,附源文件、原理说明书与演示视频,multisim四位密码锁电路仿真设计 功能: 1.通过拨码开关1进行初始密码设定。 2.通过拨码开关2输入密码,实现开锁判断。 3.如果密码正确,LED绿灯亮,表示开锁。 4.如果密码不正确,LED红灯亮,蜂鸣器鸣叫,声光报警。 资料包含:仿真源文件+原理说明书+演示视频 ,四位密码锁电路、Multisim仿真设计、初始密码设定;拨码开关输入;开锁判断;LED灯显示;声光报警;仿真源文件;原理说明书;演示视频,Multisim四位密码锁电路仿真设计:初始密码设置与智能解锁功能的声光报警展示
俗话说,摸鱼摸的好,上班没烦恼,毕竟谁能拒绝带薪拉屎呢(手动狗头) 这是一个云开发职场打工人专属上班摸鱼划水微信小程序源码,没有后台 直接导入微信开发者工具即可运行,UI简约大气漂亮,只需登录微信公众平台配置完合法域名即可轻松上线。 用户进入摸鱼小程序,可以自由设置薪资,上班时间、下班时间、发薪日、 月工作天数以提醒自己摸鱼,全民打酱油,让自己成为摸鱼冠军,《商鞅摸鱼哲学》 摸鱼不是自我放纵,而是个人实力的积蓄,我们的小目标是晚睡晚起 小程序中的今日待办会提醒用户带薪拉屎和闲逛,下方展示的是距离休息日的天数,距离下一次发工资的天数和节日的天数。
【毕业设计】基于Java的开发的一个集合校园二手交易、拼车、失物招领等功能的app_pgj
个人记录:PICkit3离线烧录流程 使用软件:MPLAB X IDE v5.30 记录时间:20250215
基于Matlab代码的电力系统状态估计与实验仿真研究:扩展卡尔曼滤波和无迹卡尔曼滤波在电力系统动态状态估计中的应用及效果分析,Matlab仿真实验研究:基于扩展卡尔曼滤波器与无迹卡尔曼滤波器对电力系统状态估计的影响及验证,状态估计 电力系统状态估计 Matlab代码 实验仿真研究 电力系统由于测量值和传输误差,还有测量噪声的影响,会对状态估计产生影响。 因此,需要对嘈杂的测量进行滤波,以获得准确的电力系统运行动态。 本文使用扩展卡尔曼滤波器(EKF)和无迹卡尔曼滤波器(UKF)来估计电力系统的动态状态。 扩展卡尔曼滤波EKF、无迹卡尔曼滤波UKF 利用扩展的无迹卡尔曼滤波器估计了动力系统的动态状态。 对WECC 3机9总线系统和新英格兰10机39总线系统进行了案例研究。 结果表明EKF和UKF都能准确地估计电力系统的动态状态。 ,核心关键词:状态估计; 电力系统状态估计; Matlab代码; 实验仿真; 测量值误差; 测量噪声; 扩展卡尔曼滤波器(EKF); 无迹卡尔曼滤波器(UKF); 动力系统; 动态状态估计; WECC 3机9总线系统; 新英格兰10机39总线系统。,Matlab
springboot在线考试--
台达DVP EH3与MS300 PLC&变频器通讯程序的全面解决方案,台达DVP EH3与MS300通讯程序:稳定可靠的频率控制与启停管理系统,台达DVP EH3与台达MS300通讯程序(TDEH-9) 可直接用于实际的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等。 程序采用轮询,可靠稳定 器件:台达DVP EH3系列PLC,台达MS300系列变频器,昆仑通态7022Ni 功能:实现频率设定,启停控制,实际频率读取,加减速时间设定。 资料:带注释程序,触摸屏程序,接线和设置说明,后续有技术咨询。 ,核心关键词:台达DVP EH3; 台达MS300; 通讯程序(TDEH-9); 轮询; 稳定; 频率设定; 启停控制; 实际频率读取; 加减速时间设定; 触摸屏程序; 接线方式; 设置说明; 技术咨询。,台达PLC与变频器通讯程序(带注释、触摸屏控制)
项目资源包含:可运行源码+sql文件 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。项目具有较高的学习借鉴价值,也可拿来修改、二次开发。 个人账户管理:支持用户注册、登录与个人信息编辑;提供密码找回及账号安全保护措施。 声纹采集:利用麦克风设备录制用户的声纹样本;支持多种录音格式和质量调整,确保采集到清晰、准确的声纹数据。 声纹模板库管理:建立和维护一个安全的声纹模板库;支持声纹模板的添加、删除、更新和查询操作。 声纹比对与识别:运用深度学习算法对输入的声纹数据进行特征提取和匹配;实现快速、准确的声纹身份验证。 多场景应用支持:适用于多种场景,如门禁系统、移动支付、远程登录等;可根据实际需求定制开发相应的应用场景。 实时监控与报警:实时监控系统运行状态,包括声纹识别成功率、处理速度等指标;当出现异常情况时,及时发出报警信息。 数据分析与报告生成:收集并分析声纹识别过程中的数据,如识别准确率、处理时间等;根据用户需求输出包含详细图表说明的专业级文档供下载打印保存。 社区互动交流:设立论坛版块鼓励用户分享心得体会讨论热点话题;定期邀请行业专家举办线上讲座传授实用技巧知识。 音乐筛选与推荐:集成音乐平台API,根据用户的浏览习惯和情绪状态推荐背景音乐,增强用户体验。 数据可视化:提供交互式的数据可视化面板,使非技术用户也能轻松理解复杂的数据集,从而做出更明智的决策。
三相与多相开绕组永磁同步电机仿真模型的先进控制策略探讨与实现,三相与多相开绕组永磁同步电机的Simulink仿真模型与先进控制策略研究,开绕组电机,开绕组永磁同步电机仿真模型、simulink仿真 共直流母线、独立直流母线,两相容错,三相容错控制,零序电流抑制,控制策略很多 三相开绕组永磁同步电机,六相开绕组永磁同步电机 五相开绕组永磁同步电机,五相开绕组电机 ,开绕组电机; 永磁同步电机仿真模型; simulink仿真; 共直流母线; 独立直流母线; 两相容错; 三相容错控制; 零序电流抑制; 控制策略; 六相开绕组永磁同步电机; 五相开绕组永磁同步电机,开绕组电机仿真研究:共直流母线与独立直流母线的容错控制策略
【毕业设计】基于Java的开发的网上汽车租赁管理系统_pgj
csv 模块是 Python 的标准库,无需额外安装。 运行结果如下图: ['姓名', '年龄', '城市'] ['张三', '25', '北京'] ['李四', '30', '上海'] ['王五', '22', '广州']
【毕业设计】基于Java+Springboot+Vue的宠物领养系统_pgj
让前端开发者学习“机器学习”!