当前位置: 首页 > 知识库问答 >
问题:

使用JAX-RS继承

谢锦程
2023-03-14
public interface ICRUD {

    @POST
    @Consumes("application/json")
    @Produces("application/json")
    @Path("create")
    public String createREST(String transferObject);

    @GET
    @Consumes("application/json")
    @Produces("application/json")
    @Path("retrieve/{id}")
    public String retrieveREST(@PathParam("id") String id);

    @POST
    @Consumes("application/json")
    @Produces("application/json")
    @Path("update")
    public void updateREST(@Suspended final AsyncResponse asyncResponse,
                           final String transferObject) ;

    @DELETE
    @Consumes("application/json")
    @Produces("application/json")
    @Path("delete/{id}")
    public String deleteREST(@PathParam("id") String id); 
}
public abstract class BaseREST implements ICRUD{

private final ExecutorService executorService = Executors.newCachedThreadPool();

@Override
public String createREST(String transferObject) {
    return create(transferObject).toJson();
}

@Override
public String retreiveREST(@PathParam("id") String id) {
    return retreive(id).toJson();
}


@Override
public String deleteREST(
        @PathParam("id") String id) {
    return delete(id).toJson();
}

@Override
    public void updateREST(@Suspended final AsyncResponse asyncResponse, final String transferObject) {
        executorService.submit(new Runnable() {
            @Override
            public void run() {
                asyncResponse.resume(doUpdateREST(transferObject));
            }
        });
    }      

}
@Path("meeting")
public class MeetingRestServices extends BaseREST {
}
http://localhost:8080/webresources/meeting/retreive/0

webresources定义如下。这个类是由NetBeans自动添加的。

@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new java.util.HashSet<>();
        addRestResourceClasses(resources);
        return resources;
    }

    /**
     * Do not modify addRestResourceClasses() method.
     * It is automatically populated with
     * all resources defined in the project.
     * If required, comment out calling this method in getClasses().
     */
    private void addRestResourceClasses(Set<Class<?>> resources) {
        resources.add(com.dv.meetmefor.ws.impl.BinaryDataRestService.class);
        resources.add(com.dv.meetmefor.ws.impl.ImageRestServices.class);
        resources.add(com.dv.meetmefor.ws.impl.LocaleRestService.class);
        resources.add(com.dv.meetmefor.ws.impl.MeetUpRestServices.class);
        resources.add(com.dv.meetmefor.ws.impl.MeetingRestServices.class);
        resources.add(com.dv.meetmefor.ws.impl.UserAccountRestServices.class);
    }

}

共有1个答案

巫马正卿
2023-03-14

你上面描述的看起来不错。以下是JAX-RS继承的规则,这些规则基于您所提供的内容。

来自JAX-RS规范§3.6:

JAX-RS注释可以用于超类或已实现接口的方法和方法参数。这样的注释由相应的子类或实现类方法继承,前提是该方法及其参数本身没有任何JAX-RS注释。超类上的注释优先于已实现接口上的注释。如果子类或实现方法有任何JAX-RS注释,则忽略超类或接口方法上的所有注释。例如:

public interface ReadOnlyAtomFeed {
    @GET @Produces("application/atom+xml")
    Feed getFeed();
}

@Path("feed")
public class ActivityLog implements ReadOnlyAtomFeed {
    public Feed getFeed() {...}
}
@Path("feed")
public class ActivityLog implements ReadOnlyAtomFeed {
    @Produces("application/atom+xml")
    public Feed getFeed() {...}
}
 类似资料:
  • 问题内容: 我正在使用我的Web服务。我有通用的功能,想使用继承。我正在提供简单的CRUD操作。我已经定义了这样的接口: 我有一个实现此接口的抽象类: 最后,我的实现类仅为资源提供PATH: 当我尝试访问我的资源时(假设上下文根为/): 我得到一个404,它说找不到。我的想法是,在继承的某个地方,它弄乱了我认为资源应位于的位置的路径。有什么想法吗? 编辑 webresources在下面定义。该类由

  • 我有一个抽象类,它声明了方法: 然后一个类实现该方法: 更新: 我从零开始使用Java EE7,这很有效。

  • JAX-RS (JSR 311) 是一个社区驱动的标准用于使用 Java 构建 RESTful Web 服务。

  • 我的jax-rs应用程序的方法: 工作正常。但是,如果修改: 我收到一个错误 服务器Jboss 7.1.1 请告诉我怎么了。 PS.sorry我的英语不好。

  • 问题内容: 我正在尝试使用异步响应构建REST Web服务。 我已经在网上解决了这个错误,但是,没有一种解决方案对我有用。我不确定如何去做。 这是REST服务的代码,它具有AsyncResponse,并且取自,我将在下面提供该文件中指定的jar文件。问题是,在部署战争时,我遇到一个例外: 我的课如下: 我的Maven文件如下: 问题答案: 是 当应用程序试图调用一个抽象方法抛出 。 是中的抽象方法

  • 我正在尝试创建一个简单的REST api,我遵循了Jersey网站上的教程:https://jersey.java.net/nonav/documentation/2.0/deployment.html 以下是错误: 原因:javax.servlet.unavailableException:org.eclipse.jetty.servlet.baseholder.doStart(basehold