DefaultServlet的问题

问题描述 投票:0回答:2

我在我的应用程序中嵌入了jetty服务器,并使用WebAppContext返回静态文件(.html,.png等)并存储servlet。当我尝试从浏览器获取静态时,我得到异常引起的503错误,但servlet工作正常。据我所知,从堆栈跟踪WebAppContext尝试使用DefaultServlet返回静态文件。我尝试将DefaultServlet设置为“/ *”路径,但仍然有异常。有没有其他方法可以通过WebAppContext返回静态文件而不使用DefaultServlet?

我尝试使用ResourceHandler而不是WebAppContext,它工作正常但忽略了jetty登录约束(还尝试使用WebAppContext打开并且没有约束并得到相同的错误)

例外:

2019-03-31 18:14:28.344:WARN:oejs.ServletHandler:qtp129498568-21: Error for /reg.html
java.lang.NoSuchMethodError: org.eclipse.jetty.http.HttpContent.getContentLength()J
    at org.eclipse.jetty.servlet.DefaultServlet.sendData(DefaultServlet.java:865)
    at org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:531)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:781)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1126)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1060)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
    at org.eclipse.jetty.server.Server.handle(Server.java:509)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:288)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:240)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:539)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:620)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:540)
    at java.base/java.lang.Thread.run(Thread.java:834)

码:

    Server server = new Server(8080);

    String htmlResourcesPath = "web";

    WebAppContext webAppContext = new WebAppContext();
    webAppContext.setContextPath("/");
    webAppContext.setResourceBase(htmlResourcesPath);
    webAppContext.setParentLoaderPriority(true);

    webAppContext.addServlet(RedirectServlet.class, "");
    webAppContext.addServlet(RegisterServlet.class, "/reg");
    webAppContext.addServlet(AuthServlet.class, "/auth");

    server.setHandler(webAppContext);
java servlets jetty
2个回答
0
投票

java.lang.NoSuchMethodError:org.eclipse.jetty.http.HttpContent.getContentLength()J

您有不匹配的Jetty JAR文件版本。

确保项目中只有1个版本的所有Jetty JAR文件。

如果你正在使用embedded-jetty然后你不会使用jetty-maven-plugin,所以选择一个或另一个,但不是两个。


0
投票

谢谢大家的帮助。只是说明:

我使用了2个码头版本:

<!--dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-server</artifactId>
    <version>9.3.0.M1</version>
</dependency-->

<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-webapp</artifactId>
    <version>9.3.0.M0</version>
</dependency>

我认为jetty-webapp补充了jetty-server,但它们是相互冲突的独立库

© www.soinside.com 2019 - 2024. All rights reserved.