Java 泽西条件路径

Java 泽西条件路径,java,jersey,Java,Jersey,我有一个场景,我们支持两种不同类型的经过身份验证的用户(UserTypeA、UserTypeB),但它们永远不会在同一个服务器环境中使用。现在,我们使用两种不同的url路径/path/usertypea/listvs/path/usertypeb/list。如果可能,我们希望让他们使用相同的路径,例如/path/list,并使用环境变量作为条件,以了解将流量路由到何处。每个用户类型的参数并不完全相同,在数据的组织方式上存在一些差异。我们用的是球衣 我尝试了一些类似Singleton类的方法,但它

我有一个场景,我们支持两种不同类型的经过身份验证的用户(UserTypeA、UserTypeB),但它们永远不会在同一个服务器环境中使用。现在,我们使用两种不同的url路径
/path/usertypea/list
vs
/path/usertypeb/list
。如果可能,我们希望让他们使用相同的路径,例如
/path/list
,并使用环境变量作为条件,以了解将流量路由到何处。每个用户类型的参数并不完全相同,在数据的组织方式上存在一些差异。我们用的是球衣

我尝试了一些类似Singleton类的方法,但它从不路由值,它只返回类的名称,而不是我期望的JSON负载

下面是一些代码:

@Path("/list")
public class GlobalSegmentServiceRouter {
    @GET
    @Produces("application/json")
    public Class<?> findAll() {
        boolean isUserTypeA = false;
        if (isUserTypeA) {
            return UserTypeAService.class;
        } else {
            return UserTypeBService.class;
        }
    }
}

关于如何实现这一点有什么建议吗?

添加一些标志,用于检查哪种类型的用户登录到自定义主体impl。然后可以注入当前用户,然后在方法中调用
UserTypeAService.findAll
UserTypeBService.findAll

@GET
@Path("/path/list")
public String yourMethod(@Context SecurityContext securityContext)

尽管您提到您尝试的方法不起作用,但如果您可以发布该方法的代码示例,那么这将有助于解决您的问题。也许您的解决方案很接近,但只需要一些调整。完成!抱歉,一开始就应该这样做。没问题,您发布了很好的示例,这些示例使您的问题更加清晰。如果每个用户类型的参数相同,这将是一个非常好的选择。但是参数列表有点不同。有没有一个好办法来处理这个问题?很抱歉,这里是新泽西州。您可以使用post请求并在pojo中传递参数,其中包含可选字段或映射。或者使用可选的查询参数。。。
@Singleton
public class UserTypeBService {
    public List<String> findAll(/*Parameters for B*/) {
        // Do work here for User Type B
    }
}
"com.test.services.UserTypeAService"
@GET
@Path("/path/list")
public String yourMethod(@Context SecurityContext securityContext)