GenericObjectPool Возвращенный объект, который в настоящее время не является частью этого пула - PullRequest
1 голос
/ 30 июня 2019

Я создал пул объектов, которые мне нужно использовать повторно. Каждый раз, когда я пытаюсь вернуть объект, я получаю сообщение об ошибке: «Возвращенный объект не входит в данный пул»

Я переопределил методы equals и hashcode, но это не помогает.

Я настроил пул, используя этот код:

GenericObjectPoolConfig config = new GenericObjectPoolConfig();
config.setMaxIdle(10);
config.setMaxTotal(10);
config.setTestOnBorrow(true);
config.setTestOnReturn(true); 
ImageDownloaderPool.POOL= new ImageDownloaderPool<String, String>(new ImageDownloaderFactory<String, String>(), config);

Вот как я переопределяю equals и hashCode:

@Override
public boolean equals(Object o) {
   if (this == o) return true;
   if (!(o instanceof ImageDownloader)) return false;
   ImageDownloader<String, String> that = (ImageDownloader<String, String>) o;
   if (id != null ? !id.equals(that.id) : that.id != null) return false;
   return true;
}

@Override
public int hashCode() {
  return id != null ? id.hashCode() : 0;
}

Я вызываю returnObject для пула следующим образом:

 finally { 
   if (dl != null) { 
      try {
         ImageDownloaderPool.getPOOL().returnObject(dl);
      } 
      catch (Exception e2) {
        e2.printStackTrace();
      }

Я получаю эту ошибку:

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) com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter (JdbcMySqlConnectionCleanupFilter.java: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.handle (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.handle (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)

...