在Spring受管bean的构造函数中初始化泽西客户端

我正在使用jersey客户端将POST请求发送到第三方Web服务。由于创建泽西岛客户端非常昂贵,因此我在Spring托管的服务客户端类的构造函数中执行此操作。我的想法是,当我的服务器启动时,Spring将创建我的服务客户端bean,这反过来将导致构造函数被调用,因此我的jersey客户端将被创建一次。只要服务器启动,此jersey客户端将负责发送请求,并且不需要进一步的客户端初始化。但是,我将为每个呼叫创建一个新的Webresource,因为创建jersey Webresources便宜得多。

package com.mypackage;
//Bunch of imports

class MyWebserviceClient {

    //jersey client member variable
    private Client jClient;

    public MyWebserviceClient(){

        //Create jersey client
        jClient = Client.create();

        //Other stuff
    }

    public void sendRequest(){

        WebResource wr = jClient.resource(someUrl);
        //Use the webresource to make webservice call
    }
}

MyWebserviceClient 在Spring config xml中像这样对spring进行管理:

<bean id="myClient" class="com.mypackage,MyWebserviceClient"></bean>

myClient然后将bean注入需要进行服务调用的适当位置。

我的问题

1)如果我的应用程序每小时处理数千个请求,它的效率足以仅用一个jersey客户端处理所有请求。

2)我是否需要某种jersey客户端池,以便更有效地处理大量请求。如果是这样,有办法吗?

3)我通常想知道如何在服务器端处理来自最终用户的多个请求。每个请求是服务器上单独的执行线程,并且所有请求都可以访问相同的jersey客户端对象。如果jersey客户端对象正忙于一个这样的请求,那么来自不同最终用户的其他请求是否要等待直到收到正在进行的请求的响应?

4)我正在使用的任何更好的替代方法。

凯尔·温特

您的想法是正确的。

1-是,建议重用客户端实例:

来自https://jersey.java.net/documentation/1.18/client-api.html#d4e623

客户端实例是昂贵的资源。建议将已配置的实例重新用于创建Web资源。Web资源的创建,请求的建立和响应的接收都保证是线程安全的。因此,可以在多个线程之间共享Client实例和WebResource实例。

2-不需要,客户端本身可以处理请求。对于异步请求,它在内部使用可配置的线程池。

3-Jersey客户端是线程安全的,因此线程不会互相阻塞

4-您还可以考虑将客户端作为MyWebserviceClient的依赖项提供,并可能在多个类之间重用同一客户端

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Couchbase .NET客户端构造函数无法正确初始化

来自分类Dev

当客户端在DataContract上调用new时,如何初始化抽象基本构造函数?

来自分类Dev

无法在MqttNet受管客户端中添加客户端证书

来自分类Dev

多线程客户端中COM对象的初始化和实例化

来自分类Dev

从Spring独立客户端调用代理DAO方法:-无法初始化代理-无会话

来自分类Dev

从Spring独立客户端调用代理DAO方法:-无法初始化代理-无会话

来自分类Dev

soap webservice php客户端参数初始化

来自分类Dev

Elasticsearch Java客户端初始化失败

来自分类Dev

在页面初始化期间完成客户端工作

来自分类Dev

soap webservice php客户端参数初始化

来自分类Dev

如何初始化 Kony Fabric 客户端

来自分类Dev

在Django App中初始化GraphQL客户端的位置

来自分类Dev

在特征中初始化数据库客户端

来自分类Dev

在应用程序中初始化改造客户端

来自分类Dev

在构造函数中初始化ArrayList

来自分类Dev

在构造函数中初始化变量

来自分类Dev

在构造函数中初始化流

来自分类Dev

在构造函数中初始化流

来自分类Dev

无法在派生类的构造函数的初始化中访问受保护的函数

来自分类Dev

Spring Boot在启动时使用构造函数参数初始化bean

来自分类Dev

Spring Bean:自动装配属性是否在构造函数之前初始化?

来自分类Dev

泽西休息客户端不添加查询参数

来自分类Dev

NoSuchMethodError:泽西岛客户端中的MultivaluedMap.addAll

来自分类Dev

在C ++中的构造函数中初始化数组

来自分类Dev

定义中的初始化与构造函数中的初始化

来自分类Dev

在类本身中初始化 TypeScript 变量与在构造函数中初始化的区别

来自分类Dev

在构造函数中初始化Enum变量

来自分类Dev

在构造函数中初始化静态字段

来自分类Dev

Java构造函数中类变量的初始化

Related 相关文章

  1. 1

    Couchbase .NET客户端构造函数无法正确初始化

  2. 2

    当客户端在DataContract上调用new时,如何初始化抽象基本构造函数?

  3. 3

    无法在MqttNet受管客户端中添加客户端证书

  4. 4

    多线程客户端中COM对象的初始化和实例化

  5. 5

    从Spring独立客户端调用代理DAO方法:-无法初始化代理-无会话

  6. 6

    从Spring独立客户端调用代理DAO方法:-无法初始化代理-无会话

  7. 7

    soap webservice php客户端参数初始化

  8. 8

    Elasticsearch Java客户端初始化失败

  9. 9

    在页面初始化期间完成客户端工作

  10. 10

    soap webservice php客户端参数初始化

  11. 11

    如何初始化 Kony Fabric 客户端

  12. 12

    在Django App中初始化GraphQL客户端的位置

  13. 13

    在特征中初始化数据库客户端

  14. 14

    在应用程序中初始化改造客户端

  15. 15

    在构造函数中初始化ArrayList

  16. 16

    在构造函数中初始化变量

  17. 17

    在构造函数中初始化流

  18. 18

    在构造函数中初始化流

  19. 19

    无法在派生类的构造函数的初始化中访问受保护的函数

  20. 20

    Spring Boot在启动时使用构造函数参数初始化bean

  21. 21

    Spring Bean:自动装配属性是否在构造函数之前初始化?

  22. 22

    泽西休息客户端不添加查询参数

  23. 23

    NoSuchMethodError:泽西岛客户端中的MultivaluedMap.addAll

  24. 24

    在C ++中的构造函数中初始化数组

  25. 25

    定义中的初始化与构造函数中的初始化

  26. 26

    在类本身中初始化 TypeScript 变量与在构造函数中初始化的区别

  27. 27

    在构造函数中初始化Enum变量

  28. 28

    在构造函数中初始化静态字段

  29. 29

    Java构造函数中类变量的初始化

热门标签

归档