2008-10-10 6 views
5

Мне нужно запустить JNDI-провайдер без накладных расходов на контейнер J2EE. Я попытался следовать указаниям в этом article, который описывает (на странице 3) именно то, что я хочу сделать. К сожалению, эти направления терпят неудачу. Мне пришлось добавить jboss-common.jar в мой classpath тоже. После того, как я сделал это, я получаю трассировку стека:JNDI без контейнера J2EE (с JNP? Возможно, какой-то другой провайдер?)

$ java org.jnp.server.Main 
0 [main] DEBUG 
org.jboss.naming.Naming - Creating 
NamingServer stub, theServer=null,rmiPort=0,clientSocketFactory=null,[email protected]d093076[bindAddress=null] 
Exception in thread "main" 
java.lang.NullPointerException 
    at org.jnp.server.Main.getNamingInstance(Main.java:301) 
    at org.jnp.server.Main.initJnpInvoker(Main.java:354) 
    at org.jnp.server.Main.start(Main.java:316) 
    at org.jnp.server.Main.main(Main.java:104) 

Я надеюсь, чтобы сделать эту работу, но я хотел бы также быть открытыми для других легких автономных поставщиков JNDI. Все это должно сделать работу ActiveMQ, и если кто-то может предложить другого легкого JMS-провайдера, который хорошо работает за пределами vm, клиенты находятся без полномасштабного сервера приложений, который тоже будет работать.

ответ

6

Apache ActiveMQ уже поставляется с интегрированным облегченным поставщиком JNDI. См. these instructions on using it.

В основном вы просто добавляете файл jndi.properties в путь к классам, и все готово.

java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory 

# use the following property to configure the default connector 
java.naming.provider.url = failover:tcp://localhost:61616 

# use the following property to specify the JNDI name the connection factory 
# should appear as. 
#connectionFactoryNames = connectionFactory, queueConnectionFactory, topicConnectionFactry 

# register some queues in JNDI using the form 
# queue.[jndiName] = [physicalName] 
queue.MyQueue = example.MyQueue 


# register some topics in JNDI using the form 
# topic.[jndiName] = [physicalName] 
topic.MyTopic = example.MyTopic 
1

JBoss JMQ также может работать только с MicroKernel и с минимальным набором библиотек. У установщика JBoss AS есть опции для «профилей», один из которых предназначен для автономного JMQ. Он также позволяет вам выбирать компоненты (хотя это слишком сильно не помогает вам с зависимостями). Вы пытались запустить установщик?

+0

Это хорошее предложение, но мне действительно нужно уйти от JBoss, если это вообще возможно. Если я не смогу уйти от него, я определенно пошлю его как можно больше, как вы предложили. – Benson 2008-10-13 22:17:38

2

Используйте jndi.properties файл, как это:

java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory 

# use the following property to configure the default connector 
java.naming.provider.url=tcp://jmshost:61616 

# use the following property to specify the JNDI name the connection factory 
# should appear as. 
#connectionFactoryNames = connectionFactory, queueConnectionFactory, topicConnectionFactry 

# register some queues in JNDI using the form 
# queue.[jndiName] = [physicalName] 
#queue.MyQueue = example.MyQueue 


# register some topics in JNDI using the form 
# topic.[jndiName] = [physicalName] 
topic.myTopic = MY.TOPIC 

Убедитесь, что этот файл находится в пути к классам. Тогда вы можете поиск в тему/очереди, как это (минус соответствующего Try/фиксаторы):

context = new InitialContext(properties); 

context = (Context) context.lookup("java:comp/env/jms"); 

topicConnectionFactory = (TopicConnectionFactory) context.lookup("ConnectionFactory"); 

topic = (Topic) context.lookup("myTopic"); 
+0

Обратите внимание, что поставщик JNDI, который вы используете, - это не простой JNDI, но ящик JNDI, который поставляется с ActiveMQ :). См. Название класса * java.naming.factory.initial * entry :) – 2008-10-13 09:11:40

+0

Ничего себе, вы правы. Я думал, что простая работа была выполнена. Мы использовали его в проекте уже для поиска JDBC DataSource. Я исправил свою запись. – 2008-10-14 00:00:59

 Смежные вопросы

  • Нет связанных вопросов^_^