Wouldn't this work?

https://java.net/projects/jax-rs-spec/pages/AsyncServerProcessingModel/revisions/22

Joakim Erdfelt / [email protected]

On Wed, Nov 25, 2015 at 8:50 AM, Thomas Meyer <[email protected]> wrote:

> Am 25.11.2015 4:26 nachm. schrieb Joakim Erdfelt <[email protected]>:
> >
> > Manage your own ThreadPool, or use the Servlet AsyncContext features for
> async processing of individual requests.
>
> Hi,
>
> Sadly in JAX-RS you don't have access to AsyncContext, here is my
> solution. I had to use reflection because of classloader issues...
>
> Path("res")
> public class TestResource {
>
>         private Logger log;
>
>         public TestResource() {
>                 log = Logger.getLogger(TestResource.class.getName());
>         }
>
>         @GET
>         public void getResourceData(@Suspended AsyncResponse ar, @Context
> ServletContext sc) throws NoSuchMethodException, SecurityException,
> IllegalAccessException, IllegalArgumentException, InvocationTargetException
> {
>                 log.log(Level.INFO, "In thread {0}",
> Thread.currentThread());
>
>                 Method methodGetContextHandler =
> sc.getClass().getMethod("getContextHandler");
>                 Object contextHandler = methodGetContextHandler.invoke(sc,
> null);
>                 Method methodGetServer =
> contextHandler.getClass().getMethod("getServer");
>                 Object server = methodGetServer.invoke(contextHandler,
> null);
>                 Method methodGetThreadpool =
> server.getClass().getMethod("getThreadPool");
>                 Executor threadPool = (Executor)
> methodGetThreadpool.invoke(server, null);
>
>                 Runnable run = new Runnable() {
>                         @Override
>                         public void run() {
>                                 Logger log = Logger.getAnonymousLogger();
>                                 log.log(Level.INFO, "In thread {0}",
> Thread.currentThread());
>                                 ar.resume("it works!");
>                         }
>                 };
>                 threadPool.execute(run);
>         }
> }
>
> The JPA context has a warp() function, it would be cool if ServletContext
> could have something similar: sc.wrap(Server.class) to get the underlying
> server class.
>
> > Joakim Erdfelt / [email protected]
> _______________________________________________
> jetty-users mailing list
> [email protected]
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/jetty-users
>
_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to