EJB远程查找名称NotFoundException

EJB远程查找名称NotFoundException,ejb,wildfly,jndi,lookup,Ejb,Wildfly,Jndi,Lookup,我尝试远程访问(eclipse)EJB项目中的EJB,该项目打包为jar,部署在WildFly 10.1.0 Final上。服务器端不是maven项目,所以我在java构建路径中添加了ejb-3.0.jar、javaee-api-7.0.jar、jboss-ejb3-ext-api-1.1.0.jar 我的服务器代码是: 当我从eclipse中启动服务器时,日志显示: 21:06:19015信息[org.jboss.as.ejb3.deployment](MSC服务线程) 1-4)WFLYEJB

我尝试远程访问(eclipse)EJB项目中的EJB,该项目打包为jar,部署在WildFly 10.1.0 Final上。服务器端不是maven项目,所以我在java构建路径中添加了ejb-3.0.jar、javaee-api-7.0.jar、jboss-ejb3-ext-api-1.1.0.jar

我的服务器代码是:

当我从eclipse中启动服务器时,日志显示:

21:06:19015信息[org.jboss.as.ejb3.deployment](MSC服务线程) 1-4)WFLYEJB0473:中名为“MyBeanImpl”的会话bean的JNDI绑定 部署单元“部署”MyFirstEJB.jar如下: java:global/MyFirstEJB/MyBeanImpl!org.maometto.api.imybeanremotejava:app/MyFirstEJB/MyBeanImpl!org.maometto.api.IMyBeanRemote java:module/MyBeanImpl!org.maometto.api.IMyBeanRemote
java:jboss/exported/MyFirstEJB/MyBeanImpl!org.maometto.api.IMyBeanRemote java:global/MyFirstEJB/MyBeanImpl java:app/MyFirstEJB/MyBeanImpl
java:module/MyBeanImpl

我的客户机—在自己的项目中转换的maven项目—代码如下:

package com.maometto.client;

import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.maometto.api.IMyBeanRemote;

public class EJbClient {


    public static void main(String[] args) {

        Properties jndiProps = new Properties();
        //jndiProps.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
        jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
        jndiProps.put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
        jndiProps.put("jboss.naming.client.ejb.context", true);
        try {
            InitialContext initialContext = new InitialContext(jndiProps);
            IMyBeanRemote iMyBeanRemote = (IMyBeanRemote) initialContext.lookup("java:global/MyFirstEJB/MyBeanImpl!org.maometto.api.IMyBeanRemote");
            iMyBeanRemote.sayHello();

        } catch (NamingException e) {
            e.printStackTrace();
        }
    }
}
为了在客户机中获得远程接口,我将ejb项目添加到客户机项目的java构建路径中

客户的POM为:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>MyEJBClient</groupId>
  <artifactId>MyEJBClient</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <dependencies>
   <dependency>
        <groupId>org.wildfly</groupId>
        <artifactId>wildfly-jms-client-bom</artifactId>
        <version>10.0.0.Final</version>
        <type>pom</type>
    </dependency>
     <dependency>
        <groupId>org.jboss.as</groupId>
        <artifactId>jboss-as-naming</artifactId>
        <version>7.1.3.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.marshalling</groupId>
        <artifactId>jboss-marshalling-river</artifactId>
        <version>1.4.0.Final</version>
    </dependency>
   <dependency>
        <groupId>jboss</groupId>
        <artifactId>jbossall-client</artifactId>
        <version>4.2.2.GA</version>
    </dependency>

    <dependency>
        <groupId>org.jboss.spec.javax.ejb</groupId>
        <artifactId>jboss-ejb-api_3.1_spec</artifactId>
        <version>1.0.2.Final</version>
    </dependency>

    <dependency>
        <groupId>org.jboss</groupId>
        <artifactId>jboss-ejb-client</artifactId>
        <version>4.0.8.Final</version>
    </dependency>
    <dependency>
        <groupId>org.wildfly</groupId>
        <artifactId>wildfly-ejb-client-bom</artifactId>
        <version>11.0.0.Final</version>
        <type>pom</type>
    </dependency>

  </dependencies>

  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
我也试过其他的JNDIBIND

我还尝试了“ejb:”名称空间及其约定(“ejb:+appName+“/”+moduleName+“/”+distinctName+“/”+beanName+“!”+viewClassName”)。还是一样的错误。我不知道我错过了什么,也不知道我做错了什么

有人能帮我吗

package com.maometto.client;

import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.maometto.api.IMyBeanRemote;

public class EJbClient {


    public static void main(String[] args) {

        Properties jndiProps = new Properties();
        //jndiProps.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
        jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
        jndiProps.put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
        jndiProps.put("jboss.naming.client.ejb.context", true);
        try {
            InitialContext initialContext = new InitialContext(jndiProps);
            IMyBeanRemote iMyBeanRemote = (IMyBeanRemote) initialContext.lookup("java:global/MyFirstEJB/MyBeanImpl!org.maometto.api.IMyBeanRemote");
            iMyBeanRemote.sayHello();

        } catch (NamingException e) {
            e.printStackTrace();
        }
    }
}
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>MyEJBClient</groupId>
  <artifactId>MyEJBClient</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <dependencies>
   <dependency>
        <groupId>org.wildfly</groupId>
        <artifactId>wildfly-jms-client-bom</artifactId>
        <version>10.0.0.Final</version>
        <type>pom</type>
    </dependency>
     <dependency>
        <groupId>org.jboss.as</groupId>
        <artifactId>jboss-as-naming</artifactId>
        <version>7.1.3.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.marshalling</groupId>
        <artifactId>jboss-marshalling-river</artifactId>
        <version>1.4.0.Final</version>
    </dependency>
   <dependency>
        <groupId>jboss</groupId>
        <artifactId>jbossall-client</artifactId>
        <version>4.2.2.GA</version>
    </dependency>

    <dependency>
        <groupId>org.jboss.spec.javax.ejb</groupId>
        <artifactId>jboss-ejb-api_3.1_spec</artifactId>
        <version>1.0.2.Final</version>
    </dependency>

    <dependency>
        <groupId>org.jboss</groupId>
        <artifactId>jboss-ejb-client</artifactId>
        <version>4.0.8.Final</version>
    </dependency>
    <dependency>
        <groupId>org.wildfly</groupId>
        <artifactId>wildfly-ejb-client-bom</artifactId>
        <version>11.0.0.Final</version>
        <type>pom</type>
    </dependency>

  </dependencies>

  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
javax.naming.NameNotFoundException: global/MyFirstEJB/MyBeanImpl!org.maometto.api.IMyBeanRemote -- service jboss.naming.context.java.jboss.exported.global.MyFirstEJB."MyBeanImpl!org.maometto.api.IMyBeanRemote"
    at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:106)
    at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:207)
    at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:184)
    at org.jboss.naming.remote.protocol.v1.Protocol$1.handleServerMessage(Protocol.java:127)
    at org.jboss.naming.remote.protocol.v1.RemoteNamingServerV1$MessageReciever$1.run(RemoteNamingServerV1.java:73)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)