泽西岛“找不到合适的构造函数”作为子资源

问题描述

此jax-rs api在CXF上运行正常,但需要移至Jersey,现在遇到此问题。

我有一个根“ CasesResource”和一个子资源“ CaseResource”(例如“ / cases / 1234abc”)。子资源“ CaseResource”由CaseResource传入的参数构造。在应用程序类的getClasses方法中仅添加CasesResource。

@Path("cases")
public class CasesResource extends ConfigurationDepenentResource
{ 
    
    public CasesResource()
    {
        super();
    }

    @GET
    @Produces({ MediaType.TEXT_XML,MediaType.APPLICATION_JSON })
    public Response getList(@Context HttpServletRequest req,@QueryParam("sort") @Encoded String sort)
    {
        ...
    }

    @POST
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    @Produces(MediaType.APPLICATION_JSON)
    public CaseInfoResource upload(...) 
    {
        ...
    }

    @Path("{id}")
    public CaseResource getCaseResource(@PathParam("id") final String caseId,@Context HttpServletRequest req)
    {
        ...
        return new CaseResource(caseId,getConfigurationManager());
    }
}

这是子资源

@Path("/cases/{id}")
public class CaseResource
{
    private final String id;
    private final AbstractWebConfigurationManager configurationManager;

    public CaseResource(String id,AbstractWebConfigurationManager configurationManager)
    {
        super();
        this.id = id;
        this.configurationManager = configurationManager;
    }

解决方法

我在发帖时已经弄清楚了,所以我认为最好把答案也贴出来。问题是子资源类上的@Path批注。一旦删除,它就会按预期工作。我想CXF不在乎,只要没有在getClasses()中添加类,但是Jersey都可以。