Redisson:在终结方法中关闭客户端

时间:2018-04-27 05:08:23

标签: java static finalize redisson

我正在为我们的应用程序中使用的redission客户端编写适配器,我不确定在finalize块中关闭客户端是否是一个好的设计。下面是代码。请让我知道

      fileDetails: any = {
        clientDoc: {}
      }; 
      uploadClientDoc(event) {
        this.fileDetails.clientMandateForm = event.srcElement.files[0];
        this.submitFlag = this.fileDetails.isdaFile ? true : false;
      }

      submit() {
        let formData: FormData = new FormData();
        formData.append('clientDoc', this.fileDetails.clientDoc);
        var data = this.urService.uploadFiles(formData).subscribe(res => {
          //your login  
        });

      }



      uploadFiles(data) {
        const httpOptions = {
          headers: new HttpHeaders({        
            'Accept': 'application/json',
            'Access-Control-Allow-Origin': '*',
            'Content-Type': 'multipart/form-data' 
          })
        };

        return this.http.post('<url>', data, httpOptions);
      }






       <div>
        <label>Please Select Document</label>
        <label class="type-file">+ Upload FIle
          <input type="file" accept="application/pdf" id="my_file1" (change)="uploadClientDoc($event)" />
        </label>   
        <label >{{fileDetails.clientDoc.name}}</label>
      </div>

      <button class="ci-btn float-right-btn" type="button"  (click)="submit()" value="Submit">Submit</button>
编辑:我有兴趣知道在Web应用中关闭静态最终连接对象的正确设计。我无法在方法的finally块中关闭它,因为客户端将被多个类中的多个方法使用

1 个答案:

答案 0 :(得分:1)

您不应该依赖关闭客户端的finalize()方法 - 您应该确保在其他位置关闭它。 finalize()只会在对象被垃圾收集时被调用,这可能在客户端应该关闭之后很久(并且可能永远不会,取决于程序的生命周期和gc选项。)

由于这个原因,许多人将完全摆脱finalize()方法。

如果您确实将其保留在那里,那么只需将其视为备份以捕获上游的编码错误。首先检查客户端是否已关闭,如果没有,请确保打印出一条警告消息,指出您有一个需要解决的错误!