在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的情况下改变它?
你可以尝试定义两个 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中的资源
我发现了一个参考资料,来自 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)调用。