Ejb 3 + jms

0 respostas
J

galera,

alguem sabe me dizer porque da erro de fila não encontrada?

Eu mapeiei esse arquivo no jboss (dentro da pasta deploy)
<?xml version="1.0" encoding="UTF-8"?>
<server>
	<mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.mq.destination:service=Queue,name=fila-email">
		<attribute name="JNDIName">fila-email</attribute>
		<depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
	</mbean>
</server>
ele carrega certinho qdo eu subo o jboss
22:04:07,080 INFO  [ContainerDependencyMetaData] addJndiDependency, JndiDependencyMetaData@7551313a{fila-email}
22:04:13,169 INFO  [QueueService] Queue[fila-email] started, fullSize=200000, pageSize=2000, downCacheSize=2000
22:04:13,278 INFO  [ConnectionFactory] Connector bisocket://127.0.0.1:4457 has leasing enabled, lease period 10000 milliseconds
22:04:13,278 INFO  [ConnectionFactory] org.jboss.jms.server.connectionfactory.ConnectionFactory@619988c4 started
22:04:13,278 INFO  [QueueService] Queue[/queue/DLQ] started, fullSize=200000, pageSize=2000, downCacheSize=2000
mas dai qdo vou executar, da esse erro:
22:04:50,159 ERROR [TxPolicy] javax.ejb.EJBTransactionRolledbackException: Unable to inject jndi dependency: env/br.com.condo.impl.MensageiroBean/fabrica into property br.com.condo.impl.MensageiroBean.fabrica: QueueConnectionFactory not bound
22:04:50,159 ERROR [STDERR] 02/03/2011 22:04:50 javax.faces.event.MethodExpressionActionListener processAction
GRAVE: 'javax.ejb.EJBTransactionRolledbackException' recebido ao invocar escuta de ação '#{usuarioMB.cadastrarUsuario}' para o componente 'j_idt45'
22:04:50,175 ERROR [STDERR] 02/03/2011 22:04:50 javax.faces.event.MethodExpressionActionListener processAction
GRAVE: javax.ejb.EJBTransactionRolledbackException: Unable to inject jndi dependency: env/br.com.condo.impl.MensageiroBean/fabrica into property br.com.condo.impl.MensageiroBean.fabrica: QueueConnectionFactory not bound
	at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:115)
	at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130)
	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:194)
	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.RoleBasedAuthorizationInterceptorv2.invoke(RoleBasedAuthorizationInterceptorv2.java:201)
	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.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
	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.session.SessionSpecContainer.invoke(SessionSpecContainer.java:219)
	at org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerBase.invoke(ProxyInvocationHandlerBase.java:261)
	at org.jboss.ejb3.proxy.handler.session.SessionSpecProxyInvocationHandlerBase.invoke(SessionSpecProxyInvocationHandlerBase.java:101)
	at $Proxy162.enviaMensagem(Unknown Source)
Caused by: javax.naming.NamingException: Could not dereference object [Root exception is javax.naming.NameNotFoundException: QueueConnectionFactory not bound]
	at org.jnp.interfaces.NamingContext.resolveLink(NamingContext.java:1348)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:813)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:682)
	at org.jboss.ejb3.JndiUtil.lookup(JndiUtil.java:44)
	at org.jboss.injection.JndiPropertyInjector.lookup(JndiPropertyInjector.java:75)
meu ejb ta assim:
@Stateless
@Local(Mensageiro.class)
public class MensageiroBean implements Mensageiro 
{

	private static final long serialVersionUID = 1L;
	
	@Resource(mappedName="QueueConnectionFactory")
	private QueueConnectionFactory fabrica;
	@Resource(mappedName="fila-email")
	private Queue queue;

	public void enviaMensagem(EmailVo emailVo)
	{
		try
		{
			Connection conexao = this.fabrica.createConnection();
			Session sessao = conexao.createSession(true, Session.AUTO_ACKNOWLEDGE);
			MessageProducer produtor = sessao.createProducer(this.queue);

			TextMessage textMessage = sessao.createTextMessage();
			textMessage.setText(emailVo.getCorpoEmail());
			
			System.out.println("email sendo enviado");
			produtor.send(textMessage);
			produtor.close();
			conexao.close();
		}
		catch(JMSException e)
		{
			e.printStackTrace();
			throw new EJBException(e);
		}
	}
}
meu MDB:
@MessageDriven(activationConfig={@ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"),
		@ActivationConfigProperty(propertyName="destination", propertyValue="fila-email")})
public class Email implements MessageListener 
{
	/**
     * Default constructor. 
     */
    public Email() 
    {
    }
	
	/**
     * @see MessageListener#onMessage(Message)
     */
    public void onMessage(Message message) 
    {
    	try
    	{
    		String texto = ((TextMessage) message).getText();
        	System.out.println("Fila de Email processando informação: " + texto);
    	}
    	catch(JMSException e)
    	{
    		e.printStackTrace();
    		throw new EJBException(e);
    	}
    }

}

Alguem tem uma ideia pq nao consegue achar essa fila?

Criado 1 de março de 2011
Respostas 0
Participantes 1