gpt4 book ai didi

java - Websphere MQ 无法创建初始 JNDI 上下文

转载 作者:行者123 更新时间:2023-12-02 04:57:43 26 4
gpt4 key购买 nike

我正在尝试运行一个演示类 (JMSJNDIProducer.java),该类随 Websphere MQ 7.0 安装一起提供,位于“websphere 安装位置”\tools\jms\samples。我已启动并运行 Websphere,以下是我的 Websphere 配置...

  • 队列管理器名称:JMSDEMO
  • 队列管理器端口:1414
  • channel (默认):SYSTEM.DEF.CLNTCONN
  • 队列名称:JMSDEMO.QL
  • 如果需要更多信息,请告诉我...

我的代码在初始上下文创建期间失败,我对 Websphere MQ 非常陌生,不确定initialContextUrl 需要是什么?

public class JMS_JNDI_Websphere_Sample {

private static String initialContextUrl = "tcp://localhost:1414";

public static void main(String args[]) {

// Instantiate the initial context
String contextFactory = "com.sun.jndi.fscontext.RefFSContextFactory";
Hashtable<String, Object> environment = new Hashtable<String, Object>();
environment.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory);
environment.put(Context.PROVIDER_URL, initialContextUrl);
try {
Context context = new InitialDirContext(environment);
} catch (NamingException e) {
e.printStackTrace();
}
System.out.println("Initial context found!");

}
}

我收到以下异常。

    javax.naming.InvalidNameException: tcp://localhost:1414 [Root exception is java.net.MalformedURLException: unknown protocol: tcp]
at com.sun.jndi.fscontext.FSContextFactory.getFileNameFromURLString(FSContextFactory.java:119)
at com.sun.jndi.fscontext.RefFSContextFactory.createContext(RefFSContextFactory.java:41)
at com.sun.jndi.fscontext.RefFSContextFactory.createContextAux(RefFSContextFactory.java:47)
at com.sun.jndi.fscontext.FSContextFactory.getInitialContext(FSContextFactory.java:49)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:82)
at com.hcsc.jms.websphere.jndi.JMS_JNDI_Websphere_Sample.main(JMS_JNDI_Websphere_Sample.java:32)
Caused by: java.net.MalformedURLException: unknown protocol: tcp
at java.net.URL.<init>(URL.java:574)
at java.net.URL.<init>(URL.java:464)
at java.net.URL.<init>(URL.java:413)
at com.sun.jndi.fscontext.FSContextFactory.getFileNameFromURLString(FSContextFactory.java:117)
... 9 more

最佳答案

private static String initialContextUrl = "tcp://localhost:1414";

首先,我认为“tcp”不是一个有效值,如果是,您是否在端口 1414 上运行某些东西来回复 JNDI 查找请求?

其次,我认为您将 MQ 端口 1414 与 JNDI 查找混淆了。

第三,为什么不按照 JmsJndiProducer.java 中的示例并使用基于文件的 JNDI。

即使用 MQ Explorer 并选择“JMS 管理对象”,然后执行基于文件的 JNDI。

创建基于文件的 JNDI 后,该值将作为您的初始上下文。

关于java - Websphere MQ 无法创建初始 JNDI 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28615647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com