Again, strongly discourage the direct access to the server ThreadPool like that. Either use the AsyncContext or your own Executor/ThreadPool.
Your implementation has none of the safety measures that are built into the AsyncContext layer's use of the Server ThreadPool. Joakim Erdfelt / [email protected] On Wed, Nov 25, 2015 at 9:54 AM, Joakim Erdfelt <[email protected]> wrote: > 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
