我正在维护一个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
并且超时值是apache默认值,而不是由Domino服务器控制的内容。
我会感激任何帮助。
答案 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,即没有超时。