问题描述
此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都可以。