web-services - 带有 Jersey 的 Restful 服务接口(interface)

标签 web-services jetty jackson jersey-2.0 jetty-8

我可以创建一个带有接口(interface)和实现类的 Restful 服务吗?

如果是这样,所有与 JAX-RS 相关的导入都会进入接口(interface)吗?

我正在使用 jersey2.4 和 jetty8.1。

这是我的MyService界面:

package foo.bar; 

@Path("/abc")
public interface MyService {

     @GET
     @JSONP
     @Path("/method/{id}")
     public MyResponse getStuff(@PathParam("id") Integer id);

}

以及 MyServiceImpl 的实现那个界面
package foo.bar.impl;

public class MyServiceImpl implements MyService {

     public MyServiceImpl() {}

     @Override
     public MyResponse getStuff(Integer id) {
         // do stuff
         return MyResponse;
     }
}

这是 web.xml 文件:
<servlet>
    <servlet-name>Scivantage REST Service</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>foo.bar</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

我注册了这个服务提供商包(foo.bar),但它提示说这个
javax.servlet.ServletException: A MultiException has 1 exceptions.  They are:|1. java.lang.NoSuchMethodException: Could not find a suitable constructor in foo.bar.MyService class.

当我尝试使用实现类包( foo.bar.impl )时,它提示说这个
I get HTTP ERROR 404; doesn't do anything else; no exceptions on console

当我尝试两者时 - 它的提示与上述相同:
javax.servlet.ServletException: A MultiException has 1 exceptions.  They are:|1. java.lang.NoSuchMethodException: Could not find a suitable constructor in foo.bar.MyService class.

我做错了什么?

最佳答案

这是我在几次试验后遇到的一个解决方案(我正在使用 jetty 9 和 jersey 2.13):而不是注释接口(interface)(使用 @Path("/abc") ),而是尝试注释实现类。

我认为这很有意义,因为接口(interface)是“抽象的”,不应该绑定(bind)到物理路径。这样,接口(interface)可以在不同的路径中重用。

关于web-services - 带有 Jersey 的 Restful 服务接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20148269/

相关文章:

java - 是否可以使用 run-forked 从不同的 JVM 运行 Jetty?

java - 嵌入式 Jetty 通过表单例份验证提供静态内容

Java:使用GSON进行JSON映射

java - 使用 objectMapper 将 JSON 日期格式反序列化为 ZonedDateTime

python - Python 中的授权 REST 服务

web-services - 如何使用 JAX-WS 生成 WSDL 2.0

java - 将自定义数据从 Jersey Filter 服务传递到 Jersey End-Point 服务

java - 检查 JAXBElement 参数是否为 null

xml - REST - Web 服务响应 - MIME 类型?

java - 将 LinkedHashMap 转换为复杂对象