Couchdb 如何将对象池中的数据库对象注入并处理到资源中?

Couchdb 如何将对象池中的数据库对象注入并处理到资源中?,couchdb,jersey,injectableprovider,Couchdb,Jersey,Injectableprovider,我一直在考虑为jersey的jcouchdb对象实现一个对象池。现在我在问自己,将jcouchdb实例交付给资源端点的最佳方式是什么 我希望池中有一个方法来请求jcouchdb对象并释放它,以便重用它 我的第一个想法是将InjectableProvider实现为单例,并在资源端点中使用注释来“获取”它。然后,InjectableProvider从对象池返回一个jcouchdb对象,并将其标记为忙碌。在使用jcouchdb对象之后,如何释放它?我会为每个资源端点实例请求一个jcouchdb对象,即

我一直在考虑为jersey的jcouchdb对象实现一个对象池。现在我在问自己,将jcouchdb实例交付给资源端点的最佳方式是什么

我希望池中有一个方法来请求jcouchdb对象并释放它,以便重用它

我的第一个想法是将InjectableProvider实现为单例,并在资源端点中使用注释来“获取”它。然后,InjectableProvider从对象池返回一个jcouchdb对象,并将其标记为忙碌。在使用jcouchdb对象之后,如何释放它?我会为每个资源端点实例请求一个jcouchdb对象,即使我从不需要它?!(不知道注释对象何时实例化)

我考虑的另一个想法是将对象池附加到servlet上下文(使用set属性)

还有其他想法吗

谈到共享资源和泽西,我基本上有点困惑。希望有人能帮我把事情弄清楚


谢谢

如果您完全按照刚才所说的做,您的代码将如下所示:

public class MyResource{
     @GET
     @RequestMapping("/bleh")
     public Response getValue(@Context JCouchDBObject object){
        //manipulate object
     }
}

@Provider
public class MyProvider extends InjectableProvider<Context, Parameter>{
   public Injectable<JCouchDBObject> getInjectable(ComponentContext context, Context hp, Parameter param) {
        //GetObject and return
   }
}
公共类MyResource{
@得到
@请求映射(“/bleh”)
公共响应getValue(@Context JCouchDBObject对象){
//操纵对象
}
}
@提供者
公共类MyProvider扩展了InjectableProvider{
公共可注入getInjectable(ComponentContext上下文、上下文hp、参数param){
//GetObject和return
}
}
我从未使用过JCouchDB,但除非每个对象都链接到DB连接池,否则没有任何东西可以手动释放,所有这些都将为您处理

但是:这不是InjectableProvider的设计目的。通常,InjectableProvider将用于创建和解析某种请求对象(如JCouchDBObject的ID等)。然后,您应该使用一个服务来收集JCouchDBObject并在那里处理任何手动发布