JAXRS 包括抽象方法作为请求的候选者

JAXRS includes abstract method as candidate for request

在我使用 tomee、openejb 和 jackson 的 web 项目中(除了其他一些东西,如 hibernate,下面列出了最重要的依赖项)我遇到了一个我无法解决的问题。

结构如下:

public abstract class AbstractCrud<E extends AbstractEntity>{
 [...]
   public abstract ResultWrapper<E> create (E entity);
 [...]
}

@Path("/path")
@Consumes("application/json")
@Produces("application/json")
public class ImplementingClass extends AbstractCrud<ImplementingEntity>{
    @PUT
    @Override
    public ResultWrapper<ImplementingEntity> create(final ImplementingEntity entity){
      //Some Code
    }
}

我收到此警告:Both package.ImplementingClass#create and package.ImplementingClass#create are equal candidates for handling the current request which can lead to unpredictable results

随后出现此异常:

Cannot construct instance of `package.AbstractEntity` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
 at [...]


我最好的猜测是注释扫描器不会过滤桥接方法,因此使用了使用抽象 class 的方法(当然)无法实例化。我搜索了如何从扫描器中排除方法(或完成 classes)但没有找到任何东西。
所以我的问题是:我可以从扫描器中排除 classes 或方法吗?如果不能,我还能做些什么来防止这种情况发生?


依赖项(使用 Java 8):

所有这些都应该是最新版本。

这种情况下的问题是该方法是泛型的,java编译器生成一个合成方法,所以当cxf在你的class上调用getMethod时,它会看到两个'create' 方法,一个是合成的,但无论如何,该资源方法将被注册两次。

这是 CXF 中的错误。 CXF-7670