当我尝试使用嵌入式Jetty 6.x服务器的JMinix servlet时,我得到以下NullPointerException:
[ERROR ]:[2014-01-31 14:31:19,194]:[684929885@qtp-1937268239-2 - /jmx]:[mortbay.log]:/jmx
java.lang.NullPointerException
at org.mortbay.jetty.servlet.ServletHolder.makeUnavailable(ServletHolder.java:414)
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:458)
at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401)
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:322)
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.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
最初我怀疑是JMinix,但是它可以与其他容器一起使用。
项目中的一个简单servlet可以工作。这是Jetty问题吗?
答案 0 :(得分:1)
出于好奇,我从另一个jar文件中部署了另一个servlet。这导致了同样的例外。事实证明这是6.x版Jetty中的一个错误。
我改为Jetty 9.1(现在是Eclipse项目,不再是org.mortbay),问题就消失了。这是pom.xml的片段
必须添加jetty-server和jetty-servlet依赖项。
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.1.1.v20140108</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>9.1.1.v20140108</version>
</dependency>