我得到了一个用JAX-RS注释注释的接口。在实现类本身中,我只是覆盖接口的方法;不覆盖注释或任何内容。
我得到以下错误:类{name}是一个接口,无法实例化
我试着用我的注释接口做了一个jar,并把它放在.war\lib文件夹中,但错误仍然存在。
如果重要的话,我将使用JBoss的嵌入式Tomcat。
界面如下:
@javax.ws.rs.Path( "/jerseytesting.HelloWorldService" )
public interface HelloWorldService {
@javax.ws.rs.POST
@javax.ws.rs.Path( "/Greet" )
@javax.ws.rs.Consumes({"application/protobuf", "application/json"})
@javax.ws.rs.Produces({"application/protobuf", "application/json"})
jerseytesting.Twirpproto.HelloResponse greet(jerseytesting.Twirpproto.HelloRequest request);
}
这里是实现:
public class Twirpy implements Twirpproto.HelloWorldService {
@Override
public HelloResponse greet(HelloRequest request) {
HelloResponse helloResponse = HelloResponse.newBuilder().setResponse("Hello, " + request.getName()).build();
return helloResponse;
}
}
来自API文档:
JAX-RS注释可以用于的方法和方法参数超类或实现的接口。
因此,只有方法注释可以在接口上。
具体类应该具有@Path
。只有到那时,JAX-RS才会知道创建该具体类的实例。
像这样:
@javax.ws.rs.Path( "/jerseytesting.HelloWorldService" )
public class Twirpy implements Twirpproto.HelloWorldService {
@Override
public HelloResponse greet(HelloRequest request) {
HelloResponse helloResponse = HelloResponse.newBuilder().setResponse("Hello, " + request.getName()).build();
return helloResponse;
}
}