2015-08-10 2 views
5

Я получаю IllegalArgumentException при создании ThreadPoolExecutor следующим образом.Невозможно создать ThreadPoolExecutor из контекста приложения Spring

<bean id="processorQueue" class="java.util.concurrent.LinkedBlockingDeque"/> 
<bean id="processorThreadPool" class="java.util.concurrent.ThreadPoolExecutor"> 
     <constructor-arg index="0" type="int" value="10"/> 
     <constructor-arg index="1" type="int" value="20"/> 
     <constructor-arg type="long" value="1"/> 
     <constructor-arg> 
      <value type="java.util.concurrent.TimeUnit">MINUTES</value> 
     </constructor-arg> 
     <constructor-arg ref="processorQueue"/> 
</bean> 

Что я делаю неправильно? (Я использую Spring 3.2 с Java 8)

Это трассировка стека.

2015-08-10 14:20:14 DefaultListableBeanFactory doGetBean [http-nio-8080-exec-37] DEBUG: Returning cached instance of singleton bean 'processorQueue' 
2015-08-10 14:20:14 DispatcherServlet initServletBean [http-nio-8080-exec-37] ERROR: Context initialization failed 
java.lang.IllegalArgumentException 
    at org.springframework.asm.ClassReader.<init>(Unknown Source) 
    at org.springframework.asm.ClassReader.<init>(Unknown Source) 
    at org.springframework.asm.ClassReader.<init>(Unknown Source) 
    at org.springframework.core.LocalVariableTableParameterNameDiscoverer.inspectClass(LocalVariableTableParameterNameDiscoverer.java:110) 
    at org.springframework.core.LocalVariableTableParameterNameDiscoverer.getParameterNames(LocalVariableTableParameterNameDiscoverer.java:85) 
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:193) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1051) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:955) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:490) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:599) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:518) 
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:459) 
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1241) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1154) 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652) 
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1575) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1533) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

Я пробовал с передачей одинакового значения для corePoolSize и maximumPoolSize, но результат такой же.

+0

ваш код работал хорошо в моем веб-приложении, я использовал java 7, весна 4.0 –

+0

вы используете java 8? –

+0

Возможный дубликат: http://stackoverflow.com/questions/22730801/java-se-spring-data-hibernate –

ответ

2

От JavaDoc (1.8) можно увидеть следующее:

@throws IllegalArgumentException if one of the following holds:<br> 
{@code corePoolSize < 0}<br> 
{@code keepAliveTime < 0}<br> 
{@code maximumPoolSize <= 0}<br> 
{@code maximumPoolSize < corePoolSize} 

Я добавил ваш экстракт одного из моих приложений, и это работало нормально, пока я не изменил параметры нарушить одно из условий выше и, следовательно, вынуждающих исключение IllegalArgumentException. Порядок параметров тот же, что и Java 1.5, поэтому ваша конфигурация должна работать. Можете ли вы предоставить трассировку стека при запуске приложения?

+0

Деннис, пожалуйста, проверьте трассировку стека. – Somabrata

+0

Я пробовал это с Java 8 и Spring Context 3.2.14.RELEASE. Он все еще работает. Как описано в http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/migration-3.2.html, я не добавлял никаких зависимостей ASM напрямую. Помимо контекста, есть ли у вас какие-либо другие зависимости от пружины в вашем пути к классам, и используете ли вы последние, совсем недавние версии 3.2.14? –

+0

О, я использовал 3.2.2.RELEASE. Он отлично работает с 3.2.14.RELEASE. Спасибо, спасибо – Somabrata

1

Вы не указали свою настройку пути к классу, но, похоже, вы используете java 8 с пружиной 3.2, которая не поддерживает ее. обновление весны до 4.0

+0

Спасибо за информацию. Да, я использую Java 8. Я проверю с 4.0. – Somabrata

Смежные вопросы