【问题标题】:how to set request time out of web service client(java)如何设置Web服务客户端的请求时间(java)
【发布时间】:2012-12-02 10:09:53
【问题描述】:

我正在开发一个类似于 drop box 的基于桌面的应用程序,我有一个函数 downloadFile(long fileId) 可以从 web 为我下载文件,应用程序的桌面端是在 java 中,其中 web 服务是用 .Net 编写的

p>

我已经使用 netbeans 生成了 WS 客户端

问题是:有时候downloadFile(long fileId)函数会卡住,

无论背后的原因是什么,我想如果 Web 服务函数在给定时间之前没有给出任何响应,我会从该函数中夺回控制权并在一段时间后生成一个新调用。可以用java吗?

编辑我认为如果可以在网络服务之外设置请求时间就可以了,但我不知道如何在 netbeans 生成的客户端中设置超时

【问题讨论】:

    标签: java web-services soap netbeans timeout


    【解决方案1】:

    FileUpload 是 Web 服务的根类(由 netBeans 生成),其中有一些超类的类和函数的构造函数,其中一个是我用来创建 SOAP 对象的。那看起来像

    @WebEndpoint(name = "FileUploadSoap")
    public FileUploadSoap getFileUploadSoap() {
       return super.getPort(new QName("http://svc.qleapahead.com/", 
        "FileUploadSoap"), FileUploadSoap.class);
        }
    

    在这个函数中我做了一些修改以设置超时参数,这就变成了

    @WebEndpoint(name = "FileUploadSoap")
    public FileUploadSoap getFileUploadSoap() {
        FileUploadSoap fileUploadSoap = super.getPort(new QName(
                "http://svc.qleapahead.com/", "FileUploadSoap"),
                FileUploadSoap.class);
        ((BindingProvider) fileUploadSoap).getRequestContext().put(
                "com.sun.xml.internal.ws.request.timeout", 1000 * 2 * 60);
        return fileUploadSoap;
    }
    

    问题解决了……

    简而言之,这句话对我帮助很大

    ((BindingProvider) fileUploadSoap).getRequestContext().put(
                    "com.sun.xml.internal.ws.request.timeout", 1000 * 2 * 60);
    

    【讨论】:

      【解决方案2】:

      根据您用于调用 Web 服务的框架,将有一些设置 readTimeout 的方法导致调用失败并出现某种异常。

      干杯,

      【讨论】:

      • 我的 WS 是基于 SOAP 的,使用 netbeans 生成客户端来消费 web 服务,你能解释一下如何设置 readTimeOut 吗???
      • readTimeOut 是 HTTP 连接上的属性。我不熟悉 Netbeans,但也许这个帖子有帮助:stackoverflow.com/questions/9536616/…
      猜你喜欢
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 2011-01-10
      • 2010-11-09
      • 2010-09-17
      • 1970-01-01
      相关资源
      最近更新 更多