在client端使用jndi

类别:Java 点击:0 评论:0 推荐:

假定在A机器(设IP为192.168.1.22)上部置EJB(ejb容器为JBOSS),其上有一无状态SessionBean First,First有一个方法   public java.lang.String sayHello( java.lang.String name ),First对应的jndi-name为"First".
在B机器上调用First的sayHello方法:
package test;

import java.rmi.RemoteException;
import java.util.Date;
import java.util.Hashtable;

import javax.ejb.CreateException;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 * @author <a href="starfire'>mailto:[email protected]">starfire </a>
 * 
 */
public class TestFirst {

    private test.FirstHome getHome() throws NamingException {
        //First为jndi-name
        return (test.FirstHome) getContext().lookup("First");
    }

    private InitialContext getContext() throws NamingException {
        Hashtable props = new Hashtable();

        //不同容器的INITIAL_CONTEXT_FACTORY,PROVIDER_URL可能不一样
        props.put(InitialContext.INITIAL_CONTEXT_FACTORY,
                "org.jnp.interfaces.NamingContextFactory");
        props.put(InitialContext.PROVIDER_URL, "jnp://192.168.1.22:1099");

        InitialContext initialContext = new InitialContext(props);
        return initialContext;
    }

    public void testBean() {

        try {
            InitialContext context = getContext();
            //context.rebind("obj", new Date());
            //Object obj = context.lookup("obj");
            //System.out.println(obj);
            test.First myBean = getHome().create();

            //--------------------------------------
            //This is the place you make your calls.
            System.out.println(myBean.sayHello("hc"));

        } catch (RemoteException e) {
            e.printStackTrace();
        } catch (CreateException e) {
            e.printStackTrace();
        } catch (NamingException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        TestFirst test = new TestFirst();
        test.testBean();

    }
}

本文地址:http://com.8s8s.com/it/it12541.htm