Sto provando a creare semplicemente la connessione con ActiveMQ utilizzando JNDI. Utilizzo di ActiveMQ tramite JNDI
devo
Coda di nome 'example.A'.
Secondo ActiveMQ documentation touching JNDI, se desidero utilizzare ConectionFactories e Queues (argomenti) tramite JNDI, devo inserire il file jndi.properties sul mio classpath. Come ho capito, activeMQ classpath è la directory% activemq%/conf per impostazione predefinita. Non l'ho cambiato Così ho questa proprietà per la mia coda:
queue.MyQueue = example.A
Ho creato classe client java per ActiveMQ che usa JNDI come di seguito:
Properties jndiParameters = new Properties() ; jndiParameters.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory"); jndiParameters.put(Context.PROVIDER_URL, "tcp://localhost:61616"); Context context = new InitialContext(jndiParameters); ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("ConnectionFactory"); Queue queue = (Queue) context.lookup("MyQueue");
ma non riesce a trovare la mia coda, genera un'eccezione: javax.naming.NameNotFoundException: MyQueue
Dove sono i miei ritmi?
Ho un problema simile, posso configurare jndi url e factory di connessione ma non posso fornire ulteriori proprietà. In questo modo sembra che l'endpoint della coda non sia definito. Funziona se uso dynamicQueue/Test, ma dovrebbe anche essere possibile indirizzare le destinazioni con nome statico? – eckes