0

我的问题很简单,我有一个具有以下 JAXRS 定义的通用父类

@POST
@Restricted(permissions = {"*_create"})
public Response save(T entity) throws Exception {

我创建了一个具有泛型参数类型的特定子类TAccess它具有以下声明:

@POST
@Restricted(permissions = {"*_create"})
@Consumes({"application/x-www-form-urlencoded", "application/json", "application/xml"})
public Response save(final Access newAccess, @HeaderParam("Authorization") String token, @Context HttpServletRequest request) throws Exception {

我的问题是 Resteasy 显然有一个随机行为,该行为是在战争启动时设置的,它将在应用程序生命周期内保持。有时它将传入的 POST 请求与父保存方法相关联,有时与子保存方法相关联。我的目标是让孩子被系统地使用,但我想避免更改我的父类,因为我的项目中的许多资源定义类都毫无问题地依赖它(并且不要覆盖例如 save 方法)。有没有一种简单的(比如resteasy)方法来解决这个问题?

4

1 回答 1

0

至于现在我找到的解决方案是覆盖public Response save(T entity) throws Exception子类中的父方法签名,除了@Override. 方法定义包含一个throw new UnsupportedOperationException();.

@Override
public Response save(Access entity) throws Exception {
    throw new UnsupportedOperationException();
}

这使得在这个子类中选择另一个带有 jaxrs 注释的保存声明,没有歧义。

于 2012-05-15T11:54:12.057 回答