问题标签 [apache-commons-pool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
284 浏览

java - 我应该在哪里初始化我的 Apache commons pool2 以便可以从其他类访问它

我正在开发基于 jax-rs 的 REST 服务。我的应用程序需要连接池,所以我将使用 commons pool2。我计划在实现 ServletContextListener 的类中初始化我的池,以便在应用程序启动时初始化池。问题是我不知道现在如何从我的 FolderService 类中访问我的池。

我试图在下面添加适当的代码。谢谢!

0 投票
1 回答
46 浏览

java - Btrace:按应用程序过滤具有相同名称的类

我正在尝试检测我的应用程序以监视连接池。我们使用 apache commons pool 1.6 进行连接池,所有应用程序都部署在同一个 AS 上(我们使用 Jboss EAP 6)。跟踪脚本有效,但它会在同一 AS 上的所有应用程序中调用池方法时触发。

有一种方法可以让我的脚本挂钩池方法仅在选定的应用程序中调用?

0 投票
1 回答
1053 浏览

java - Websphere MQ 连接池

Java中是否有用于Websphere MQ的连接池库?我尝试使用 Apache Commons Pool 为 WebSphere MQ 实现连接池,但没有成功。

0 投票
1 回答
276 浏览

java - Apache Common Pools 从版本 1 迁移到版本 2 以及用尽的操作

在 Apache Commons Pool 1 中,类GenericObjectPool可以定义三个动作来对耗尽的池做出反应:

  • 失败
  • 堵塞
  • 生长

现在,在版本 2 中,我看不到这三个选项,并且GenericObjectPool类似乎只能指定池在耗尽时是否必须阻塞。

根据方法borrowObject,似乎用尽时阻塞选项只允许覆盖动作失败和阻塞。但是我怎样才能让池遵循 GROW 动作?

0 投票
1 回答
1266 浏览

java - GenericObjectPool 返回的对象当前不属于此池

我创建了一个需要重用的对象池。每次我尝试返回对象时都会收到错误消息:“返回的对象当前不属于该池”

我已经覆盖了 equals 和 hashcode 方法,但这没有帮助。

我使用以下代码设置了池:

这是我如何覆盖equals和hashCode:

我像这样在 Pool 上调用 returnObject:

我收到此错误:

java.lang.IllegalStateException:返回的对象当前不属于此池 org.apache.commons.pool2.impl.GenericObjectPool.returnObject(GenericObjectPool.java:524) com.ifmrestoration.webscraper.CorrigoScraperPool.returnObject(CorrigoScraperPool.java:45) com.ifmrestoration.webscraper.ImageDownloader.saveImageFromAWSurl(ImageDownloader.java:164) com.ifmrestoration.webscraper.ImageDownloaderServlet.doPost(ImageDownloaderServlet.java:49) javax.servlet.http.HttpServlet.service(HttpServlet.java:707) javax. servlet.http.HttpServlet.service(HttpServlet.java:790) org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848) org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:第1772章:60) org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582) org.eclipse.jetty.server.handler。 ScopedHandler.handle(ScopedHandler.java:143) org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) org. eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) com.google.apphosting.runtime.jetty9.ParseBlobUploadHandler。句柄(ParseBlobUploadHandler.java:119) org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1182) com.google.apphosting.runtime.jetty9.AppEngineWebAppContext.doHandle(AppEngineWebAppContext.java:187) org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) org.eclipse.jetty.server。 handler.ContextHandler.doScope(ContextHandler.java:1112) org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) com.google.apphosting.runtime.jetty9.AppVersionHandlerMap.handle(AppVersionHandlerMap.java: 293) org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) org.eclipse.jetty.server.Server.handle(Server.java:539) org.eclipse.jetty.server.HttpChannel。处理(HttpChannel.java:333)com.google.apphosting.runtime.jetty9.RpcConnection.handle(RpcConnection.java:213)com.google.apphosting.runtime.jetty9.RpcConnector.serviceRequest(RpcConnector.java:81)com。 google.apphosting.runtime.jetty9。JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:134) com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchServletRequest(JavaRuntime.java:722) com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchRequest(JavaRuntime.java:685) com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:655) com.google.apphosting.runtime.JavaRuntime$NullSandboxRequestRunnable.run(JavaRuntime.java:847) com.google.apphosting.runtime.ThreadGroupPool$ PoolEntry.run(ThreadGroupPool.java:270) java.lang.Thread.run(Thread.java:748)第685章 com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:655) ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:270) java.lang.Thread.run(Thread.java:748)第685章 com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:655) ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:270) java.lang.Thread.run(Thread.java:748)

0 投票
0 回答
549 浏览

redis - 如何在 JedisPool 中设置 AbandonedConfig - JedisExhaustedPoolException 错误

我面临一个类似于jedis-1929的问题。我们正在使用 JedisPoolmaxTotal=400并确保在使用 jedis 之后,pool.getResource()我们使用方法将连接返回到finally块中的池jedis.close()。绝地武士的版本是3.0.0. 连续运行程序几天后出现此问题。我们在 Redis 中获取/设置键值对大约每分钟 0.1m 次。键和值都非常小,值大约 120 字节。用例大多阅读繁重。

想要设置 AbandonConfig 以确保泄漏的连接在默认超时后关闭,但看不到为 JedisPool 设置 AbandonConfig 相关设置的方法。以下是我们得到的异常,当 numActives 等于 maxTotal

以下是我们的配置:

0 投票
1 回答
394 浏览

java - 配置 Apache Commons Pool 以在启动时创建对象

我正在使用 apache commons pool2 配置对象池。似乎只有在尝试借用对象时才会创建池中的对象。我希望预先创建对象,因此当需要借用第一个对象时,我准备好了最少数量的对象。

我的弹簧配置看起来像这样:

我可以看到在应用程序启动时创建了池,但 minIdle 设置似乎并没有导致我想要的行为。工厂上的 create() 方法仅在借用第一个对象时调用。

任何提示将不胜感激。

谢谢

0 投票
0 回答
993 浏览

java - 带有 testOnBorrow 的 Spring 中的 Apache Commons Pool 2(但不是在代理上的每个方法调用上)

我按照此答案中的说明配置了 CommonsPool2TargetSource 。然后我添加了借用验证(因为在我的真实场景中,每个池化对象都代表一个可能不再存在的进程)。

它可以工作,但是在池对象上的每个方法调用都会调用一次验证。每个对我们服务的请求可能会多次(通常只有两次)。(如果我记录池对象,再加上一次toString。)但是,每个请求一次验证就足够了。

我怎样才能更好地控制它?例如,要验证

  • 仅在ApplicationContext.getBean(在链接答案中使用)或Provider.get(我在下面使用的更多 DI 方式)上,
  • 或仅当池对象的方法抛出“断管”IOException;然后用一个新的替换它并重试,透明的。

使用的版本:spring-aop-5.2.5.RELEASE、Apache commons-pool2-2.7.0

代码(主要从这个答案复制)

显示由 toString 引起的验证调用的输出

0 投票
1 回答
269 浏览

java - MinEvictableIdleTimeMillis 设置未按预期工作

我有这个对象池(使用 org.apache.commons.pool2),我从中借用(或创建)一个。

我设置的最大空闲大小为 3(最大大小为 5)。设置的前提是如果空闲对象超过 3 个,这些对象将被销毁 (BasePooledObjectFactory#destroyObject)

这在我的系统中所做的是它创建和销毁了几个对象,这很昂贵。我只希望它在空闲较长时间(比如 1 分钟)时被销毁。

我尝试设置 setMinEvictableIdleTimeMillis(我可以看到的默认值为 30 分钟)来执行此操作。默认值以及设置似乎都不起作用 - 因为我可以看到当空闲计数超过 4 时,对象经常被销毁。

为什么会发生这种情况,我怎样才能确保空闲对象不会经常被破坏?

0 投票
1 回答
172 浏览

java - 确定将 JedisPool 与布尔变量一起使用

我正在开发一个使用 Jedis 的自定义 Boomi 连接器,以便将数据发送到 redis 服务器。我正在尝试做的一件事是删除参数String parameters并仍然确定是否应该使用池,但我不确定我将如何去做。