我如何在WAR中暴露两个具有相同路径的JAX-RS资源?

问题描述 投票:0回答:1

在WAR文件中,我添加了2个不同的JAR,其中有JAX-RS的资源,我添加了一个ResourceConfig子类来注册这两个JAR中的所有资源。我添加了一个ResourceConfig子类来注册这2个JAR中的所有资源,但是在这两个JAR中,有一个资源的名字是相同的。能否从ResourceConfig类的注册方法中改变路径名,或者用其他方法改变资源的路径并赋予其另一个名字?

我不能创建多个@ApplicaionPath。

@Path("product")
public class ProductApi(){
    ......
}

在JAR2中:

@Path("product")
public class ProductApi(){
    ......
}

在WAR中...

@ApplicationPath("api")
public class MainAPi extends ResourceConfig {
    packages(jar1.apis);
    packages(jar2.apis);
}

所以,冲突是与 ProductApi. 只有一个是有效的,因为它共享同一路径。/api/product

那么,如何从 MainApi 对不同的 ProductApi或者有什么其他方法可以在不修改JARs的情况下改变它?

jersey jax-rs
1个回答
0
投票

你可以尝试定义两个 ResourceConfig:

@ApplicationPath("api1")
public class MainApiOne extends ResourceConfig {
    packages(jar1.apis);
}

@ApplicationPath("api2")
public class MainApiTwo extends ResourceConfig {
    packages(jar2.apis);
}

所以 /api1/product 访问JAR 1中的资源,并且 /api2/product 访问JAR 2中的资源


0
投票

我发现了一个参考资料,来自 https:/eclipse-ee4j.github.iojersey.github.iodocumentationlatestuser-guide.html#d0e10848。

Resource jar1ProductApi = Resource.builder(Jar1.ProductApi.class).path("newpath/product").build();
registerResources(jar1ProductApi);

我把这个添加到主资源配置文件中,现在它通过新的URL路由(newpathproduct)调用。

© www.soinside.com 2019 - 2024. All rights reserved.