【问题标题】:Does web service implemented through jax ws is multi threaded通过jax ws实现的web服务是多线程的吗
【发布时间】:2012-03-10 05:17:57
【问题描述】:

我使用 spring、cxf 和 jax ws 实现编写了一个 Web 服务,并且我有一个关于 WS 的基本问题。 Web 服务端点如何处理并发请求?它是否为类似于 servlet 的每个请求创建一个新线程,或者它是一个单线程模型?由于我们预计每个 Web 服务的容量都很大,所以将 WSDL 滑入多个 WSDL 以具有不同的端点有什么不同吗?

【问题讨论】:

    标签: multithreading web-services jax-ws cxf


    【解决方案1】:

    当然,Web 服务由 Web 服务器托管(例如 Glassfish),当同时接收多个请求时,它是多线程的。

    【讨论】:

      【解决方案2】:

      从您的客户端和您的服务的角度来看,没有“多线程”这样的东西。您的客户端调用请求并获得响应(可能是故障响应)。您的服务器收到一个请求,并为该请求提供服务。期间。

      如何分派请求是一个实现细节。

      WSDL 只是一个“合同”。服务“发布”它支持的操作以及它与 WSDL 一起使用的数据类型;客户端相应地打包和解包他的请求和响应 SOAP 消息。但是 WSDL 在任何给定的 Web 服务调用中都没有直接作用。

      【讨论】:

      • 感谢您的回复。您提到了服务器接收器请求并返回响应。端点在这里为响应提供什么作用。它如何处理并发请求。
      • Web 服务端点的情况与 JSP servlet ... 或任何其他 Web 请求/响应完全相同。从您的服务的角度来看,您不知道也不关心侦听器是否将您的请求分派到一个新线程、一个新进程或一个全新的 JVM。或者,如果它只是阻塞。从您的角度来看,没有“多线程”。然而,从服务器的 角度来看:是的——它可能会创建一个新线程。具体细节会因服务器而异(例如,Tomcat、JBoss、WebSphere 和 WebLogic - 它们可能都以不同的方式实现它们的调度程序)。
      • @paulsm4 如果您能分享一个参考链接来支持您在此处分享的信息,我将不胜感激。 .我一直在寻找显示 Web 服务生命周期的东西(就像您可以在 Oracle JEE5 教程中轻松找到无状态会话 bean 生命周期)但找不到任何东西......
      【解决方案3】:

      虽然晚了,但可能会有所帮助。

      Endpoint.publish(Url, ServiceImplObj) 在给定的 url 发布 web 服务。没有。分配给请求处理的线程确实在 jvm 的控制之下,因为这是一个由 jvm 自己处理的轻量级部署。

      为了更清楚,您可以在服务端打印当前线程名称,您可以看到服务线程是从 jvm 管理的线程池分配的。

      [pool-1-thread-1]: Response[57]:
      [pool-1-thread-5]: Response[58]:
      [pool-1-thread-4]: Response[59]:
      [pool-1-thread-3]: Response[60]:
      [pool-1-thread-6]: Response[61]:
      [pool-1-thread-6]: Response[62]:
      

      这是我在 jdk 1.6.0_35 上试过的。

      xjc-版本 xjc 版本“JDK 6 中的 JAXB 2.1.10” JavaTM Architecture for XML Binding (JAXB) 参考实现,(构建 JAXB JDK 6 中的 2.1.10)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多