>
> HttpServletRequest is implemented by org.eclipse.jetty.server.Request
> HttpServletRequest is instanceof Request = false


What jetty jars do you have in your WEB-INF/lib ?

Joakim Erdfelt / joa...@webtide.com


On Wed, Sep 11, 2019 at 8:24 AM John Jiang <john.sha.ji...@gmail.com> wrote:

> On Wed, Sep 11, 2019 at 6:57 PM Joakim Erdfelt <joa...@webtide.com> 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
> jetty-users@eclipse.org
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
jetty-users@eclipse.org
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