0

因此,我们使用 Grizzly/Jersey 构建了一个 webapp。您运行生成的 jar 文件,然后它提供 REST 端点,允许从数据库中提取数据并创建新条目等。出于某种原因,我们现在想要迁移到 Web 服务器,例如 Payara 或 Glassfish 之类的。我很难让它工作。它现在编译为战争,并被部署到 Payara。在Payara 4 上部署 jersey web 服务不公开方法之后,我得到它至少承认有端点。但是,它们依赖于注入的 EntityManager,我们在 ResourceConfig 子类中定义/绑定(连同它的依赖项),它没有被加载,所以它崩溃了。有人知道如何加载 ResourceConfig 吗?还,

4

1 回答 1

0

如果您要从链接的帖子中获得答案

@javax.ws.rs.ApplicationPath("API_PATH_FOR_JAXRS")
public class SampleApplication extends Application {

}

这将解释您所看到的行为。Application带有注释的空@ApplicationPath将导致 Jersey 引导程序扫描类路径以查找@Path@Provider类,并注册这些类。

但是您正在使用 aResourceConfig自己完成所有注册。它只是碰巧ResourceConfig实际上是Application. 因此,与其创建一个新的Application子类来放置@ApplicationPath注释,不如把它放在你的ResourceConfig子类上。

如果您之前没有进行子类ResourceConfig化,例如

ResourceConfig config = new ResourceConfig()
    .packages("...")
    .register(...);

然后现在就对其进行子类化

@ApplicationPath("...")
public class AppConfig extends ResourceConfig {
    public AppConfig() {
        packages("...");
        register(...);
    }
}
于 2017-01-22T04:52:42.517 回答