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

尝试从Glassfish获取JMS资源时,javax.naming.noInitialContextException

宇文金鑫
2023-03-14

我是JMS新手,正在尝试使用Glassfish应用服务器执行我第一个JMS程序。

我在Glassfish管理控制台中创建了连接工厂[JMS/MyQueueFactory]和目标资源[JMS/MyQueue],如下所示:

以下是我的代码:

import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.InitialContext;

public class MyReceiver 
{
    public static void main(String[] args) 
    {
        try
        {
            InitialContext ctx = new InitialContext();
            QueueConnectionFactory f = (QueueConnectionFactory)ctx.lookup("jms/MyQueueFactory"); **// Getting error here**
            QueueConnection con = f.createQueueConnection();
            con.start();

            QueueSession session = con.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

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

            QueueReceiver receiver = session.createReceiver(t);

            MyListener listner = new MyListener();
            receiver.setMessageListener(listner);

            System.out.println("Receiver1 is ready, waiting for messages...");  
            System.out.println("press Ctrl+c to shutdown...");

            while(true)
            {
                Thread.sleep(1000);
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

请让我知道我在这里错过了什么。

多谢了。

共有1个答案

闾丘鸣
2023-03-14

由于您是从IDE运行应用程序,因此需要一种连接到Glassfish服务器的方法。

为此,您必须在环境变量中设置一些属性,也可以创建properties对象

    Properties props = new Properties();
    props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
    props.put(Context.URL_PKG_PREFIXES, "com.sun.enterprise.naming");
    props.put(Context.PROVIDER_URL, "http://localhost:4848/");

    InitialContext initialContext;
    try {
        initialContext = new InitialContext(props);

使用该对象可以初始化上下文。

 类似资料:
  • 我发现了很多与我的问题类似的问题,但我没有得到解决方案,这就是为什么我在这里问。 我刚刚开始学习使用React进行前端开发。我已经为在不同端口运行的前端和后端制作了单独的应用程序。 后端:Laravel框架应用程序运行于 前端:在运行的React应用程序 我有一张这样的表格: 我一直在沿着路线走, 这里是 CORS 中间件, 最后这里是用户创建函数 当我从反应应用程序发送帖子请求时,控制台显示以下

  • 我已经找到了这个已经帮了我的忙,但是在我的代理中添加了这样的标题之后。js公司: 在fetch()中,我还添加了标头以确保其正常工作: 我仍然收到错误:TypeError:“尝试获取资源时出现NetworkError。” <代码>此。setState({contacts:data})应该存储由后端Java程序交付的JSON对象。JSON对象位于localhost:8080/api,只是字符串 我的

  • 问题内容: 我一直在看代码,并且看到了尝试资源的机会。我以前使用过标准的try-catch语句,看起来它们在做同样的事情。所以我的问题是“ 尝试使用资源”与“尝试捕获 ”之间的区别是什么,哪个更好。 这是尝试使用资源: 问题答案: 尝试使用资源的重点是确保可靠地关闭资源。 当你不使用try-with-resources时,存在一个潜在的陷阱,称为异常屏蔽。当try块中的代码引发异常,而finall

  • 我无法在SpringBoot中呈现html页面。这是密码... 但当我点击http://localhost:8080/home时,它会显示以下日志

  • 问题内容: 当我尝试获取我的keyChain值时,它返回一个包含以下内容的字符串: 因此,我尝试使用循环删除“可选”: 但我得到一个错误:NSString没有名为“下标”的成员 KeychainService类: 我只是不想删除str周围的Optional东西,还是有更好的方法呢? 我从以下代码中获取了代码: http://matthewpalmer.net/blog/2014/06/21/exa

  • 问题内容: 我正在使用以下方法从WildFly中的WAR文件获取资源: 当应用程序作为爆炸式WAR部署时,它可以工作。 它也曾经 与压缩的WAR一起 使用 。昨天,我在Eclipse中进行了项目的干净和重建,但它刚刚停止工作。 当我检查资源根目录时: 我得到这个: 因此,难怪它不起作用。它可能与JBoss模块加载有关,但是我不知道这是错误还是正常行为。 我在StackOverflow上发现了各种类