Java JAX-RS是否将实例注册为端点?

Java JAX-RS是否将实例注册为端点?,java,rest,jersey,jax-rs,jersey-1.0,Java,Rest,Jersey,Jax Rs,Jersey 1.0,我有一个与此类似的rest端点类: @Path("/users") public class Users { private final Database database; public Users(Database database) { this.database = database; } @GET @Path("/{id}") public Response Get(@PathP

我有一个与此类似的rest端点类:

@Path("/users")
public class Users {
    private final Database database;

    public Users(Database database) {
        this.database = database;
    }

    @GET
    @Path("/{id}")
    public Response Get(@PathParam("id") int id) {
        User user = this.database.get(id);
        return Response.ok(user).build();
    }
}
主要方法是:

public class Main {
    public static void main(String[] args) {
        Database database = new SomeDBImplementation();
        Users users = new Users(database);
        
        HttpServer server = HttpServerFactory.create("http://localhost:8080");
        server.start();
    }
}
如何使服务器将users实例用作端点?我正在使用jersey server

您需要创建一个实例,然后将其传递给该方法。
ResourceConfig
有不同的实现。最基本的一个是。要注册资源实例,只需执行以下操作

ResourceConfig=newdefaultresourceconfig();
config.getRootResourceSingleton().add(用户);
HttpServer server=HttpServerFactory.create(uri,config);

这很有意义,尽管我得到的是“ResourceConfig实例不包含任何根资源类”。一旦我找到一个解决方案,我会把它设置为一个答案,就像它是一个不可修改的集合一样。显然jersey server有不同的版本,显然我也需要使用jetty之类的东西,整个事情都是一团糟。我唯一的猜测是
getexplicitrotresources().put(“users”,users)
。如果您发布所有依赖项,可能会有所帮助。也许还有其他事情阻碍了注册。我放弃lol…如果你正在开始一个新项目(或只是学习),我建议使用Jersey 2.x甚至3.x。