当前位置: 首页 > 知识库问答 >
问题:

javax。命名。简单jms应用程序中的NoInitialContextException

皇甫雨华
2023-03-14
import java.util.Properties;
import javax.jms.*;
import javax.naming.*;

public class TopicConsumer implements MessageListener  {


    public static void main(String[] args) throws JMSException, NamingException {
        System.out.println("------>STARTING JMS TopicConsumer<----");

        Context context= TopicConsumer.getInitialContext();

        System.out.println(">>>1<<<");
        TopicConnectionFactory topicConnectionFactory= (TopicConnectionFactory)context.lookup("ConnectionFactory");
        System.out.println(">>>2<<<");
        Topic topic= (Topic) context.lookup("Topic/AKSHAY");
        System.out.println(">>>3<<<");
        TopicConnection topicConnection= topicConnectionFactory.createTopicConnection();
        System.out.println(">>>4<<<");
        TopicSession topicSession= topicConnection.createTopicSession(false,TopicSession.AUTO_ACKNOWLEDGE);
        System.out.println(">>>5<<<");
        topicSession.createSubscriber(topic).setMessageListener(new TopicConsumer());
        System.out.println(">>>6<<<");
        topicConnection.start();
                System.out.println("------>Énding JMS TopicConsumer<----");
    }

    @Override
    public void onMessage(Message message) {
        try {
            System.out.println(">>>on msg<<<");
            System.out.println("Incoming message is"+((TextMessage)message).getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }

    public static Context getInitialContext() throws JMSException, NamingException{
        System.out.println(">>>7<<<");
        Properties props=new Properties();
        System.out.println(">>>8<<<");
        props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
        System.out.println(">>>9<<<");
        props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming");
        System.out.println(">>>10<<<");
        props.setProperty("java.naming.provider.url","localhost:1099");
        System.out.println(">>>11<<<");
        Context context= new InitialContext();
        System.out.println(">>>12<<<");
        return context;

    }

}

线程“main”中的异常javax.naming.NoFirst alContextException:需要在环境或系统属性中指定类名,或者作为小程序参数,或者在应用程序资源文件中指定类名:java.naming.factory.initialjavax.naming.spi.NamingManager.getjavax.naming.的初始上下文(未知源)ontext.getjavax.naming.的DefaultInitCtx(未知源)ontext.getURLOrDefaultInitCtx(未知源)javax.naming.的初始ontext.lookup(未知源)在TopicProducer.main(TopicProducer.java:19)

我是Jms新手。我的代码是这样的。异常是命名异常:我似乎在设置JNDI或类路径时遇到了问题。我已经包含了以下JMS。classpath或JNDI中的jar文件问题。。。?使用Eclipse Juno Jboss 5.0和JDK 1.7

共有1个答案

景星光
2023-03-14

您可能在创建上下文时忘记了包含属性。

因此

Context context= new InitialContext();

尝试

Context context= new InitialContext(properties);
 类似资料:
  • 我为Rails配置Devise gem,在代码中看起来不错,但当我尝试注册新用户时,我遇到了问题。在注册表单中设计显示通知: 请查看以下问题: 但仅此而已。没什么特别的消息。我应该先找哪里?这样的东西怎么调试?有什么建议吗? 从rails服务器登录: 已于2014-09-14 17:09:13 0200开始对127.0.0.1进行POST“/auth/register”处理,由device::re

  • 在本章中,我们将了解如何在FuelPHP框架中创建一个简单的应用程序。 如前所述,您知道如何在Fuel中创建新项目。 我们可以举一个员工细节的例子。 让我们首先使用以下命令创建一个名为Employee的项目。 oil create employee 执行命令后,将使用以下file structure创建employee项目 - employee ├── CHANGELOG.md ├── co

  • 免责声明:我对Java很陌生,但我一直在建设。NET应用程序13年。 我正在尝试构建这个Java应用程序,它可以为教程做一些基本的计算。老实说,这不是一个很大的程序,但我甚至不能把它放到

  • 我没有找到有用的信息,如何编程或使用设备的设置删除特定的应用程序从白名单。 在Android6.0中引入了打瞌睡模式,在列出的同时,最后一个术语允许忽略部分打瞌睡模式。 要将应用程序放入白名单中,应用程序需要执行代码: 我尝试了下一个动作来将该应用程序从白名单中删除,它刚刚被放置,但没有什么帮助我: 在设置中清除数据应用程序 删除应用程序并重新安装 真正的帮助是改变应用程序的包名。我有一个意见,如

  • 我在mongoDB 2.6.5和grails 2.4.4中遇到了一个无法解决的问题。为了隔离问题,我创建了一个简单的2.4.4 grails应用程序,安装了grails mongob插件(编译": mongob: 3.0.2"),注释掉Hibernate依赖项,添加了我的mongob数据源,并设置了一个简单的域类(com.nerds.Nerd)。当我生成-all然后启动应用程序并导航到NerdCo

  • 初始化应用 让我们来开发一个简单的应用,通过这个应用可以学习到开发单页面应用所需的主要知识。 首先在项目文件夹下创建应用的入口文件 index.html: <!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scal