2013-08-24 48 views
-1

我試圖運行一個簡單的JMS應用程序,可悲的是得到了NullPointException。以下是鏈接到應用程序的文件:使用運行簡單的JMS時得到NullPointerException

1. Producer.java

2. SynchConsumer.java

工具:Eclipse的& GlassFish的

以下是例外

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

任何閃光投入這將不勝感激。

+0

爲什麼我的問題得到downvoted ????? – Rehme

+0

不知道 - 可能是因爲你鏈接了代碼而不是發佈它。無論如何,看起來你的DI配置沒有被拾起。 –

+0

我回答只是因爲我有5分鐘的時間,但是你會因爲你的問題非常糟糕而被低估。 – Gianmarco

回答

2

如果您運行的周圍沒有任何容器的獨立的應用程序,該@Resource注射將無法正常工作。相反,你必須同時爲連接工廠和隊列/主題做手工的JNDI查找:

例子:

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();