0

我需要通过它的 SOAP Web 服务连接到 .net 应用程序,但无法从 Domino 中运行它。使用 XPages 我想连接到 Web 服务以将数据返回到 xpage。我尝试创建一个代理来拨打电话,但没有奏效。我在运行代理时收到以下 java StackTrace:

WebServiceEngineFault
 faultCode: {http://www.lotus.com/domino/ws/}HTTP
 faultSubcode:
 faultString: (401) Unauthorized
 faultActor:
 faultNode:
 faultDetail:
        {}string:

(401) Unauthorized
        at lotus.domino.axis.transport.http.HTTPSender.readFromSocket(Unknown Source)
        at lotus.domino.axis.transport.http.HTTPSender.invoke(Unknown Source)
        at lotus.domino.axis.strategies.InvocationStrategy.visit(Unknown Source)
        at lotus.domino.axis.SimpleChain.doVisiting(Unknown Source)
        at lotus.domino.axis.SimpleChain.invoke(Unknown Source)
        at lotus.domino.axis.client.AxisClient.invoke(Unknown Source)
        at lotus.domino.axis.client.Call.invokeEngine(Unknown Source)
        at lotus.domino.axis.client.Call.invoke(Unknown Source)
        at lotus.domino.axis.client.Call.invoke(Unknown Source)
        at lotus.domino.axis.client.Call.invoke(Unknown Source)
        at lotus.domino.axis.client.Call.invoke(Unknown Source)
        at lotus.domino.websvc.client.Call.invoke(Unknown Source)
        at com.imanage.worksite.IWOVServicesSoapStub.getFolders(Unknown Source)
        at JavaAgent.NotesMain(Unknown Source)
        at lotus.domino.AgentBase.runNotes(Unknown Source)
        at lotus.domino.NotesThread.run(Unknown Source)

我可以从soapUI 中成功调用它,传入用户ID、密码和域凭据。

我在使用 Web 服务的代理中设置凭据:

                            String arg0 = "DOMAINNAME\\USERID";
                            String arg1 = "PASSWORD";
                            stub.setCredentials(arg0, arg1);

以及 Web 服务使用者本身(在 SoapStub 类中 - 在 getFolders 调用中):

                    _call.setUsername("DOMAINNAME\\USERID");
                    _call.setPassword("PASSWORD");

我是 XPages 和 Java 的新手。有谁知道我可能遗漏了什么或应该检查什么?

(我不能将 Lotusscript 用于 Web 服务使用者,因为 WSDL 生成的变量名太长,所以在这种情况下我必须使用 java)。

4

2 回答 2

0

在这些情况下,为了帮助缩小范围,最好让 SOAPUI 进行完整的测试。

所以请执行以下操作。

  1. 从提供者的 WSDL 在 SOAPUI 中创建一个模拟服务。

  2. 将您的代理指向模拟服务,以便您可以捕获代理发送的内容。(即。捕获 SOAP 请求)。

  3. 使用相同的 SOAP 请求通过 SOAPUI 将其发送到 .NET 服务器。它应该重现该问题并为您提供有关失败原因的更多信息。

以下 wiki 文章解释了如何执行此操作。

http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Testing_your_Domino_web_service_provider_and_consumer_using_SoapUI._

于 2012-07-02T09:28:28.027 回答
0

我会使用 CXF,它似乎在 XPages 中得到更好的支持。您使用的是什么身份验证?我发现摘要身份验证可能不适用于 .net 中的某些服务(Sharepoint 数据是一个),您需要调用另一个端点来获取摘要令牌。我使用 TCPMon(跨平台)或 Fiddler 来查看线路上的内容(您将这些工具配置为代理,以便您可以观看)AD107可能有其他信息,看看。

于 2012-07-02T17:16:08.863 回答