Java 提交工作程序上的RejectedExecutionException
我开始发现WebLogic10.3.4中部署的webservice出现问题。在这个Web服务中,我创建了一个新的可调用类来处理命令:Java 提交工作程序上的RejectedExecutionException,java,multithreading,exception,submit,Java,Multithreading,Exception,Submit,我开始发现WebLogic10.3.4中部署的webservice出现问题。在这个Web服务中,我创建了一个新的可调用类来处理命令: public class CommandById implements Callable<DataBean> { private String docId = null; private String folder = null; public CommandById(final String docId, final String
public class CommandById implements Callable<DataBean> {
private String docId = null;
private String folder = null;
public CommandById(final String docId, final String folder) {
this.docId = docId;
this.folder = folder;
}
@Override
public DataBean call() throws Exception {
// Do something with docId and folder
}
}
有些东西不见了。
如果超过了允许的最大线程数(多少线程数是NTHREADS
),您可以获得RejectedExecutionException
)?或者如果线程池处于关闭过程中。
您总是使用相同的线程池吗?如果是这样,finally块中的
executor.shutdown()
可以解释这一点。谢谢!executor.shutdown()
是问题所在。我删除了最后一块,一切都很好。
ExecutorService executor = Executors.newFixedThreadPool(NTHREADS);
Callable<DataBean> worker = new CommandById(docId,folder);
Future<DataBean> submit = executor.submit(worker);
DataBean doc = null;
try {
doc = submit.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} finally {
executor.shutdown();
}
Error: [ServletContext@1747534847[app:BancoChile-Url module:reports path:/reports spec-version:2.5]] Servlet failed with Exception
cl.xxx.yyy.Exception: java.util.concurrent.RejectedExecutionException
at cl.xxx.yyy.servlet.Worker.doGet(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3717)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
Caused by: java.util.concurrent.RejectedExecutionException
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1774)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:768)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:656)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:92)
at cl.xxx.yyy.zzz.aaa.getDocument(aaa.java:252)
at cl.xxx.yyy.bbb.processId(bbb.java:941)
at cl.xxx.yyy.zzz.getResultsById(zzz.java:692)
at cl.xxx.yyy.zzz.getResults(zzz.java:384)
... 16 more