gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:50:33 26 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

FileUpload 类中,这是 Web 服务的根类(由 netBeans 生成),有一些类的构造函数和父类(super class)的函数,其中一个是我用来创建 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);

关于java - 如何设置 Web 服务客户端的请求时间(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13878154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com