Jms no glassfish

2 respostas
J

oi galera,

estou tentando implementar uma fila onde vou guardar uns XMLs.
Eu tenho uma aplicação web que recebe um xml e terá que adicionar na fila...até ser processada.

No glassfish, eu criei uma ConnectionFactory e uma Queue
jms/NFConnectionFactory
jms/NFQueue
Meu glassfish-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
    <resource-ref>
        <res-ref-name>jms/NFConnectionFactory</res-ref-name>
        <jndi-name>jms/NFConnectionFactory</jndi-name>
    </resource-ref>
  <message-destination-ref>
    <message-destination-ref-name>jms/NFQueue</message-destination-ref-name>
    <jndi-name>jms/NFQueue</jndi-name>
  </message-destination-ref>
  <class-loader delegate="true"/>
  <jsp-config>
    <property name="keepgenerated" value="true">
      <description>Keep a copy of the generated servlet class' java code.</description>
    </property>
  </jsp-config>
  <parameter-encoding default-charset="UTF-8"/>
</glassfish-web-app>

E a minha classe:

@Stateless
public class SenderQueue implements Serializable
{
  @Resource(mappedName = "jms/NFConnectionFactory")
  private static ConnectionFactory connectionFactory;
  @Resource(mappedName = "jms/NFQueue")
  private static Queue queue;

  public void produceMessages(byte[] xml)
  {
    MessageProducer messageProducer;
    ObjectMessage objectMessage;
    try
    {
      Connection connection = connectionFactory.createConnection(); //aqui estoura NULLPOINTEREXCEPTION porque a conexão não foi criada
      Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
      messageProducer = session.createProducer(queue);
      objectMessage = session.createObjectMessage();

      objectMessage.setObject(xml);
      
      messageProducer.send(objectMessage);

      messageProducer.close();
      session.close();
      connection.close();
    }
    catch (JMSException e)
    {
      e.printStackTrace();
    }
  }

Mas ao chamar o método createConnection ele estoura NullPointerException. Ta faltando alguma coisa pra conseguir buscar essa conexao? :shock: :?:

2 Respostas

renanreismartins

oi javacba com ctza sua factory nao está sendo injetada, da algum erro qdo sobe a app?

detalhe, os atributos dessa classe sao static, tem alguma necessidade disso?

grande abrasss

J

Nao da nenhum erro no log e a aplicacao roda normal…soh quando vai criar a conexao que estoura o erro por estar nulo

Criado 10 de janeiro de 2013
Ultima resposta 10 de jan. de 2013
Respostas 2
Participantes 2