刚涉及ejb领域,写了一个简单的session bean例子~~
 但是测试时都是使用本机localhost访问已发布好的ejb组件
那么怎么样才能让其他主机访问到我的这个ejb组件呢?
诚信请教~~请高手们不吝赐教~~

解决方案 »

  1.   

    通过远程 JNDI 查找 EJB 组件。这与 J2EE 应用服务器有关。比如 JBoss 中可以这样:public static Context getInitialContext() throws NamingException {
        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://localhost:1099");  // 远程访问将 localhost 改成实际的 IP 地址
        return new InitialContext(p);
    }public static void main(String[] args) {
        Context jndiContext = getInitialContext();
        Object ref = jndiContext.lookup("Test/remote");
        Test test = (Test)PortableRemoteObject.narrow(ref, Test.class);
        ...
    }客户端需要把 JBoss 中相关的 client 的 jar 包放到 classpath 中。其他 J2EE 应用服务器的话需要修改 getInitialContext 方法,因为各 J2EE 应用服务器初始化 JNDI 上下文的方式不一下。