从外部jar部署servlet时Jetty 6.x中的NullPointerException

时间:2014-02-01 01:46:46

标签: java nullpointerexception jetty

当我尝试使用嵌入式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问题吗?

1 个答案:

答案 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>