使用jetty和jersey的Restful web服务返回404

使用jetty和jersey的Restful web服务返回404,rest,embedded-jetty,jersey-2.0,Rest,Embedded Jetty,Jersey 2.0,我在使用嵌入式jetty和jersey的restful web服务时遇到问题。我从一个ecplise应用程序内部启动jetty服务器,并尝试使用jersey客户端与服务器通信 我基于本教程构建了restful web服务: 我在将教程从Jersey 1.x迁移到2.x时遇到了一些问题,但最终我启动并运行了web服务器。现在,问题是它不响应来自客户端或浏览器的请求。有人知道为什么吗 这是我的密码: 提供程序包: 客户: 我得到的结果是: 试试这个改变 发件人: 致: 这就是你的链接到文章使用它的方

我在使用嵌入式jetty和jersey的restful web服务时遇到问题。我从一个ecplise应用程序内部启动jetty服务器,并尝试使用jersey客户端与服务器通信

我基于本教程构建了restful web服务:

我在将教程从Jersey 1.x迁移到2.x时遇到了一些问题,但最终我启动并运行了web服务器。现在,问题是它不响应来自客户端或浏览器的请求。有人知道为什么吗

这是我的密码:

提供程序包:

客户:

我得到的结果是:

试试这个改变

发件人:

致:


这就是你的链接到文章使用它的方式。

我在这一部分也挣扎了两天,发现根本原因在于ServletContextHandler的懒散初始化。一旦启动jetty服务器,就启动contexthandler。它可以正常工作。

我应该提到我正在使用Jetty 9.2.0.RCO和JavaSE-1.7以及Jersey 2.12。如果有帮助的话:+=org.eclipse.Jetty.servlet。ServletHandler@14efd00-STARTED+=org.glassfish.jersey.servlet.ServletContainer-1b05ad2@3c64e64b==org.glassfish.jersey.servlet.ServletContainer,1,true-STARTED+-jersey.config.server.provider.packages=org.eclipse.eatop.jetty.helloworld.rest+-[/*]=>org.glassfish.jersey.servlet.ServletContainer-1b05ad2+=org.eclipse.jetty.servlet.ServletHandler$Default404Servlet-980200@76a611b5==org.eclipse.jetty.servlet.ServletHandler$Default404Servlet,-1,false-start+-[/]=>org.eclipse.jetty.servlet.ServletHandler$Default404Servlet-980200
package org.eclipse.eatop.jetty.helloworld.rest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType; 


@Path("/xmlServices")
public class XMLProjectService {
  @GET     
  @Produces(MediaType.TEXT_XML)     
  public String getProject() 
  {         
      return "<?xml version=\"1.0\"?>" + "<hello> hello world </hello>" ;     
  }
}
public Object execute(ExecutionEvent event) throws ExecutionException {
    Server server = new Server(8080);         
    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
    context.setContextPath("/");
    server.setHandler(context);
    ServletHolder sh = new ServletHolder(new ServletContainer());
    sh.setInitOrder(1);
    sh.setInitParameter(ServerProperties.PROVIDER_PACKAGES, "org.eclipse.eatop.jetty.helloworld.rest");
    context.addServlet(sh, "/*");

    try {
        server.start();
    } catch (Exception e) {
   System.out.println("Unable to start jetty web server");
   e.printStackTrace();
    }   
    return null;
}
public class Test {
    public static void main(String[] args) {
        Client client = ClientBuilder.newClient();
        WebTarget target = client.target(getBaseURI()).path("xmlServices");
        System.out.println(target.request("text/xml").get());
    }
    private static URI getBaseURI() {
        return UriBuilder.fromUri("http://localhost:8080/").build();
    }
}
 InboundJaxrsResponse{ClientResponse{method=GET, uri="http://localhost:8080/xmlServices", status=404, reason=Not Found}}
ServletHolder sh = new ServletHolder(new ServletContainer());
ServletHolder sh = new ServletHolder(ServletContainer.class);