Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LotusNotes:Java在代理上运行良好,但在Java库上运行失败_Java_Lotus Notes_Lotusscript_Ls2j - Fatal编程技术网

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

LotusNotes:Java在代理上运行良好,但在Java库上运行失败,java,lotus-notes,lotusscript,ls2j,Java,Lotus Notes,Lotusscript,Ls2j,我创建了一个Web服务消费者。 我想调用名为setCredentials的方法,以便将身份验证信息传递给服务 我有两个导入web服务使用者的实体,一个代理和一个java库,这意味着要从LotusScript调用 奇怪的是,在我的经纪人身上,一切正常。库编译正常,但当它从LotusScript执行并到达该行时 stub.setCredentials(“xxxx”、“ttttt”) Java抛出一个Java.lang.nosuchmethod错误。我会做错什么 非常感谢您的帮助 更新: 也许我没有充

我创建了一个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中有详细说明。这也适用于调用Java代理,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(将消费者库添加到代理)


这两种方法对各自的消费者都起到了预期的作用

不可能从LotusScript(LS2J)调用Java Web服务使用者。这在SPR中有详细说明。这也适用于调用Java代理,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(将消费者库添加到代理)


这两种方法对各自的消费者都起到了预期的作用

setCredentials()是在代码中定义的还是从基类继承的?setCredentials()是在代码中定义的还是从基类继承的?谢谢,Simon,这充分解释了我遇到的许多奇怪错误。看来我现在做的基本上是不可能的。我必须通过一个LotusScript消费者。谢谢。别忘了在回答的问题上做记号。谢谢。谢谢,西蒙,这充分解释了我犯下的许多奇怪的错误。看来我现在做的基本上是不可能的。我必须通过一个LotusScript消费者。谢谢。别忘了在回答的问题上做记号。谢谢