在Domino中使用wsdl消耗Web服务 [英] Consuming web service using wsdl in Domino

查看:102
本文介绍了在Domino中使用wsdl消耗Web服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们在我们的应用程序中大量使用了Web服务的Consumers \ Providors,包括LS和Java设计元素.

We use web service Consumers\ Providors quite a bit in our application, both LS and java design elements.

我有一个Web服务(wcf)wsdl,我正尝试将其导入LotusScript Web Consumer设计元素,并且在保存时出现以下错误:

I have a web service (wcf) wsdl that I am trying to import into a LotusScript Web Consumer design element and when saving I am getting the following error:

不是会员:INVOKE

Not a member: INVOKE

...如下所示.

函数GetCopyDestinations(将服务作为XSD_STRING,将ocsCode作为XSD_STRING,将Fault1作为InteropErrorInfoStruct_n1)作为ArrayOfInteropMessageDestination_n1 设置GetCopyDestinations = Service.Invoke("GetCopyDestinations",service,ocsCode,Fault1)<<<< =====此行上的错误 结束功能

Function GetCopyDestinations(service As XSD_STRING, ocsCode As XSD_STRING, Fault1 As InteropErrorInfoStruct_n1) As ArrayOfInteropMessageDestination_n1 Set GetCopyDestinations = Service.Invoke("GetCopyDestinations", service, ocsCode, Fault1) <<<<=====ERROR ON THIS LINE End Function

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

I take this to be that the wsdl --> Web service classes transformer does not like the structure of the wsdl...? I work with the developer who is creating the service we are consuming, so I can get the structure changed, but, from error above, I am not really sure where to start. I assume this means it does not think the Object Service has the method .Invoke().

我已经查看了文件:lsxsd.lss,其中包含LS Web服务元素. LS Web服务中的存根"类继承自lsxsd.lss文件中的PortTypeBase,PortTypeBase没有invoke()方法,因此我不确定该方法的继承方式.我们成功使用的其他LS Web服务具有完全相同的结构,因此看来这是正确的.

I've had a look in the file: lsxsd.lss, which LS web service elements include. The "stub" class in the LS web service inherits from PortTypeBase which is in the lsxsd.lss file, PortTypeBase does not have an invoke() method, so I am not quite sure how\ where this method is inherited from. Other LS web services we use successfully, have exactly the same structure, so it would appear this is correct.

我唯一能想到的就是让我的同事将wsdl剥去裸露的骨头,然后添加1种方法,看看它是否导入,添加另一种方法,看看它是否导入,等等.

The only thing I can think of is to get my colleague to strip the wsdl back to bare bones, then add 1 method, see if it imports, add another, see if it imports, etc.

作为旁注,我尝试将ws导入到Java使用者中,它可以很好地导入.然后,我以与其他所有Java消费者服务完全相同的方式构造存根,该存根似乎成功完成了.当我运行测试工具代理时,将创建存根,但是在尝试运行任何操作时会出错:

As a side note, I tried to import the ws into a java consumer, it imports fine. I then construct the stub in exactly the same way I do for all our other java consumer services, which it appears to do successfully. When I run my test harness agent, the stub is created, but it errors when trying to run any of the actions:

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

java.rmi.RemoteException: No operation description was found for the service

我的意思是说,它无法在wsdl文件中找到动作,或类似的东西...?如果我在运行时输出,则终点url和PortName会显示正确.

I take this to mean, it can't find the action in the wsdl file, or something similar...? The end point url and PortName appear correct if I output as it is running.

作为对此的补充说明...我正在尝试使用的服务,我们现在有一个正在生产中的版本,它在LS Web使用者中使用,但是新的已添加了新的操作.为了进行健全性检查,然后将实时" wsdl导入到我们的LS Web消费者设计元素中,并运行一个测试工具代理,它可以按预期工作.然后,我将实时" wsdl导入到Java消费者设计元素中.在运行服务时,我们会收到相同的错误...!?

As a side note to this...the service I am attempting to consume above, we have a version working in production now, it is in a LS web consumer, but new one has had new actions added. For a sanity check, I then imported the "live" wsdl...which we know works...into a LS web consumer design element and run a test harness agent, works as expected...good. Then I imported "live" wsdl into a java consumer design element. When running the service, we get the same error...!?

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

java.rmi.RemoteException: No operation description was found for the service

所以现在我真的非常困惑.我想在这里发布wsdl,但是我认为NDA等将不允许我,但是如果有帮助,我将按以下方式构建存根:

So now I'm really, really confused. I would like to post the wsdl here, but I think NDA etc., will not allow me, but if it's any help, I am constructing the stub as follows:

ITKInteropV10Stub存根=(ITKInteropV10Stub)新的ITKInteropServiceV10_ServiceLocator().getITKInteropV10();

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

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

This is a similar stub constructor pattern to all other java web services I consume.

我一直在谷歌搜索\搜索几天,搜索上面列出的错误,我真的很努力寻找前进的方向.

I have been googling\ searching for a couple of days now, searching for errors listed above, I'm really struggling to find a way forward.

理想情况下,解决LS Web使用者中的导入效果最好,因为后端逻辑当前在LS脚本库中,该脚本可访问此服务.如果我可以在Java中运行它,那也很好,这只会使从Web服务到LS库的数据检索更加复杂.

Ideally, solving the import in the LS web consumer would work best, since back end logic is currently in LS Script libs which will access this service. If I get it working in java, that's fine as well, it just makes the retrieval of data from the Web Service into the LS libs a bit more complex.

任何评论\建议都会受到欢迎!

Any comments\ suggestion would be welcomed with open arms!

致谢

尼克

推荐答案

LotusScript不区分大小写.您有一个名为XSD_STRING的服务"变量和另一个名为服务"的对象,它看起来像是一个NotesWebServiceEngine对象? (内部LS对象).

LotusScript is not case sensitive. You have a variable called "service" of XSD_STRING and another object called "Service" which looks like it might be a NotesWebServiceEngine object? (internal LS object).

这篇关于在Domino中使用wsdl消耗Web服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆