Olá galera, beleza?
Estou seguindo a apostila da K19 sobre Integração de Sistemas com Webservices e JMS e estou com um problema.
Estou criando uma classe que envia uma mensagem para uma fila cadastrada no Glassfish, segundo a apostila seria apenas:
Criar a ConnectionFactory e a Fila no console de administração do Glassfish. OK
Criar um Java Project adicionado em Libraries o gf-client.jar que vem dentro da pasta modules do Glassfish. OK, adicionei o jar com o nome gf-client-module.jar
Porém ao executar a classe ocorre algumas exceptions.
package br.com.jms.emissores;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.InitialContext;
/**
* Classe para enviar mensagens para uma Fila
* @author carlos.pomari
*/
public class EnviaNovoPedido {
public static void main(String[] args) throws Exception {
// Serviço de nomes - JNDI
InitialContext ic = new InitialContext();
// Fábrica de conexões JMS
ConnectionFactory factory = (ConnectionFactory)
ic.lookup("jms/K19Factory");
// Fila
Queue queue = (Queue) ic.lookup("jms/pedidos");
// Conexão JMS
Connection connection = factory.createConnection();
// Sessão JMS
Session session = connection.createSession(false,
Session.CLIENT_ACKNOWLEDGE);
// Emissor de mensagens
MessageProducer sender = session.createProducer(queue);
// Mensagem
TextMessage message = session.createTextMessage();
message.setText("Uma pizza de 4 queijos e uma coca-cola 2L - " +
System.currentTimeMillis());
// Enviando
sender.send(message);
// Fechando
sender.close();
session.close();
connection.close();
System.out.println("Mensagem Enviada");
System.exit(0);
}
}
Erro na console:
15/07/2011 14:32:17 com.sun.enterprise.v3.server.CommonClassLoaderServiceImpl findDerbyClient
INFO: Cannot find javadb client jar file, derby jdbc driver will not be available by default.
15/07/2011 14:32:24 com.sun.enterprise.connectors.ActiveRAFactory createActiveResourceAdapter
GRAVE: RAR6001 : Class Not found : com.sun.messaging.jms.ra.ResourceAdapter
15/07/2011 14:32:24 com.sun.enterprise.connectors.ActiveRAFactory createActiveResourceAdapter
GRAVE:
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Error in creating active RAR
at com.sun.enterprise.connectors.ActiveRAFactory.createActiveResourceAdapter(ActiveRAFactory.java:109)
at com.sun.enterprise.connectors.service.ResourceAdapterAdminServiceImpl.createActiveResourceAdapter(ResourceAdapterAdminServiceImpl.java:212)
at com.sun.enterprise.connectors.ConnectorRuntime.createActiveResourceAdapter(ConnectorRuntime.java:378)
at com.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:108)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
at com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:556)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:514)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at br.com.jms.emissores.EnviaNovoPedido.main(EnviaNovoPedido.java:24)
Caused by: java.lang.ClassNotFoundException: com.sun.messaging.jms.ra.ResourceAdapter
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at com.sun.enterprise.connectors.ActiveRAFactory.createActiveResourceAdapter(ActiveRAFactory.java:101)
... 9 more
Exception in thread "main" javax.naming.NamingException: Lookup failed for 'jms/K19Factory' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NamingException: Failed to look up ConnectorDescriptor from JNDI [Root exception is com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Error in creating active RAR]]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at br.com.jms.emissores.EnviaNovoPedido.main(EnviaNovoPedido.java:24)
Caused by: javax.naming.NamingException: Failed to look up ConnectorDescriptor from JNDI [Root exception is com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Error in creating active RAR]
at com.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:115)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
at com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:556)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:514)
... 3 more
Caused by: com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Error in creating active RAR
at com.sun.enterprise.connectors.ActiveRAFactory.createActiveResourceAdapter(ActiveRAFactory.java:109)
at com.sun.enterprise.connectors.service.ResourceAdapterAdminServiceImpl.createActiveResourceAdapter(ResourceAdapterAdminServiceImpl.java:212)
at com.sun.enterprise.connectors.ConnectorRuntime.createActiveResourceAdapter(ConnectorRuntime.java:378)
at com.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:108)
... 6 more
Caused by: java.lang.ClassNotFoundException: com.sun.messaging.jms.ra.ResourceAdapter
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at com.sun.enterprise.connectors.ActiveRAFactory.createActiveResourceAdapter(ActiveRAFactory.java:101)
... 9 more
Informações adicionais.
IDE: Eclipse Helios
ServerWeb: Glassfish 3.1
Alguém poderia me ajudar? E, pergunta, existe alguma diferença entre "gf-client.jar" e "gf-client-module.jar"?