如何设置Web服务客户端的请求时间(java)

NoN*_*aMe 3 java soap netbeans web-services timeout

我正在开发一个基于桌面的应用程序,就像下拉框,我有一个downloadFile(long fileId)从web下载文件的功能,应用程序的桌面端是在java中写入Web服务的.Net

我使用netbeans生成了WS客户端

问题是: 有时会发生downloadFile(long fileId)功能卡住,

它背后的原因是什么,我希望如果Web服务功能在给定时间内没有给出任何响应,我会从该功能中取回控制并在一段时间后生成新的呼叫.是否可以使用java?

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

NoN*_*aMe 5

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

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

在这个功能中,我做了一些修改,以设置超时参数,这变得像

@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;
}
Run Code Online (Sandbox Code Playgroud)

问题解决了......

总之,这句话对我帮助很大

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