嵌入式Jetty 9不适用于@Webservlet

时间:2020-09-09 16:24:50

标签: java embedded-jetty

我在我的javaEE应用程序中使用的是Java 11和嵌入式jetty 9,我正在尝试使用@Websevlet注释来发布我的servlet,但是它不起作用,我不知道为什么。 我的入门班java

import org.eclipse.jetty.annotations.AnnotationConfiguration;

import org.eclipse.jetty.server.Server;

import org.eclipse.jetty.webapp.*;

public class Start  {

    public static  void main(String[] args) throws Exception {
        Server server = new Server(80);

        WebAppContext wacHandler = new WebAppContext();
        wacHandler.setConfigurations(new Configuration[]
                {
                        new AnnotationConfiguration(),
                        new WebInfConfiguration(),
                        new WebXmlConfiguration(),
                        new MetaInfConfiguration(),
                        new FragmentConfiguration(),
                        new JettyWebXmlConfiguration()
                });
        server.setHandler(wacHandler);

        server.start();
        server.join();
    }
}

我的世界一流你好

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet( "/getservlet")
public class ServletX extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
      
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<h1>Hi there..</h1>");
    }

}

我没有web.xml配置,应该吗?

1 个答案:

答案 0 :(得分:0)

如果ServletX在war文件中,这意味着它在WEB-INF/classes/存档目录中,那么您声明的配置(特别是AnnotationConfiguration)将对WAR文件执行字节码扫描并加载@WebServlet批注。

还请注意,WebAppContext将需要指向此WAR文件,而您的代码示例不会这样做。

WebAppContext wacHandler = new WebAppContext();
waxHandler.setWar("/path/to/myapp.war");
// ... more setup

但是!如果ServletX不在WAR文件中,而是包含在嵌入式码头Start类中,则需要公开要通过字节码扫描步骤扫描的servlet容器。 / p>

您始终可以打开命名记录器org.eclipse.jetty的DEBUG / FINE级别日志记录,并查看有关部署和字节码扫描的活动。

相关问题