有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将Grizzly/Jersey转换为Payara

因此,我们使用Grizzly/Jersey构建了一个Web应用程序。您运行生成的jar文件,然后它提供REST端点,允许从数据库中提取数据并创建新条目,等等。出于这样或那样的原因,我们现在希望迁移到Web服务器,如Payara或Glassfish等。我很难让它工作。现在,它被编译成一场战争,并部署到帕亚拉。在Deploying jersey web services on Payara 4 doesn´t expose methods之后,我至少要承认存在端点。然而,它们依赖于注入的EntityManager,我们在ResourceConfig子类中定义/绑定该EntityManager(及其依赖项),该子类未加载,因此崩溃。有人知道如何加载ResourceConfig吗?还有,为了让它正常工作还需要做些什么


共 (1) 个答案

  1. # 1 楼答案

    如果你想从你的链接帖子中找到答案

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

    这可以解释你所看到的行为。用@ApplicationPath注释的空Application将导致Jersey引导程序扫描类路径中的@Path@Provider类,并注册这些类

    但是您正在使用ResourceConfig自己完成所有注册。恰好ResourceConfig实际上是Application的一个子类。因此,不要创建一个新的Application子类来放置@ApplicationPath注释,只需放置ResourceConfig子类即可

    如果您以前没有子类化ResourceConfig,例如

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

    那么现在就对它进行子类化

    @ApplicationPath("...")
    public class AppConfig extends ResourceConfig {
        public AppConfig() {
            packages("...");
            register(...);
        }
    }