java - 在 Java 中报告 Web 服务调用进度

标签 java web-services

我们有一个简单的 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/

相关文章:

java - 构造函数调用存储在哪里?堆栈还是堆?

java - hibernate.jdbc.time_zone = 忽略 UTC

web-services - 免费的 RESTful API 生成器比较

java - 在 Windows 机器上托管 java 网站

java - 有什么方法可以确保 "package-info.java"存在于每个包中(使用 Findbugs、Checkstyle 或 PMD)

java - 表格行之间的间隙太大

web-services - "already exist"的状态码

java - 网络服务 : How to store mal-formed XML in webservices?

web-services - 使用 Axis2 自定义故障代码

java - 在库中捆绑 log4j.properties - 糟糕的风格还是什么?