Skip to main content

Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Newcomers » Newcomers » How to read Jetty HttpInput multiple times
How to read Jetty HttpInput multiple times [message #1831164] Wed, 12 August 2020 18:40 Go to next message
Yohanes Jati Pamungkas is currently offline Yohanes Jati PamungkasFriend
Messages: 1
Registered: August 2020
Junior Member
Currently im developing a REST API using RestEasy and Jetty. One of my plan with this REST API is to create a hook plugin to do anything needed with the incoming request utilizing JAX-RS ContainerRequestFilter . The thing with ContainerRequestPlugin in Jetty here is that once I called requestContext.getEntityStream(); in the Filter then the request wont be able to be read again by my EndPoint Class even if I have set the Entity Stream again.

Following are my Filter code

public class DummyRequestFilter implements ContainerRequestFilter{
    static Logger log = Logger.getLogger(DummyRequestFilter .class.getName());
    private HttpServletRequest servletRequest;
    public void filter(ContainerRequestContext requestContext) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
    String requestBody = "";
    try {           
        IOUtils.copy(requestContext.getEntityStream(), baos);
        InputStream is1 = new ByteArrayInputStream(baos.toByteArray());
        InputStream is2 = new ByteArrayInputStream(baos.toByteArray());
        requestBody = IOUtils.toString(is1);
    }catch (Exception e) {
        log.log(Level.SEVERE,"Exception Occurred",e);

Then here is my endpoint class

public class DummyService {
    Logger log = Logger.getLogger(DummyService .class.getName());
    public Response test(@FormParam("name") String name) {"Name = "+name);

        return Response.status(200).build();

Whenever I called this test method I can see the name sent in Filter class but in the Endpoint class name is null.

Later then I figured out that the getEntityStream returned from requestContext is Jetty custom ServletInputStream that is org.eclipse.jetty.server.HttpInput. I believe the request cannot be read in EndPoint since I set the Entity Stream using ByteArrayInputStream.

So my question will be, is there any way to build/convert Jetty HttpInput using generic InputStream implementation? or is there any other way to work around this case? where I can read Jetty HttpInput many times?

Thanks & Regards
Re: How to read Jetty HttpInput multiple times [message #1831274 is a reply to message #1831164] Sun, 16 August 2020 06:46 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 31710
Registered: July 2009
Senior Member
It's probably better to look at this page for the best place to ask questions specifically about Jetty:

Ed Merks
Professional Support:
Previous Topic:Kotlin plus operator
Next Topic:Configuration Error
Goto Forum:

Current Time: Mon Jan 25 01:07:18 GMT 2021

Powered by FUDForum. Page generated in 0.03289 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top