我们有一个简单的 Web 服务客户端调用程序 UpdaterService(自动生成的,扩展了 javax.xml.ws.Service)。该类有一个 getUpdaterPort 函数,它包装了 super 的 getPort 函数(这也是标准的)。
调用 getUpdaterPort 的返回值是一个 Updater 接口(interface):
/** * This class was generated by the JAX-WS RI. * JAX-WS RI 2.1.7-hudson-48- * Generated source version: 2.1 * */ @WebService(name = "Updater", targetNamespace = "http://updater.glassfish.com/") @XmlSeeAlso({ ObjectFactory.class }) public interface Updater {
/**
*
* @param arg2
* @param arg1
* @param arg0
* @return
* returns java.lang.String
*/
@WebMethod
@WebResult(targetNamespace = "")
@RequestWrapper(localName = "updateWar", targetNamespace = "http://updater.glassfish.com/", className = "com.abc.utils.updaterclient.client.UpdateWar")
@ResponseWrapper(localName = "updateWarResponse", targetNamespace = "http://updater.glassfish.com/", className = "com.abc.utils.updaterclient.client.UpdateWarResponse")
public String updateWar(
@WebParam(name = "arg0", targetNamespace = "")
String arg0,
@WebParam(name = "arg1", targetNamespace = "")
String arg1,
@WebParam(name = "arg2", targetNamespace = "")
byte[] arg2,
@WebParam(name = "arg3", targetNamespace = "")
byte[] arg3);
updateWar 的调用非常长,因为通过它上传了一个 20MB 的数组。我们希望能够了解正在取得的进展,以便每 10% 的进展进行报告。
有没有办法 Hook 这个调用并知道它有多远?
最佳答案
This answer可能是你想要的。基本上,创建一个 Web 服务来分配进程 ID,开始上传(将进程 ID 作为输入参数,以及要上传的实际数据),然后创建另一个报告上传进度的 Web 服务(使用ID 作为输入参数)。
关于java - 在 Java 中报告 Web 服务调用进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3564533/