Java tomcat ResourceConfig构造函数从未调用

时间:2018-07-24 16:47:46

标签: java rest tomcat jersey

我正在尝试使用java / tomcat设置RESTful api。

我使用start类来启动tomcat,并希望使用ResourceConfig类来注册资源。

我的入门班:

public class Start
{
  private static final String CONTEXT_PATH = "/backend";
  private static final String WEB_APP_LOCATION = "backend/src/main/webapp/";
  private static final String WEB_APP_MOUNT = "/WEB-INF/classes";
  private static final String WEB_APP_CLASSES = "backend/build/classes";

  public static void main( String[] args ) throws Exception
  {
    Tomcat tomcat = new Tomcat();
    tomcat.setPort( 8080 );
    String filepath = new File( WEB_APP_LOCATION ).getAbsolutePath();
    Context context = tomcat.addWebapp( CONTEXT_PATH, filepath);
    String pathToClasses = new File(WEB_APP_CLASSES).getAbsolutePath();
    WebResourceRoot resources = new StandardRoot(context);
    DirResourceSet dirResourceSet = new DirResourceSet(resources, WEB_APP_MOUNT, pathToClasses, "/");

    resources.addPreResources( dirResourceSet );
    context.setResources(resources);
    String ip;
    try(final DatagramSocket socket = new DatagramSocket()){
      socket.connect(InetAddress.getByName("8.8.8.8"), 10002);
      ip = socket.getLocalAddress().getHostAddress();
    }


    System.out.println("starting server at " + ip);
    tomcat.start();
    System.out.println("server started");
    tomcat.getServer().await();
  }
}

我的Application.java:

@ApplicationPath("services")
public class Application extends ResourceConfig {
  public Application(){
    super();
    System.out.println("registering classes...");
    registerClasses(TestResource.class);
  }
}

我的测试资源:

@Path("/test")
public class TestResource
{
  @GET
  @Produces("text/plain")
  public String getMessage(){
    return "Hello World";
  }
}

使用main方法启动程序时,服务器将启动并正确绑定到端口,因此转到localhost:8080会出现预期的404错误。

但是,没有输出表明应用程序已初始化,并且当尝试转到localhost:8080 / backend / services / test时,我不应该获取404错误。

WEB_APP_LOCATION和WEB_APP_CLASSES指向相对于工作目录的正确位置。

如有需要,我可以提供其他信息。

0 个答案:

没有答案