Vraptor -Exceção ao injetar uma classe com @component em um construtor junto com TaskScheduler

Tenho componente que executa uma tarefa de acordo com o agendamento. Está ocorrendo a exceção abaixo ao subir a app, mas se retiro o ProdutoDao do construtor, app sobe normalmente.
Mas esse ProdutoDao funciona certinho em outra classe que é anotada com @Resource

Alguém tem uma dica?

@Component
@ApplicationScoped
public class PrecoTaskReader implements ApplicationTask {

	private static final TimeZone TIME_ZONE = TimeZone.getTimeZone("America/Sao_Paulo");
	private static final String SCHEDULE_PATTERN = "0 * 18 * * *";
	private ProdutoDao produtoDao;

	public PrecoHistoricoTaskReader(TaskScheduler scheduler, ProdutoDao produtoDao) {
		super();
		this.produtoDao=produtoDao;
		this.schedule(scheduler);
	}

	@Override
	public void schedule(TaskScheduler scheduler) {
		scheduler.schedule(this, new CronTrigger(SCHEDULE_PATTERN, TIME_ZONE));
	}

ProdutoDaoImp:

@Component public class ProdutoDaoImp implements ProdutoDao { ... }

Exceção:

15:17:10,419 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/precohistorico]] (MSC service thread 1-2) Exception starting filter vraptor: java.lang.UnsupportedOperationException at java.util.AbstractMap.put(AbstractMap.java:203) [rt.jar:1.7.0_04] at org.springframework.web.context.request.FacesRequestAttributes.setAttribute(FacesRequestAttributes.java:121) [spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:44) [spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:844) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:786) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1003) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:907) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE] at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.start(SpringBasedContainer.java:106) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:87) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:108) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:102) [vraptor-3.4.1.jar:] at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3269) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContext.start(StandardContext.java:3865) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_04] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_04] at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_04]

É por que o ProdutoDAO é um @RequestScoped (valor default quando você não especifica o escopo).

Quando ele é request, ele depende de uma requisição para ser inicializado.

Ou seja, o seu PrecoTaskReader está sendo inicializado junto com a aplicação e ainda não tem requisição nenhuma.

Nesse caso, receba todas as dependências que são @ApplicationScoped e inicialize ProdutoDAO na mão.

muito obrigado.coloquei tudo como @ApplicationScoped e resolveu

Não cara, se vc anotou produtoDao e sessionFactory com application scoped, vc vai passar a ter uma única session por aplicação. Pu seja, vai sobrecarrega-la… Aconselho a vc aquilo que eu disse la em cima, não tem problema fazer new produtoDao(sessionFactory.openSession());

tem problema dar esse openSession se vc não fechar a session. Não se esqueça de fechar!