简体   繁体   English

null HttpServletRequest

[英]null HttpServletRequest

I'm playing with swagger on Spring MVC, running local jetty and for some reason am getting a null HttpServletRequest, which is strange to say the least. 我正在玩Spring MVC上的招摇,运行本地码头,并且由于某种原因我得到了一个空的HttpServletRequest,这至少可以说是奇怪的。

Here is the full stack trace: 这是完整的堆栈跟踪:

java.lang.IllegalArgumentException: HttpServletRequest must not be null
    at org.springframework.util.Assert.notNull(Assert.java:115)
    at org.springframework.http.server.ServletServerHttpRequest.<init>(ServletServerHttpRequest.java:72)
    at org.springframework.web.servlet.support.ServletUriComponentsBuilder.initFromRequest(ServletUriComponentsBuilder.java:120)
    at org.springframework.web.servlet.support.ServletUriComponentsBuilder.fromContextPath(ServletUriComponentsBuilder.java:74)
    at org.springframework.web.servlet.support.ServletUriComponentsBuilder.fromServletMapping(ServletUriComponentsBuilder.java:88)
    at springfox.documentation.swagger2.web.HostNameProvider.componentsFrom(HostNameProvider.java:35)
    at springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(Swagger2Controller.java:84)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
    at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

Why would I get a null HttpServletRequest in this case? 在这种情况下,为什么我会得到一个null HttpServletRequest? I'm just sending a simple request via a browser, nothing fancy. 我只是通过浏览器发送一个简单的请求,没什么特别的。

EDIT 1 I've since tried using the maven cargo plugin, with embedded jetty, and it seems to work. 编辑1我已经尝试使用maven货物插件,嵌入式码头,它似乎工作。 I still have no idea why the jetty plugin on it's own is having this error. 我仍然不知道为什么它自己的jetty插件有这个错误。 This is the version being used for the record: 这是用于记录的版本:

        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <version>6.1.26</version>

Ok, so the problem was the version of jetty that I was using (6.1.26). 好吧,问题是我正在使用的码头版本(6.1.26)。 Updating to 9.3.10.v20160621 or using the cargo plugin with 8+ embedded jetty solved this for me. 更新到9.3.10.v20160621或使用带有8+嵌入式码头的货物插件解决了这个问题。 I'm not sure exactly why this was the problem though. 我不确定为什么这是问题所在。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM