在Domino中使用wsdl来使用Web服务

时间:2012-10-25 09:17:12

标签: lotus-domino

我们在应用程序中使用了Web服务使用者和Providors,包括LS和Java设计元素。

我有一个web服务(wcf)wsdl,我试图导入到LotusScript Web Consumer设计元素中,并在保存时收到以下错误:

不是会员:INVOKE

...如下所示。

函数GetCopyDestinations(服务为XSD_STRING,ocsCode为XSD_STRING,Fault1为InteropErrorInfoStruct_n1)为ArrayOfInteropMessageDestination_n1     设置GetCopyDestinations = Service.Invoke(“GetCopyDestinations”,service,ocsCode,Fault1)<<<< =====在此行上出现错误 结束功能

我认为这是wsdl - > Web服务类变换器不喜欢wsdl的结构......?我与正在创建我们正在使用的服务的开发人员合作,所以我可以更改结构,但是,从上面的错误,我不确定从哪里开始。我假设这意味着它不认为对象服务有方法.Invoke()。

我查看了文件:lsxsd.lss,LS Web服务元素包含哪些内容。 LS Web服务中的“stub”类继承自lsxsd.lss文件中的PortTypeBase,PortTypeBase没有invoke()方法,所以我不太确定如何继承此方法。我们成功使用的其他LS Web服务具有完全相同的结构,因此看起来这是正确的。

我能想到的唯一一件事就是让我的同事将wsdl剥离回裸骨,然后添加1个方法,看看它是否导入,添加另一个,看它是否导入等等。

作为旁注,我试图将ws导入java消费者,导入正常。然后我以与我们所有其他java消费者服务完全相同的方式构造存根,它似乎成功完成。当我运行我的测试工具代理时,会创建存根,但在尝试运行任何操作时会出错:

java.rmi.RemoteException:未找到服务的操作说明

我认为这意味着,它找不到wsdl文件中的动作,或类似的东西......?如果我在运行时输出,则结束点url和PortName显示正确。

作为对此的一个注意事项...我试图在上面使用的服务,我们现在有一个正在生产的版本,它在LS网络消费者中,但新的一个已经添加了新的操作。为了进行健全性检查,我随后将“live”wsdl ...我们知道工作...导入到一个LS Web使用者设计元素中并运行一个测试工具代理,按预期工作......很好。然后我将“live”wsdl导入到java消费者设计元素中。运行服务时,我们得到相同的错误......!

java.rmi.RemoteException:未找到服务的操作说明

所以现在我真的很困惑。我想在这里发布wsdl,但我认为NDA等不会允许我,但如果有任何帮助,我正在构建存根,如下所示:

ITKInteropV10Stub stub =(ITKInteropV10Stub)new ITKInteropServiceV10_ServiceLocator()。getITKInteropV10();

这是与我使用的所有其他java Web服务类似的存根构造函数模式。

我一直在谷歌搜索\搜索几天,搜索上面列出的错误,我真的很难找到前进的方向。

理想情况下,解决LS Web使用者中的导入效果最好,因为后端逻辑当前位于将访问此服务的LS Script库中。如果我在java中使用它,那也没关系,它只是使从Web服务到LS库的数据检索更加复杂。

任何评论\建议都会张开双臂欢迎!

此致

尼克

1 个答案:

答案 0 :(得分:3)

LotusScript不区分大小写。你有一个名为“服务”的XSD_STRING变量和另一个名为“Service”的对象,看起来它可能是一个NotesWebServiceEngine对象? (内部LS对象)。