问题:根资源类定义为具有所有注释的接口.CXFServlet无法在impl类上看到POST操作,尽管它是在接口上定义的.当所有注释都复制到impl类中时,它可以正常工作.
注意:仅在接口上定义GET才能正常工作,只有POST导致问题.
@Path("foo/")
public interface TestService {
@Path("foo/{id}")
@GET
@Produces("text/plain")
public String getIt(String id);
@Path("foo")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@ElementClass(response = Bar.class)
public Response createStuff(@Context MessageContext context,
Bar bar);
Run Code Online (Sandbox Code Playgroud)
}
@Features(features = "org.apache.cxf.feature.LoggingFeature")
public class TestServiceImpl implements TestService {
@Override
public String getIt(String id) {
return "Hi there!";
}
@Override
public Response createStuff(@Context MessageContext context,
Bar bar) {
bar.set...
bar.set...
return Response.ok(bar).build();
Run Code Online (Sandbox Code Playgroud)
}
Beans.xml {
<jaxrs:server id="testService" address="/test">
<jaxrs:serviceBeans>
<ref bean="testservice1"/>
</jaxrs:serviceBeans>
</jaxrs:server>
<bean id="testservice1" class="foo.bar.TestServiceImpl"/>
Run Code Online (Sandbox Code Playgroud)
}
在web.xml …