Problema com TimerService

Bom dia Pessoal,

         Gostaria de usar um timer service dentro de um ejb, ele esta sendo injetado atravez da anotacao @Resource, porem... estou tendo um macabro erro... irei postar meu codigo e stacktrace:
package fr.globalit.loja.ejb;

import java.util.Random;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerService;

import fr.globalit.loja.secao.CotadorDeMoeda;

@Stateless
@Remote(CotadorDeMoeda.class)
public class CotadorDeMoedaBean implements CotadorDeMoeda {

	private double fatorCotacao = 1.63;
	
	@Resource
	private TimerService timerService;
	
	@PostConstruct
	public void inicializa(){
		this.timerService.createTimer(3 * 1000, "timeout");
	}
	
	public double fazCotacao(String moedaOrigem, String moedaDestino, double quantia) {
		if("real".equals(moedaOrigem) && "dollar".equals(moedaDestino)){
			return quantia * this.fatorCotacao;
		}
		return 0;
	}
	
	@Timeout
	public void atualizaFatorDeConversao(Timer timer){
		this.fatorCotacao += (new Random().nextDouble() - 0.5)/100;
		System.out.printf("Atualizando fator de cotacao para : %3f", this.fatorCotacao);
	}
}

E aqui vai o erro que estou tendo, este é um exemplo que vi em uma apostila, e deveria funcionar, mas nao sei porque razao estou tendo este erro, se alguem souber o porque, fico realmente agradecido

Caused by: java.lang.RuntimeException: java.lang.IllegalStateException: TimerService.createTimer should not be access from this bean method: IN_EJB_CREATE
	at org.jboss.ejb3.EJBContainer.invokeCallback(EJBContainer.java:1123)
	at org.jboss.ejb3.EJBContainer.invokePostConstruct(EJBContainer.java:1133)
	at org.jboss.ejb3.EJBContainer.invokePostConstruct(EJBContainer.java:1144)
	at org.jboss.ejb3.pool.AbstractPool.create(AbstractPool.java:93)
	at org.jboss.ejb3.InfinitePool.get(InfinitePool.java:56)
	at org.jboss.ejb3.InfinitePool.get(InfinitePool.java:51)
	at org.jboss.ejb3.pool.ThreadlocalPool.create(ThreadlocalPool.java:53)
	at org.jboss.ejb3.pool.ThreadlocalPool.get(ThreadlocalPool.java:93)
	at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:58)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:421)
	at org.jboss.ejb3.session.InvokableContextClassProxyHack._dynamicInvoke(InvokableContextClassProxyHack.java:53)
	at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:91)
	at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
	at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:891)
	at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:744)
	at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:697)
	at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:524)
	at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:232)
	at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:211)
	at org.jboss.remoting.Client.invoke(Client.java:1724)
	at org.jboss.remoting.Client.invoke(Client.java:629)
	at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:60)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.security.client.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
	at $Proxy3.invoke(Unknown Source)
	at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
	at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
	at $Proxy2.fazCotacao(Unknown Source)
	at ClienteCotadorDeMoeda.main(ClienteCotadorDeMoeda.java:11)
	at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:72)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.security.client.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
	at $Proxy3.invoke(Unknown Source)
	at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
	at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
	at $Proxy2.fazCotacao(Unknown Source)
	at ClienteCotadorDeMoeda.main(ClienteCotadorDeMoeda.java:11)

Mais uma vez Obrigado Pessoal!

Antecipadamente Agradecido

André

O JBOSS ta “chiando” que voce ta acessando um metodo TimerService.createTimer dentro de um EJB create.

Isso é verdade, mas o estranho é que estou fazendo isso fora do construtor, ou seja, quando o metodo @PosConstruct é chamado as dependencias ja foram injetadas, nao deveria dar este erro, seria normal se fosse por exemplo no construtor, onde as injecoes ainda nao teriam acontecido, vou tentando por aqui e se achar uma solucao posto, mas ta mais pra cara de problema do jboss, no jira do jboss tinha um bug identico a este, so que era na versao 4.0 acho eu, estou usando a versao 5.1.

Obrigado

André

O mais engraçado de tudo… é que no jboss 4.2 esse codigo funciona perfeitamente… acho que vou ficar com a 4.2 mesmo… mesmo apesar dela nao implementar completamente a Java EE 5.

estou usando num pc o windows 7 e em outro o vista, todos 64 bits, eu queria mesmo era usar o glassfish, mas nao roda em nenhum dos dois, hehe

Alguma sujestao como servidor?

Abraços

André

Testei na versao 4.2 aqui e funcionou normalmente tb…

deve ser bug da versão do JBOSS mesmo.