gpt4 book ai didi

java - Lotus Notes : Java Runs Fine when on an Agent, 但在 Java 库上失败

转载 作者:行者123 更新时间:2023-11-30 07:10:36 25 4
gpt4 key购买 nike

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

我有两个导入 Web 服务消费者的实体,一个代理和一个 Java 库,旨在从 LotusScript 调用。

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

非常感谢您的帮助。

更新:

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

最佳答案

无法从 LotusScript (LS2J) 调用 Java Web 服务使用者。这在 SPR SODY7UDKE8 / APAR LO42772 中有详细说明.这也适用于调用 Java 代理,后者又调用 Java 消费者。

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

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

也就是说,我创建了以下示例提供程序。

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();
}
}
}

这两个都按预期与各自的消费者一起工作。

关于java - Lotus Notes : Java Runs Fine when on an Agent, 但在 Java 库上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22051912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com