LotusNotes:Java在代理上运行良好,但在javalib上运行失败



我创建了一个Web服务使用者。我想调用一个名为setCredentials的方法,以便将身份验证信息传递给服务。

我有两个导入web服务使用者的实体,一个代理和一个java库,它们将从LotusScript调用。

奇怪的是,在我的经纪人身上,一切都很好。库编译正常,但当它从LotusScript执行并到达该行时stub.setCredentials("xxxx","ttttt");Java抛出一个java.lang.nosuchmethod错误。我做错了什么?

事先非常感谢你的帮助。

更新:

也许我没有充分解释。该操作完全发生在java内部。这是一种测试。在LotusScript上,我只是用GetClass/CreateObject序列调用构造函数。代码在构造函数中(为了测试)。在我的测试代理和java库上,它看起来完全一样。回答您的问题,Jason,不,setCredentials是某个lotus.domino.types.PortTypeBase接口的一部分。当我使用.wsdl创建web服务使用者时,我可以从生成的.java文件中看到我的接口扩展了portTypeBase和Remote

不可能从LotusScript(LS2J)调用Java Web服务使用者。这在SPR SODY7UDKE8/APAR LO42772中有详细说明。这也适用于调用Java代理,而Java代理又调用Java使用者。

您将需要创建一个LotusScript使用者来访问LotusScript中的web服务。然而,LotusScript中存在一些已知的限制,这些限制可能会阻止使用某些web服务。

  • 40个字符的变量/方法限制
  • 超大的SOAP消息可能会导致性能/崩溃问题
  • LS/WSDL/SOAP中的保留关键字不匹配

也就是说,我创建了以下示例Provider。

Class wsClass 
Function hello ( helloText As String) As String
hello = "Hello " + helloText
End Function
End Class

它存储在NSF中,我将其设置为只允许经过身份验证的用户。

然后,我从生成的WSDL中创建了一个LS使用者和Java使用者库。

之后,我创建了以下示例代码。

LotusScript

Use "LsWebServiceConsumer"
Sub Initialize
Dim stub As New Wsclass
Dim answer As String
Call stub.Setcredentials("testuser", "password")
answer = stub.Hello("world")
MsgBox answer   
End Sub

JAVA(向代理添加了消费者库)

import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
WsClass stub = new WsClassServiceLocator().getDomino();
stub.setCredentials("testuser", "password");
System.out.println(stub.HELLO("world"));
} catch(Exception e) {
e.printStackTrace();
}
}
}

这两种方式都与各自的消费者一样发挥了预期的作用。

相关内容

最新更新