2014-06-05 165 views
0

當我嘗試在JMS中運行QUEUE:Producer代碼時拋出錯誤。Glassfish服務器JMS獨立隊列

了java.lang.RuntimeException:初始化ORB erorr javax.naming.NamingException中:查找在SerialContext [myEnv = {java.naming.factory.initial的= com.sun.enterprise.naming.impl失敗 'myQueueConnectionFactory'。 SerialInitContextFactory,java.naming.factory.url.pkgs = com.sun.enterprise.naming,java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [根異常是javax。 naming.NamingException:無法獲取SerialContext的SerialContextProvider [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory,java.naming.factory.url.pkgs = com.sun.enterprise。命名,java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [根異常是java.lang.RuntimeException:Orb初始化錯誤]]

我的代碼是:

//Create and start connection 
      InitialContext ctx=new InitialContext(); 
      QueueConnectionFactory f=(QueueConnectionFactory)ctx.lookup("myQueueConnectionFactory"); 
      QueueConnection con=f.createQueueConnection(); 
      con.start(); 
      //2) create queue session 
      QueueSession ses=con.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); 
      //3) get the Queue object 
      Queue t=(Queue)ctx.lookup("myQueue"); 
      //4)create QueueSender object   
      QueueSender sender=ses.createSender((t)); 
      //5) create TextMessage object 
      TextMessage msg=ses.createTextMessage(); 

回答

0

的問題是,你的應用程序無法查找()給定的JMS資源和JavaxNaming拋出異常。可能的原因:

- 我無法看到將連接信息(屬性)放到服務器的位置。通過調用不帶參數的InitialContext()構造函數,您不能說從哪個提供者URL和安全憑證中嘗試查找工廠和目標。 (如果我在你的問題或你的邏輯中丟失了某些東西,不好意思。)

- 您是否在服務器上創建了JMS資源?

-Glassfish通常存儲在文件夾JMS工廠和destiantions所以要查找的路徑可能有是:

QueueConnectionFactory f=(QueueConnectionFactory)ctx.lookup("jms/myQueueConnectionFactory"); 
Queue t=(Queue)ctx.lookup("jms/myQueue"); 

您可以檢查現有的資源,並使用列表JMS資源子命令其路徑在遠程asadmin模式下。

有關JMS資源創建和更新的更多信息:look here