2012-07-09 8 views
6

Chúng tôi có một ứng dụng được viết vào mùa xuân 3.0. Tôi nhận thấy rằng @Async không hoạt động. Tôi đã tìm kiếm xung quanh và nhận thấy rằng tôi cần thêmSpring Async không hoạt động

<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/> 
<task:executor id="myExecutor" pool-size="5"/> 
<task:scheduler id="myScheduler" pool-size="10"/> 

Nhưng khi tôi làm điều đó, tôi có ngoại lệ.

Đây là tập tin cấu hình của tôi:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:batch="http://www.springframework.org/schema/batch" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:int-jmx="http://www.springframework.org/schema/integration/jmx" 
xmlns:int-mail="http://www.springframework.org/schema/integration/mail" 
xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" 
xmlns:jms="http://www.springframework.org/schema/jms" xmlns:mvc="http://www.springframework.org/schema/mvc" 
xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task" 
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" 
xmlns:ws="http://www.springframework.org/schema/web-services" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.5.0.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
     http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/integration/jmx http://www.springframework.org/schema/integration/jmx/spring-integration-jmx.xsd 
     http://www.springframework.org/schema/integration/mail http://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd 
     http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd 
     http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd 
     http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsd 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
     http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd 
     http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services-1.5.xsd"> 

<bean id="applicationProperties" 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations"> 
     <list> 
      <value>classpath:version.properties</value> 
     </list> 
    </property> 
    <property name="ignoreResourceNotFound" value="true" /> 
    <property name="ignoreUnresolvablePlaceholders" value="true" /> 
</bean> 

<context:annotation-config /> 
<context:component-scan base-package="package" /> 

<aop:aspectj-autoproxy /> 

<bean id="globalConfig" class="package.GlobalConfig" /> 

<mvc:annotation-driven /> 

<amq:connectionFactory id="connectionFactory1" 
    brokerURL="tcp://localhost:61616?jms.useAsyncSend=true" /> 

<amq:connectionFactory id="connectionFactory2" 
    brokerURL="tcp://localhost:61616?jms.useAsyncSend=true" /> 

<bean id="singleConnectionFactory1" 
    class="org.springframework.jms.connection.SingleConnectionFactory" 
    p:targetConnectionFactory-ref="connectionFactory1" 
    p:reconnectOnException="true" /> 

<bean id="singleConnectionFactory2" 
    class="org.springframework.jms.connection.SingleConnectionFactory" 
    p:targetConnectionFactory-ref="connectionFactory2" 
    p:reconnectOnException="true" /> 

<bean id="cachingConnectionFactory1" 
    class="org.springframework.jms.connection.CachingConnectionFactory" 
    p:targetConnectionFactory-ref="singleConnectionFactory1" 
    p:sessionCacheSize="100" /> 

<bean id="cachingConnectionFactory2" 
    class="org.springframework.jms.connection.CachingConnectionFactory" 
    p:targetConnectionFactory-ref="singleConnectionFactory2" 
    p:sessionCacheSize="100" /> 

<bean id="jmsTemplate1" class="org.springframework.jms.core.JmsTemplate" 
    p:connectionFactory-ref="cachingConnectionFactory1" /> 

<bean id="jmsTemplate2" class="org.springframework.jms.core.JmsTemplate" 
    p:connectionFactory-ref="cachingConnectionFactory2" /> 

<bean 
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> 

<bean 
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass"> 
     <value> 
      org.springframework.web.servlet.view.tiles2.TilesView 
     </value> 
    </property> 
</bean> 

<bean id="messageSource" 
    class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <property name="basenames"> 
     <list> 
      <value>AppBundle</value> 
     </list> 
    </property> 
</bean> 

<!-- Declare the Interceptor --> 
<mvc:interceptors> 
    <bean class="package.PipelineInterceptor" /> 
</mvc:interceptors> 

<!-- Declare the Resolver --> 
<bean id="localeResolver" 
    class="org.springframework.web.servlet.i18n.SessionLocaleResolver" /> 




<bean id="tilesConfigurer" 
    class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
    <property name="definitions"> 
     <list> 
      <value>/WEB-INF/tiles.xml</value> 
     </list> 
    </property> 
</bean> 



<bean id="otherViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver" 
    p:order="1" p:location="/WEB-INF/views.xml" /> 


</beans> 

Dưới đây là ngoại lệ tôi nhận được:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'locationBrowserController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private package.srv.homepage.impl.HomepageSrvImpl package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl; nested exception is java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) 
at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5015) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5302) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:662) 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private package.srv.homepage.impl.HomepageSrvImpl package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl; nested exception is java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:502) 
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282) 
... 29 more 
Caused by: java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) 
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) 
at java.lang.reflect.Field.set(Field.java:657) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:498) 
... 31 more 
Jul 9, 2012 2:13:25 PM org.apache.catalina.core.StandardContext loadOnStartup 
SEVERE: Servlet threw load() exception 
java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) 
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) 
at java.lang.reflect.Field.set(Field.java:657) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:498) 
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) 
at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5015) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5302) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:662) 
Jul 9, 2012 2:13:25 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-8080"] 
Jul 9, 2012 2:13:25 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"] 
Jul 9, 2012 2:13:25 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 14033 ms 
Jul 9, 2012 2:13:25 PM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'expresso' 
Jul 9, 2012 2:13:26 PM org.apache.catalina.core.ApplicationContext log 
SEVERE: StandardWrapper.Throwable 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'locationBrowserController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private package.srv.homepage.impl.HomepageSrvImpl package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl; nested exception is java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) 
at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185) 
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:857) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:662) 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private package.srv.homepage.impl.HomepageSrvImpl  package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl; nested exception is java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field  package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:502) 
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282) 
... 33 more 
Caused by: java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) 
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) 
at java.lang.reflect.Field.set(Field.java:657) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:498) 
... 35 more 
Jul 9, 2012 2:13:26 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Allocate exception for servlet expresso 
java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) 
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) 
at java.lang.reflect.Field.set(Field.java:657) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:498) 
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) 
at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185) 
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:857) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:662) 

Bất kỳ đề nghị?

+0

Vui lòng chỉnh sửa tệp cấu hình của bạn chỉ với các phần có liên quan. Bạn sẽ thấy rằng chúng tôi không muốn lội qua hàng tấn mã không cần thiết để tìm các dòng liên quan đến vấn đề của bạn. –

+0

lol! 'Spring Async không hoạt động' –

Trả lời

4

Đối @Async làm việc (tôi giả sử cấu hình chú thích-based), bạn cần phải làm 2 việc:

  1. <task:annotation-driven/> trong cấu hình của bạn
  2. phương pháp công cộng chú thích với @Async

... và đó là về nó.

Ngoại lệ của bạn không cho biết rằng @Async không hoạt động. Nó chỉ ra rằng có một vấn đề autowiring với trường HomepageSrvImpl.

0

Phần này từ theo dõi ngăn xếp cho biết lỗi là gì. Trang chủ của trườngSrvImpl phải thuộc loại giao diện không phải là lớp bê tông. Nếu bạn không thể tìm ra thêm định nghĩa của LocationBrowserController và HomepageSrvImpl - chỉ là lớp & phần tự động.

Caused by: java.lang.IllegalArgumentException: Can not set 
package.srv.homepage.impl.HomepageSrvImpl field 
package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
1

Tôi có cùng sự cố này ... Tôi có một sự khác biệt "IMPLS" thực hiện Giao diện mà tôi đang cố gắng tự động, vấn đề là tôi đã tự động triển khai chứ không phải giao diện .. ngay sau khi tôi bắt đầu autowiring giao diện (với một @ Qaulifier) ​​tất cả mọi thứ hoạt động A-OK !!!!

0

Tôi cũng gặp vấn đề tương tự.

Thêm thuộc tính proxy-target-class="true" to <task:annotation-driven/> sửa nó cho tôi. Định nghĩa của tôi trông giống như bây giờ:

<task:annotation-driven 
    executor="myExecuter" scheduler="myScheduler" proxy-target-class="true"/> 

Điều đó giải quyết được vấn đề trong trường hợp của tôi (sử dụng Spring 3.1.1). Xem Using @Transaction annotation with @Autowired - Spring để được giải thích.

2

Đây là câu hỏi cũ nhưng vì nó không có và chấp nhận câu trả lời cho đến nay, ở đây chúng tôi đi.

Bản chất của sự cố là cách cơ chế @Async hoạt động. Các gợi ý cho những gì đang xảy ra là một phần của stacktrace, cụ thể những gì được đánh dấu bằng đậm:

Nguyên nhân: java.lang.IllegalArgumentException: Không thể thiết lập lĩnh vực package.srv.homepage.impl.HomepageSrvImpl package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl đến $ Proxy24

gì đang xảy ra là, để có thể đánh chặn các gọi của phương pháp được đánh dấu bằng @Async, Spring cần phải tạo một Proxy cho nó.

Như được chỉ ra bởi người dùng "El Guapo" trong câu trả lời khác, có thể bạn đang khai báo loại thuộc tính tự động, không phải bằng cách sử dụng giao diện, nhưng sử dụng triển khai thực tế. (lưu ý rằng lỗi trong stackTrace không đặc biệt trỏ tới đối tượng đang được proxy, nhưng đối tượng cần phải có nó là autowired như một thuộc tính, nhưng nó vẫn chỉ xử lý sự cố của bạn theo đúng hướng).

Điều này hoạt động OK cho đến khi bạn bắt đầu sử dụng chú thích @Async, vì chú thích đó sẽ chạy nước rút để tạo proxy và không tự động chạy nó.

Tôi chưa thử nghiệm, nhưng tôi giả định điều này sẽ xảy ra với bất kỳ khía cạnh nào khác mà Spring cần để xen kẽ mã của bạn (ví dụ: @Transactional).

+0

@Arpit cảm ơn bạn đã chỉnh sửa. Tuy nhiên, tôi đã báo hiệu một phần quan trọng của câu trả lời bằng chữ in đậm (chú ý nó nói trên văn bản ở trên nó "... in đậm", và bây giờ nó bị mất, bởi vì trích dẫn bạn đặt không xử lý in đậm một cách chính xác. ! – jotadepicas