小编Dnt*_*Cln的帖子

设计模式为Web服务建模请求和响应对象

我有大约7个REST Web服务要实现.其中一些Web服务具有标准(相同)响应,而一些响应不同.

对这些Web服务的请求是不同的,但是一些请求和一些响应具有相同的底层数据对象.

我不确定是否必须为每个Web服务构建单独的请求/响应类或重用标准服务.我想知道是否有一个设计模式来为这些Web服务建模请求对象和响应对象.

好吧,说帐户和书籍是我的网络服务将要处理的两个休息资源.

class Account {
    String username;
    String id;
}


class Book {
    String title;
    String isbn;
}
Run Code Online (Sandbox Code Playgroud)

所以我的网络服务看起来像这样:

MYAPI/CreateAccountandBook
MYAPI/Account/Create
MYAPI/Book/Create
MYAPI/Book/Update/{isbn}
MYAPI/Account/Update/{id}
MYAPI/Account/getInfo/{id} 
Run Code Online (Sandbox Code Playgroud)

等等.

现在CreateAccountandBook请求将获取有效负载中的帐户对象和书籍列表.此外,响应对象MYAPI/Account/getInfo/{id}还有一个帐户对象和与该帐户关联的书籍列表.但响应对象还包括一个statusCodeDescription.

现在我想以最好的方式为这些请求和响应对象创建类.

好的开始.

我有两个抽象类StandardRequestStandardResponse.

所有请求类都将扩展标准请求类并相应地进行自定义.所有响应类都将扩展标准响应类并相应地进行自定义.

但是这些请求和响应可能彼此不同,但仍然重用相同的实体对象.

例如:

createAccountandBook 请求对象如下所示:

class CreateAccountAndBookRequest {
   Account account;
   List<Book> books;
}
Run Code Online (Sandbox Code Playgroud)

而对getInfoWeb服务的响应是:

class GetInfoResponse {
   Account account;
   List<Book> books;
   String statusCode;
   String description;
}
Run Code Online (Sandbox Code Playgroud)

所以请求和响应类之间存在重叠.我可以为每个Web服务创建两个(req/res)类.但是想知道是否有更好的方法来模拟这些类.

java rest design-patterns web-services jax-rs

29
推荐指数
2
解决办法
4万
查看次数

在 Eclipse 中导入现有项目时出现重复的 src 包

当我尝试将现有项目导入 eclipse 时,我看到 src 文件夹有重复的包(下面以红色突出显示)不知道为什么。我该如何解决这个问题?

src 文件夹以红色突出显示

java eclipse

6
推荐指数
1
解决办法
3027
查看次数

JPA/Hibernate选择查询返回重复记录

我有一个表,比如,具有ID,State和User_ID的Instrument作为列.

所以我有这个JPA查询返回所有具有匹配User_ID的乐器记录.

   query = manager.createQuery("SELECT instrument from Instrument instrument
             where instrument.User_ID=:User_ID",Instrument.class);
   query.setParameter("User_ID", User_ID);

   List<Instrument> instruments=  query.getResultList();

   for(Instrument instrument:instruments){
            System.out.println("Instrument ID  "+instrument.getID());
              // using sysout as it is not prod code yet
        }
Run Code Online (Sandbox Code Playgroud)

它只返回重复的第一条记录,与匹配的记录一样多次.

11:13:01,703 INFO  [stdout] (http-/127.0.0.1:8080-1) Instrument ID   1
11:13:01,704 INFO  [stdout] (http-/127.0.0.1:8080-1) Instrument ID   1
11:13:01,704 INFO  [stdout] (http-/127.0.0.1:8080-1) Instrument ID   1
Run Code Online (Sandbox Code Playgroud)

我在Db中有三个记录,仪器ID为1,2和3

我在hibernate上启用了show sql查询,查询在数据库上直接运行并返回不同的记录.

Hibernate查询:

    select instrumentjdo0_.User_ID as member_U1_0_, instrumentjdo0_.ID as ID2_0_, 
instrumentjdo0_.state as state4_0_ from instrument instrumentjdo0_ where instrumentjdo0_.User_ID=?
Run Code Online (Sandbox Code Playgroud)

仪器实体

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id; …
Run Code Online (Sandbox Code Playgroud)

java sql oracle hibernate jpa

3
推荐指数
2
解决办法
2万
查看次数

在JBOSS EAP 6.3上部署REST Webservice时出错

我试图在jboss eap 6.3服务器上部署一个war(Rest based Webservice)文件.部署失败,出现以下跟踪.

我查看了所有依赖项,一切看起来都很好.

我错过了什么吗?

        11:22:57,659 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015876: Starting deployment of "RestService.war" (runtime-name: "RestService.war")
    11:22:58,074 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015893: Encountered invalid class name 'com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$App' for service type 'javax.ws.rs.ext.MessageBodyReader'
    11:22:58,074 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015893: Encountered invalid class name 'com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$Text' for service type 'javax.ws.rs.ext.MessageBodyReader'
    11:22:58,075 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015893: Encountered invalid class name 'com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General' for service type 'javax.ws.rs.ext.MessageBodyReader'
    11:22:58,075 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015893: …
Run Code Online (Sandbox Code Playgroud)

java rest web-services jboss6.x jboss7.x

1
推荐指数
1
解决办法
6527
查看次数