【发布时间】:2014-03-06 14:50:00
【问题描述】:
我正在使用 jersey 客户端向第三方网络服务发送 POST 请求。由于创建球衣客户端很昂贵,因此我在 Spring 管理的服务客户端类的构造函数中执行此操作。我的想法是,当我的服务器启动时,Spring 将创建我的服务客户端 bean,这反过来会导致构造函数被调用,因此我的球衣客户端将被创建一次。只要服务器启动,这个 jersey 客户端将负责发送请求,并且不需要进一步的客户端初始化。但是,我将为每次通话创建一个新的网络资源,因为创建球衣网络资源要便宜得多。
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 中是这样管理的:
<bean id="myClient" class="com.mypackage,MyWebserviceClient"></bean>
bean myClient 然后将被注入到需要进行服务调用的适当位置。
我的问题
1) 如果我的应用程序每小时处理数以千计的请求,那么它是否足以通过一个 jersey 客户端来处理所有请求。
2) 我是否需要某种 jersey 客户端池,以便更有效地处理大量请求。如果是这样,有没有办法做到这一点?
3) 我想大致了解如何在服务器端处理来自最终用户的多个请求。每个请求都是服务器上一个单独的执行线程,它们都可以访问同一个 jersey 客户端对象。如果 jersey 客户端对象正忙于处理一个这样的请求,那么来自不同最终用户的其他请求是否会等到收到对正在进行的请求的响应?
4) 任何比我正在使用的更好的替代品。
【问题讨论】:
标签: java spring web-services jersey jersey-client