我正在尝试在JBoss EAP 6.3.2上使用jnp协议连接JNDI。
我的代码是

Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,
        "org.jnp.interfaces.NamingContextFactory");
p.put(Context.URL_PKG_PREFIXES,
        "org.jboss.naming:org.jnp.interfaces");
p.put(Context.PROVIDER_URL, "jnp://127.0.0.1:1099");

InitialContext ctx = new InitialContext(p);
MyBeanHome home = (MyBeanHome) ctx
                .lookup("/MyApp/MyAppModule/MyBean!org.com.SesFacade.MyBeanHome");


但是,当我尝试使用jnp属性创建InitialContext对象时,出现异常。


  javax.naming.NoInitialContextException:无法实例化类:
  org.jnp.interfaces.NamingContextFactory [根异常是
  java.lang.ClassNotFoundException:
  org.jnp.interfaces.NamingContextFactory]

最佳答案

好吧,没人来回答,最后我找到了解决方案。我们需要使用remote协议而不是jnp,如下所示:

    Properties p = new Properties();
    p.put(Context.INITIAL_CONTEXT_FACTORY,
            "org.jboss.naming.remote.client.InitialContextFactory");
    p.put(Context.URL_PKG_PREFIXES,
            "org.jboss.as.naming.interfaces:org.jboss.ejb.client.naming");
    p.put(Context.PROVIDER_URL, "remote://localhost:4447");
    p.put("jboss.naming.client.ejb.context", true);
    InitialContext ctx = new InitialContext(p);

关于java - JBoss EAP 6-创建InitialContext时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36007698/

10-12 01:41