在使用org.apache.axis.client.Call构建并在Domino

时间:2016-07-14 20:22:20

标签: apache lotus-notes axis lotus-domino

我正在维护一个antedeluvian Notes应用程序,它通过手动完成的'Webservice'连接到SAP后端

服务器正在运行Domino Release 7.0.4FP2 HF97。

Webservice不是最近的Webservice Consumer,而是使用Apache soap.jar(org.apache.soap)的大型Java代理。下面是调用代码的示例。

private Call setupSOAPCall() {
    Call call = new Call();

SOAPHTTPConnection conn = new SOAPHTTPConnection();
call.setSOAPTransport(conn);

call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

SAP系统发生了变化,现在需要8分钟才能完成(由SAP团队验证)。

我收到如下错误消息:

[SOAPException: faultCode=SOAP-ENV:Client; msg=For input string: "906    "; targetException=java.lang.NumberFormatException: For input string: "906    "]

我发现了一篇非常密切描述错误消息的博客文章:

https://thejavablog.wordpress.com/category/jmeter/

我得出的假设是,它是一个返回我的Call对象的超时消息,并且该超时消息被错误地解析,因此NumberFormat异常。

查看我的日志,我可以看到我的通话和响应之间有62秒的时差。

我建议将服务器文档中的服务器设置,Internet协议/ HTTP /超时/请求超时选项卡从60秒更改为600秒,并使用

重新启动http任务
tell http restart

我重新运行测试,我得到了相同的错误,时差仍然略高于60秒,这不是我所期待的。

我阅读了Michael Rulnau的博客文章

http://www.mruhnau.net/2014/06/how-to-overcome-domino-webservice.html

指向此APR

http://www-01.ibm.com/support/docview.wss?uid=swg1LO48272

但是我不相信这会适用于这种情况,因为IBM无法知道我的Java代理实际上正在进行Soap调用。

我目前的假设是我必须使用

上的setTimeout()方法

org.apache.axis.client.Call

https://axis.apache.org/axis/java/apiDocs/org/apache/axis/client/Call.html

或org.apache.soap.transport.http.SOAPHTTPConnection

https://docs.oracle.com/cd/B13789_01/appdev.101/b12024/org/apache/soap/transport/http/SOAPHTTPConnection.html

并且超时值是apache默认值,而不是由Domino服务器控制的内容。

我会感激任何帮助。

2 个答案:

答案 0 :(得分:2)

我理解你的方法,我希望这是解决问题的正确方法。

添加调试(控制台写入会很好),显示默认的超时,然后尝试将其增加到10分钟。

 SOAPHTTPConnection conn = new SOAPHTTPConnection();
System.out.println("time out is :" + conn.getTimeout());
conn.setTimeout(600000);//10 min in ms
System.out.println("after setting it, time out is :" + conn.getTimeout());
call.setSOAPTransport(conn);

现在请记住,Dommino还有一个Max LotusScript / Java执行时间,检查这个值并(至少尝试一下)更改它:http://www.ibm.com/support/knowledgecenter/SSKTMJ_9.0.1/admin/othr_servertasksagentmanagertab_r.html(这是版本9帮助,但这部分应该相同)

答案 1 :(得分:1)

我发现这不是我的代码产生错误; apache axis SOAPHTTPConnetion的默认超时为0,即没有超时。