2013-08-24 2 views
-1

Я пытаюсь запустить простое JMS-приложение, к сожалению получил NullPointException. Ниже приведены ссылки на файлы приложения:Получение NullPointerException при запуске простой JMS

1. Producer.java

2. SynchConsumer.java

Использованы инструменты: Затмение & GlassFish

следующее исключение

Exception in thread "main" java.lang.NullPointerException 
at coreservlets.Producer.main(Producer.java:96) 

Любая вспышка положить в это должно быть оценено.

+0

почему мой вопрос получить downvoted ????? – Rehme

+0

Идея - возможно, потому, что вы связались с кодом, а не отправляете его. В любом случае, похоже, что ваша конфигурация DI не подбирается. –

+0

Я ответил только потому, что у меня есть 5 минут, но вы получаете downvoted, потому что ваш вопрос очень плохо спросил. – Gianmarco

ответ

2

Если запустить автономное приложение без каких-либо контейнера вокруг него, то @Resource инъекции не будет работать. Вместо этого вы должны сделать вручную JNDI Lookups как для фабрики соединений и очереди/тема:

Пример:

final Properties initialContextProperties = new Properties(); 

    final String factory = "jms/ConnectionFactory"; 
    final String queueName = "jms/Queue"; 

    // 

    final InitialContext ic = new InitialContext(initialContextProperties); 

    final QueueConnectionFactory qcf = (QueueConnectionFactory) ic 
      .lookup(factory); 
    final Queue queue = (Queue) ic.lookup(queueName); 

Что касается конфигурации InitialContext, смотрите здесь: Glassfish V3.x and remote standalone client

2
connectionFactory.createConnection(); 

connectionFactory, даже если статический, никогда не инициализируется. По этой причине он равен нулю, и вы получаете нулевой указатель, когда пытаетесь получить доступ к методу внутри него.

Два способа крепления.

Если метод является статическим, не объявлять вар, просто позвоните:

ConnectionFactory.createConnection(); 

Если метод не является статическим (странно, для класса, который является статическим), вы должны сделать что-то вроде :

private ConnctionFactory connectionFactory = new ConnectionFactory(); 
Смежные вопросы