【发布时间】:2012-10-25 09:17:11
【问题描述】:
我们在应用程序中大量使用 Web 服务 Consumers\Providors,包括 LS 和 java 设计元素。
我有一个 Web 服务 (wcf) wsdl,我试图将它导入到 LotusScript Web Consumer 设计元素中,保存时出现以下错误:
不是会员:INVOKE
...在线如下所示。
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)
我认为这是 wsdl --> Web 服务类转换器不喜欢 wsdl 的结构...?我与创建我们正在使用的服务的开发人员一起工作,因此我可以更改结构,但是,由于上面的错误,我不确定从哪里开始。我认为这意味着它认为对象服务没有方法 .Invoke()。
我查看了文件:lsxsd.lss,其中包括 LS Web 服务元素。 LS Web 服务中的“存根”类继承自 lsxsd.lss 文件中的 PortTypeBase,PortTypeBase 没有 invoke() 方法,所以我不太确定该方法是从哪里继承的。我们成功使用的其他 LS Web 服务具有完全相同的结构,因此看起来这是正确的。
我唯一能想到的就是让我的同事将 wsdl 剥离成裸露的骨头,然后添加 1 个方法,看看它是否导入,添加另一个,看看它是否导入,等等。
附带说明,我尝试将 ws 导入 java 使用者,它可以正常导入。然后,我以与我为所有其他 java 消费者服务完全相同的方式构建存根,它似乎成功地完成了。当我运行我的测试工具代理时,会创建存根,但在尝试运行任何操作时会出错:
java.rmi.RemoteException: 找不到服务的操作描述
我的意思是,它在 wsdl 文件中找不到操作,或者类似的东西......?如果我在运行时输出,端点 url 和 PortName 显示正确。
作为附带说明...我在上面尝试使用的服务,我们现在有一个正在生产中的版本,它在 LS 网络消费者中,但新版本已经添加了新操作。为了进行完整性检查,然后我将“实时” wsdl ...我们知道可以工作...导入到 LS 网络消费者设计元素并运行测试工具代理,按预期工作...很好。然后我将“live”wsdl 导入到 java 消费者设计元素中。运行服务时,我们得到同样的错误...!?
java.rmi.RemoteException: 找不到服务的操作描述
所以现在我真的,真的很困惑。我想在这里发布 wsdl,但我认为 NDA 等不允许我,但如果有任何帮助,我将按如下方式构建存根:
ITKInteropV10Stub 存根 = (ITKInteropV10Stub) new ITKInteropServiceV10_ServiceLocator().getITKInteropV10();
这是一个与我使用的所有其他 java web 服务类似的存根构造函数模式。
我已经在谷歌上搜索了几天,搜索上面列出的错误,我真的很难找到前进的道路。
理想情况下,解决 LS Web 消费者中的导入问题效果最好,因为后端逻辑当前位于将访问此服务的 LS 脚本库中。如果我让它在 java 中工作,那也很好,它只会使从 Web 服务中检索数据到 LS 库中变得更加复杂。
我们会张开双臂欢迎任何 cmets\ 建议!
问候
尼克
【问题讨论】:
-
我在 LDD 上为您回答了这个问题,但不妨尝试在这里获得一些分数。 :) 如果它解决了问题,请告诉我。
-
太好了,关于其他问题,我建议使用 SOAPUI 或类似应用程序进行测试。如果您之前没有使用过它,这里有一个教程。 www-10.lotus.com/ldd/ddwiki.nsf/dx/….
标签: lotus-domino