`

axis1.4 设置请求超时时间

阅读更多

 

项目中使用axis1.4生成的webservice,访问公安网的接口,使用过程中某些业务和时间段调用接口会产生请求超时的情况,由于业务是顺序执行,无法通过线程等待一段时间的方式来处理请求超时,因此只能尝试从webservice自身入手。

 

先说解决方案:通过各种设置setTimeout来控制请求超时时间。

 

具体怎么设置,尝试过的有如下几种:

 

如果是使用stub方式调用webservice,有两种方式设定:

 

1:统一所有出口的超时时间设定:

 

这种方式在axis生成的四个客户端类中,对stub这个类下手,这个类就是stub方式调用的核心类,以前总认为它是自动生成能的,不能随便乱动,其实不然,关键是找到下手的地方。仔细阅读,你会在这个类里面找到webservice服务端对外暴露的方法,然后在在该方法里面找到生成call对象的地方,加入如下一行代码即可:

 

_call.setTimeOut(30000);   //单位是毫秒

 

如果你想更灵活的控制超时时间,不妨把控制时间设置到配置文件里。

 

 

2:单个方法的超时时间控制:

 

在你的业务类处理接口调用方法里面,在获得stub对象的下面,加入如下代码:

 

stub.setTimeOut(30000);   //单位是毫秒

 

这种方案控制到了具体的某个方法,更灵活。

 

解决方案来自于这里:

http://axis.apache.org/axis/faq.html#faq17

 

  

如果你是使用便捷模式调用,那更简单,直接一句话(标红代码):

 

String endpoint="http://ip/project/services/xxx?wsdl";

Service service =new service();

Call call=(Call) service.createCall();

call.setTargetEndpointAddress(endpoint);

call.setOperationName("methodname");

call.setTimeout(10000);  //单位是毫秒

String ret =(String)call.invoke(new Object[] {xmldoc});

 

这种方法简单便捷,对于测试webservice极为方便,但是缺少灵活性,工程一般不建议使用。

 

 

最重要的所有的方案都是从客户端下手,因为服务端常常不是你所能控制的。

 

 

 

总结:

 

1:要保持英文阅读的能力,不然就算有解决方案都看不懂。

 

2:不要人云亦云:其实long long ago,在网上就查到过通过设置setTimeout参数来控制超时时间的观点,但是好多人都说这个参数设置无效,当时也没有深入,只是人云亦云的想当然,大多数人的悲哀,挣扎吧,少年。

 

3:经验是一个不断积累的过程,也只有经验积累到了一定程度,娴熟了,才会有庖丁解牛的勇气和行动。

分享到:
评论

相关推荐

    springboot+axis1.4

    2. **集成 Axis1.4**:首先,你需要在Spring Boot的`pom.xml`文件中添加Axis1.4的依赖。这通常意味着你需要手动添加Axis的库,因为Spring Boot默认并不包含对Axis的支持。你需要找到Axis1.4的Maven坐标,并在`...

    e-cology工作流接口使用白皮书.doc

    上述代码首先创建了一个`RequestServiceServiceStub`实例,并设置了网络连接的超时时间。接着,创建了`CreateRequest`对象,用于封装创建留言所需的数据。具体的字段填充和其他逻辑细节根据实际情况进行调整。 综上...

    JAVA上百实例源码以及开源项目源代码

    Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证...

    java开源包1

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包11

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包2

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包3

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包6

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包5

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包10

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包4

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包8

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包7

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包9

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包101

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    Java资源包01

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

Global site tag (gtag.js) - Google Analytics