Long Polling with Java and JBoss

前端 未结 2 1524
渐次进展
渐次进展 2021-01-14 15:51

I\'m looking for an example, how to implement a longpoling mechanism in java. I would love to use a stateless EJB.

I know that something like that would work:

<
相关标签:
2条回答
  • 2021-01-14 16:36

    JAX-WS provides support for invoking Web services using an asynchronous client invocation and supports both a callback and polling model. Have a look at:

    • Asynchronous Web Service Invocation with JAX-WS 2.0
    • Using the JAX-WS asynchronous programming model
      • In particular, the Polling Example
    0 讨论(0)
  • 2021-01-14 16:45

    The thing you're trying to implement is called server push. Each webserver/appserver has a pool of threads, say 10 threads for processing web requests, if all those threads will go into 'sleep' no other web request will be serviced until one of those 'sleeps' exists. Some solution is to increase number of those threads but then you'll eat more memory and more operating system resources (each thread costs). So yes, your implementation of 'server push' isn't scalable.

    Solutions:

    • your web application can send a http request every (say) 5 secs, to check if your 'someCondition' changed, and then get the data
    • AFAIK, Tomcat (so JBoss too) already has some 'connector' for supporting such requests, so Thread.sleep() or semaphores won't be needed
    • use latest web server implementing Servlet API 3, it also has support for such long-running HTTP requests
    • read more: Online tutorials for implementing comets (server push)
    0 讨论(0)
提交回复
热议问题