名称 [HelloBeanName] 未绑定在此上下文中。找不到 [HelloBeanName]

Name [HelloBeanName] is not bound in this Context. Unable to find [HelloBeanName]

我是 ejb 的新手,我正在尝试 运行 简单的 ejb 应用程序。我的应用程序包含 classes Hello(远程接口)、HelloBean(class实现 Hello 接口)和 HelloClient(我 运行)。程序应该写入控制台 "Hello world",但我总是得到错误“Name [HelloBeanName] is not bound in this Context. Unable to find [HelloBeanName]”...这是 3 classes
你好接口:

package vezba2;

public interface Hello {
public String hello();
}

你好豆:

    package vezba2;

import javax.ejb.Remote;
import javax.ejb.Stateless;

@Stateless(name="HelloBeanName")
@Remote(Hello.class)
public class HelloBean implements Hello{

    @Override
    public String hello() {
        // TODO Auto-generated method stub
        System.out.println("hello()");
        return "Hello,World!"; 

    }


}

你好客户:

package vezba2;

import java.util.Properties;

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


public class HelloClient {

    public static void main(String[] args) throws NamingException {
        // TODO Auto-generated method stub

        System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
                "org.apache.naming.java.javaURLContextFactory");

        //i first didn't have system.setProperty and i was getting error:Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial//

        Context ctx = new InitialContext();
        Hello hello=(Hello) ctx.lookup("HelloBeanName");
        System.out.println(hello.hello());
    }

}

我正在使用 java8,也使用 ApacheTomee plus 1.7.0 作为服务器,在服务器文件夹中我有文件 server.xml,context.xml 文件,tomcat-users.xml,web.xml 文件,在我的项目中我有 ejb-jar.xml,其中 none 我没有编辑和更改..我也 运行 这个在 Eclipse 中绿色箭头上带有 "Run HelloClient" 的应用程序。(当我启动服务器时,它不会在服务器上提供 运行 这个...)
是否有人知道这个问题我怎样才能让我的程序工作?
我应该编辑 xml 文件吗?我应该尝试 运行 在服务器上我的应用程序吗?(不知何故)...
是否还有一些很好的详细文献说明如何到 运行,并使用 ejb?提前致谢。`

(P.S。当我把它放在 HelloClient 中时:

System.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.client.RemoteInitialContextFactory");        System.setProperty(Context.PROVIDER_URL,"http://localhost:8080/tomee/ejb");
    Context ctx = new InitialContext();
    Hello hello=(Hello) ctx.lookup("HelloBeanName");
    System.out.println(hello.hello());


我收到以下错误:

RequestFailed{server=http://localhost:8080/tomee/ejb} JNDI_LOOKUPnull:/HelloBeanName {error=Cannot open input stream to server: }
Exception in thread "main" org.apache.openejb.client.ClientRuntimeException: Invalid response from server: -1
    at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:297)
    at javax.naming.InitialContext.lookup(InitialContext.java:417)
    at vezba2.HelloClient.main(HelloClient.java:18)

现在我想我连接了 Apache 服务器和 运行s HelloClient 的程序 ..)

如果您的主程序不在您需要指定如何连接到服务器的容器中。对于 tomee,那里解释了远程上下文工厂 http://tomee.apache.org/advanced/client/jndi.html

旁注:自版本 1.7.4 和 7.x 起,远程处理需要更多配置以避免 0-day 漏洞。参见 http://tomee.apache.org/security/tomee.html