对同一URL的相同GET请求给出不同的Response,奇怪的行为

时间:2017-03-27 19:35:01

标签: rest ejb

我有一个非常奇怪的错误,我不知道发生了什么。

我有这样的端点:

 private void init() {
    if (ioConfigurationDAO == null) {
      ioConfigurationDAO = new IOConfigurationDAO();
      ioConfigurationDAO.init();
    }

    property = new AigatewayProperty();
 }

  @GET
  @Path("/{id : \\d+}")
  @Produces(MediaType.APPLICATION_JSON)
  public Response getIoConfiguration(@PathParam("id") Integer id) {
    init();
    if (!ChannelName.isValidChannel(id)) {
      return Response.status(Response.Status.NOT_FOUND).build();
    }
    IOConfiguration ioConfig = ioConfigurationDAO.findIOConfiguration("CH" + id);
    System.out.println(ioConfig.getConversionType());
    // close();
    return Response.status(Response.Status.OK).entity(ioConfig).build();
  }

当我向此网址发出请求时:http://localhost:8080/aigateway/rest/ioconfiguration/3

有一段时间,我收到了正确答案:

  

{" ioConfigurationId":" CH 3""有源":真,"名称":" 1" " conversionType":"线性""明复":0.32," bInfo":0.55," voltageDivide&#34 ;: " / 4"" sampleRange":" 24   位"" samplePeriod":10," storeRaw":假," storeConverted":假," defaultGraph":&#34 ;线""标题":"""单元":""" rangeLowerbound" :0," rangeUpperbound":100,"代码":"功能   conversion_CH3(输入){\ n \ treturn输入; \ n}"}

有时候,我得到的错误回答是错误的值:

  

{" ioConfigurationId":" CH 3""有源":空,"名称":空," conversionType&# 34;:空,"明复":空," bInfo":空," voltageDivide":空," sampleRange":空,& #34; samplePeriod":空," storeRaw":空," storeConverted":空," defaultGraph":空,"标题&#34 ;:空,"单元":空," rangeLowerbound":空," rangeUpperbound":空,"代码":空}

我不知道发生了什么。

有一点需要提及的是:

我必须手动启动我的实体管理器,因为我的EJB注释不起作用,而且我没有关闭与数据库的连接,因为我不知道应用程序何时结束。我不知道这是否是造成这个问题的原因。

有人请帮助我,如果您需要更多信息,我愿意分享。

谢谢!

1 个答案:

答案 0 :(得分:0)

我通过正确使用EJB解决了这个问题。我认为造成这个问题的唯一原因是因为我从未关闭我的实体经理,所以下次当我尝试创建一个新的实体经理时,会出现一些问题,这就是我为什么会这样做的原因有时会得到空值。