On Wed, Sep 11, 2019 at 6:57 PM Joakim Erdfelt <[email protected]> wrote:

> Can you change your implementation a bit so that we can understand what's
> going on?
>
> (the below code can be found at
> https://gist.github.com/joakime/ca3bf453cd946e47a8a09181ef3a0dd7 as well,
> and might be slightly more up to date)
>
> package jetty.http2;
>
> import java.io.IOException;
> import javax.servlet.ServletException;
> import javax.servlet.ServletRequest;
> import javax.servlet.ServletRequestWrapper;
> import javax.servlet.http.HttpServlet;
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
>
> import org.eclipse.jetty.server.PushBuilder;
> import org.eclipse.jetty.server.Request;
>
> public class Http2PushBuilderServlet extends HttpServlet
> {
>     @Override
>     protected void doGet(HttpServletRequest request, HttpServletResponse
> response) throws ServletException, IOException
>     {
>         dumpRequestDetail(request);
>         Request req = Request.getBaseRequest(request);
>         if (req != null)
>         {
>             System.out.printf("req: (%s) %s%n", req.getClass().getName(),
> req);
>             System.out.printf("req.isPushSupported() = %b%n",
> req.isPushSupported());
>             PushBuilder pushBuilder = req.getPushBuilder();
>             pushBuilder.path("/res").push();
>         }
>     }
>
>     private void dumpRequestDetail(HttpServletRequest request)
>     {
>         System.out.printf("HttpServletRequest is implemented by %s%n",
> request.getClass().getName());
>         System.out.printf("HttpServletRequest is instanceof Request =
> %b%n", request instanceof Request);
>
>         // some relevant virtual attributes
>         dumpAttribute(request, "org.eclipse.jetty.server.Server");
>         dumpAttribute(request, "org.eclipse.jetty.server.HttpChannel");
>         dumpAttribute(request, "org.eclipse.jetty.server.HttpConnection");
>
>         // the state of the wrapping of the request
>         if (request instanceof ServletRequestWrapper)
>         {
>             System.out.printf("  + is a HttpServletRequestWrapper%n");
>
>             ServletRequest servletRequest = request;
>
>             while (servletRequest instanceof ServletRequestWrapper)
>             {
>                 servletRequest =
> ((ServletRequestWrapper)servletRequest).getRequest();
>                 System.out.printf("  + Wrapped by %s%n",
> servletRequest.getClass().getName());
>             }
>             System.out.printf("Unwrapped ServletRequest is instanceof
> Request = %b%n", servletRequest instanceof Request);
>         }
>     }
>
>     private void dumpAttribute(HttpServletRequest request, String attrName)
>     {
>         System.out.printf(".getAttribute(%s) = ", attrName);
>         Object value = request.getAttribute(attrName);
>         if (value == null)
>         {
>             System.out.println("<null>");
>         }
>         else
>         {
>             System.out.printf("(%s) %s%n", value.getClass().getName(),
> value);
>         }
>     }
> }
>
The req is null, and the server output is the below,
HttpServletRequest is implemented by org.eclipse.jetty.server.Request
HttpServletRequest is instanceof Request = false
.getAttribute(org.eclipse.jetty.server.Server) =
(org.eclipse.jetty.server.Server) Server@16eb3ea3{STARTED}[9.4.20.v20190813]
.getAttribute(org.eclipse.jetty.server.HttpChannel) =
(org.eclipse.jetty.server.HttpChannelOverHttp) HttpChannelOverHttp@40ed3e95
{r=1,c=false,c=false/false,a=DISPATCHED,uri=//localhost:9020/test,age=22}
.getAttribute(org.eclipse.jetty.server.HttpConnection) =
(org.eclipse.jetty.server.HttpConnection) HttpConnection@48b3d482
::SocketChannelEndPoint@6e894f22
{/0:0:0:0:0:0:0:1:63409<->/0:0:0:0:0:0:0:1:9020,OPEN,fill=-,flush=-,to=31/30000}{io=0/0,kio=0,kro=1}->HttpConnection@48b3d482[p=HttpParser{s=END,0
of -1},g=HttpGenerator@4f7a01ad{s=START}]=>HttpChannelOverHttp@40ed3e95
{r=1,c=false,c=false/false,a=DISPATCHED,uri=//localhost:9020/test,age=25}
_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users

Reply via email to