【问题标题】:Reporting on web service call progress in Java在 Java 中报告 Web 服务调用进度
【发布时间】:2010-08-25 09:38:55
【问题描述】:

我们有一个简单的 Web 服务客户端调用者 UpdaterService(自动生成的,扩展了 javax.xml.ws.Service)。该类有一个 getUpdaterPort 函数,它包装了 super 的 getPort 函数(这也是标准的)。

调用getUpdaterPort的返回值是一个Updater接口:

/** * 此类由 JAX-WS RI 生成。 * JAX-WS RI 2.1.7-hudson-48- * 生成源版本:2.1 * */ @WebService(name = "更新者", targetNamespace = "http://updater.glassfish.com/") @XmlSeeAlso({ 对象工厂类 }) 公共接口更新程序 {

/**
 * 
 * @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% 的进展。

有没有办法让我们挂钩这个调用并知道它有多远?

【问题讨论】:

    标签: java web-services


    【解决方案1】:

    This answer 可能是你想要的。基本上,创建一个 Web 服务来分配一个进程 ID,开始上传(使用进程 ID 作为输入参数,以及要上传的实际数据),然后创建另一个报告上传进度的 Web 服务(使用ID 作为输入参数)。

    【讨论】:

    • 这一切都很好而且花花公子,但这是如何实现的?在 JavaEE 中,没有(合法的)方法可以使用,例如启动一个线程并自己安排它。维护 ID 的注册表在哪里/是什么? JNDI?数据库?
    • 有人指向msdn.microsoft.com/en-us/library/aa480520.aspx,这正是我们试图为 Java 实现的目标,但我们不知道如何将这些机制挂钩。
    猜你喜欢
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多