2014-06-05 112 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