2012-01-18 46 views
4

我試圖運行與JMS教程,我有一個問題。我正在使用帶有最新JavaEE SDK的最新Glassfish版本。我創建的GlassFish管理控制檯ConnectionFactory資源,然後嘗試使用下面的調用初始化它的代碼:JMS ConnectionFactory空指針異常

@Resource(mappedName = "jms/ExampleConnectionFactory") 
private static ConnectionFactory connectionFactory; 

但我在下面的行獲得NullPointerException

Connection connection = connectionFactory.createConnection(); 

我該如何解決這個問題?提前致謝。

+0

  • 庫添加到您的項目(調整路徑)?如果您處於會話bean,消息驅動的bean或Web組件中,請不要聲明資源static:http://docs.oracle.com/javaee/6/tutorial/doc/bncgl.html#bncgm – perissf 2012-01-18 16:50:49

  • +0

    @perissf,我已經刪除了靜態分類器,但這並沒有解決問題,connectionFactory仍然爲空。 – Egor 2012-01-19 06:25:23

    +0

    它應該工作。你確定你使用正確的進口嗎?您可以發佈更多信息/關於如何在GlassFish中設置ConnectioFactory的詳細信息? – perissf 2012-01-19 07:14:55

    回答

    0

    我在嘗試讓RESTful Web服務將消息放入JMS隊列時遇到了此問題。

    對我來說,我在這裏遵循本教程(http://www.tricoder.net/blog/?p=128),我需要在我的public class...代碼上面放置@Stateless註釋。

    出於某種原因(我不知道爲什麼,因爲我完全是新手),@Stateless是依賴注入工作所必需的。 (它說,在上面的來源)

    編輯:即使與此,同時開發我的應用程序,我有時會有NullPointerException。重新啓動Glassfish會在發生這種情況時解決問題。

    0

    JMS消費者,

    嘗試puting的@Stateless註解到您的類並添加javax.ejb.Stateless封裝庫。

    我希望你覺得這個很有用。

    0

    你需要做兩件事情:

    1. 指定屬性的InitialContext:

      屬性道具=新特性(); props.setProperty(Context.INITIAL_CONTEXT_FACTORY,「com.sun.enterprise.naming.SerialInitContextFactory」); 上下文initialContext = new InitialContext(props);如果您使用的是資源

    C:\installs\glassfish\glassfish-4.1\glassfish\lib\gf-client.jar