webservice超时设置

webservice超时设置,第1张

package com.primeton.mq.test

importcom.primeton.mq.service.DemoService

importorg.apache.cxf.endpoint.Client

importorg.apache.cxf.jaxws.JaxWsProxyFactoryBean

importorg.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory

importorg.apache.cxf.transport.http.HTTPConduit

importorg.apache.cxf.transports.http.configuration.HTTPClientPolicy

publicclassdemo{

publicstaticvoid main(String[] args) {

//创建动态客户端

JaxWsDynamicClientFactoryfactory =JaxWsDynamicClientFactory.newInstance()

Clientclient = factory.createClient("http://localhost:8090/demo/api?wsdl")

// 需要密码的情况需要加上用户名和密码

//client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME,PASS_WORD))

HTTPConduitconduit = (HTTPConduit) client.getConduit()

HTTPClientPolicyhttpClientPolicy = newHTTPClientPolicy()

httpClientPolicy.setConnectionTimeout(2000)//连接超时

httpClientPolicy.setAllowChunking(false)//取消块编码

httpClientPolicy.setReceiveTimeout(120000)//响应超时

        conduit.setClient(httpClientPolicy)

//client.getOutInterceptors().addAll(interceptors)//设置拦截器

try{

Object[] objects = newObject[0]

// invoke("方法名",参数1,参数2,参数3....)

objects = client.invoke("sayHello","sujin")

System.out.println("返回数据:"+ objects[0])

}catch(Exceptione){

          e.printStackTrace()

      }

调用webservice超时问题的解决:

一.服务器端设置

1、web.config配置,<system.web></system.web>里面增加:<httpRuntime maxRequestLength="10240" appRequestQueueLimit="100" useFullyQualifiedRedirectUrl="true" executionTimeout="1200" />

2、扩大代理类的超时限制,默认是90秒

YourWebService yws = new YourWebService()

yws.Timeout = 1200000//20分钟

3、IIS属性-网站 连接超时时间 1200秒

二.客户端设置

1、修改 app.config 文件,添加如下代码:

<httpRuntime executionTimeout="600" />

请求执行超时时间为600秒(默认为110秒)

2、设置 Web services 的 Timeout 属性

对 XML Web services 的同步调用的超时(以毫秒为单位)。默认为 100000 毫秒。

lywSqCommon.sqsdData.GetData getData = new lywSqCommon.sqsdData.GetData()//GetData 为类名

getData.Timeout=700000//单位为毫秒

指示 XML Web services 客户端等待同步 XML Web services 请求完成的时间(以毫秒计)。

提示:如果将 Timeout 属性设置为 Timeout.Infinite,则指示该请求无超时。即使 XML Web services 客户端可以将 Timeout 属性设置为无超时,Web 服务器仍可以在服务器端使请求超时。

系统将以上面两项设置的最小者作为 *** 作超时的时间长度。

WebService超时设置

1. 服务器端设置超时

在 web.config 的 system.web 里添加如下配置项:

<httpRuntime

executionTimeout="30"

/>

以上时间单位是秒.

记得要把 web.config 的 debug 模式关闭:

<compilation

defaultLanguage="c#"

debug="false"

/>

2. 客户端设置超时

在 WebService 的客户端代理程序(用 wsdl.exe 生成)里设置 Request 超时时间, 单位是毫秒:

protected override WebRequest GetWebRequest(Uri uri)

{

HttpWebRequest wr = (HttpWebRequest)base.GetWebRequest( uri )

wr.Timeout = 30*1000

return wr

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7761168.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存