Estoy tratando de buscar un QueueConnectionFactory
y Queue
a través del JNDI de Geronimo. El Queue
se devuelve bien, pero la búsqueda QueueConnectionFactory
siempre devuelve nulo. No arroja un NamingException
, que es lo que esperaría si el nombre JNDI fuera incorrecto.¿Por qué mi búsqueda JNDI para QueueConnectionFactory devuelve nulo?
¿Alguien puede ver lo que estoy haciendo mal? El código de prueba por debajo de las salidas:
true false
import javax.jms.Queue;
import javax.jms.QueueConnectionFactory;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class JndiTest
{
private final static String QUEUE_NAME = "jca:/org.apache.geronimo.configs/activemq-ra/JCAAdminObject/SendReceiveQueue";
private final static String FACTORY_NAME = "jca:/org.apache.geronimo.configs/activemq-ra/JCAManagedConnectionFactory/DefaultActiveMQConnectionFactory";
public static void main(String[] args) throws NamingException
{
InitialContext ctx = new InitialContext();
QueueConnectionFactory factory = (QueueConnectionFactory) ctx.lookup(FACTORY_NAME);
Queue queue = (Queue)ctx.lookup(QUEUE_NAME);
System.out.println(factory == null);
System.out.println(queue == null);
}
}
En caso de que se hace una diferencia: He añadido openejb-cliente-3.0.1.jar, geronimo-ejb_3.0_spec-1.0.1.jar y activemq -núcleo-4.1.2-G20090207.jar a mi camino de clase, y mi archivo jndi.properties tiene las propiedades:
java.naming.factory.initial = org.apache.openejb.client.RemoteInitialContextFactory java.naming.provider.url = ejbd://127.0.0.1:4201
Wow. Gracias por la respuesta reflexiva y completa. –