Jakarta ee 如何部署web应用程序?

Jakarta ee 如何部署web应用程序?,jakarta-ee,tomcat,jetty,java-ee-6,Jakarta Ee,Tomcat,Jetty,Java Ee 6,根据文档中的Quickstart部分,somewar.war文件处于默认配置中,部署为localhost:8080/somewar/ 据我所知,我所要做的就是: package de.swt1321.servlet; import java.io.OutputStream; import java.io.IOException; import javax.servlet.annotation.WebServlet; import javax.servlet.ServletException;

根据文档中的Quickstart部分,somewar.war文件处于默认配置中,部署为localhost:8080/somewar/

据我所知,我所要做的就是:

package de.swt1321.servlet;

import java.io.OutputStream;
import java.io.IOException;

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

@WebServlet(urlPatterns={"/","/index.html"}, loadOnStartup=1)
public class ServletTest extends HttpServlet {
    private static final java.nio.charset.Charset UTF8 = java.nio.charset.Charset.forName("UTF8");

    @Override
    protected void doGet(HttpServletRequest req,
                          HttpServletResponse res) throws ServletException, IOException
    {
        byte[] HTML = "<html><head><title>Hello World!</title></head><body><h1>IT WORKED!</h1></body></html>".getBytes(UTF8);
        res.setStatus(HttpServletResponse.SC_OK);
        res.setHeader("content-type","text/html;charset=utf8");
        res.setIntHeader("content-length",HTML.length);
        OutputStream os = res.getOutputStream();
        os.write(HTML);
        os.flush();
    }
}
把它放到webapps文件夹中,我希望从我的回复中得到html。相反,我得到了一个包含两个链接的页面,称为META-INF和WEB-INF,这两个链接导致404个页面

恐怕我错过了一些我应该在这里做的事情,不幸的是,我在网上能找到的只是一些代码片段,它们直接跳到“现在就把整个东西打包成一个web应用程序…”而jetty文档似乎认为我已经知道web应用程序的样子(而且似乎最关心的是各种配置选项,如果我真的要让这该死的东西在第一时间工作的话,我实际上可能会对这些选项大惊小怪)

我应该怎么做才能让它工作

编辑


更改了标题,因为当我最初使用Jetty 9进行测试时,它也不适用于Tomcat 7,基本上存在相同的问题-显然应用程序已被识别(显示在管理器中),但servlet似乎不起作用(如果它被使用的话).jetty-8和jetty-9支持servlet 3.0,但您必须确保在start.ini中启用注释扫描,编辑该文件,将“注释”添加到选项行并取消对jetty-annotations.xml行的注释

另外,您似乎在战争中丢失了一个web.xml文件

我们似乎得到了一个相当多的问题,所以我将了解默认情况下启用注释的情况,尽管它们使启动时间比需要的时间长得多,因为大多数人都不关心它们,所以为什么要惩罚每个人呢?我们会考虑一下


[编辑]我认为,如果您刚开始学习注释背后的细节,例如如何在web中配置servlet.xml…注释只是servlet api之上的一点魔力

我认为jetty还没有实现servlet 3.0(您使用的注释就是其中的一部分),如果我没有弄错的话,这项功能是为jetty 8设计的。因此,这项功能是否有效非常值得怀疑。日志文件中有有用的信息吗?@fvu除非jetty对我撒谎,否则我使用的是jetty 9。哦,日志/文件中没有真实的信息,除了我的请求几乎都是404(谢谢jetty,但我已经知道了)谢谢你,也很抱歉在邮件列表上打扰你-我只是在尽可能多的地方询问,因为我有点沮丧
ServletTest.war:
META-INF -> MANIFEST.MF
WEB-INF -> 
  classes -> 
          de ->
             swt1321 ->
                  servlet->
                      ServletTest.class
  lib -> javaee-web-api-6.0.jar