【问题标题】:jboss 7.1 call ejb to jboss 4.2jboss 7.1 调用 ejb 到 jboss 4.2
【发布时间】:2012-11-06 16:21:35
【问题描述】:

所以我的应用程序是在 Jboss-server 7.1.1 final 上开发的,但需要在 Jboss-server 4.2.3 上引用 Ejb。 我调用 EJB 的代码是

String IP = "X.X.X.X";
String Port = "1234";
String Lookup = "dummy/dummy/dummy";

    Properties props = new Properties();
    props.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
    props.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
    String ejbServiceURL = "jnp://"+IP +":"+Port; 
    props.put("java.naming.provider.url", ejbServiceURL);

    try {
        log.debug("looking up ejb by servie url:"+ejbServiceURL);
        remoteEjb = (EjbRemote) new InitialContext(props).lookup(Lookup);            
        log.debug("found ejb from context returning it.");
    } catch (NamingException e) {
        log.error("exception operating on ejb bean:" + e, e);
    }

在 Jboss-4.2.3 应用程序环境中工作得非常好,但 remoteEjb 在 Jboss-7.1.1 Final 上总是返回 null

你能告诉我我做错了什么吗?

【问题讨论】:

    标签: jboss ejb jboss7.x


    【解决方案1】:

    EJB JNDI 查找不同于 JBoss 4.2.3 和 Jboss 7.1。 您在上面发布的代码适用于 JBoss 4.2.3,但不适用于 JBoss 7.1。 在 Jboss 7.1 中,您必须设置以下内容:

    Hashtable jndiProperties = new Hashtable();
    jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
    
    Context context = new InitialContext(jndiProperties);
    

    现在,您可以通过调用进行查找:

    context.lookup("ejb-jndi-name-here");
    

    此外,JBoss 4.2.3 和 JBoss 7.1 中的命名上下文也不同。在 Jboss 7.1 中,jndi 将是: 对于无状态 bean:

    ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>
    

    对于有状态的 bean:

    ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>?stateful
    

    您也可以在日志文件中查看ejb服务部署到JBoss 7.1时的映射名称。

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 2021-02-22
      • 2017-06-02
      • 1970-01-01
      相关资源
      最近更新 更多