每个EJB都有JNDI 访问它的JNDI就可以了,只不过这个时候是访问远程的JNDI,有专门的协议(就像http)来访问的,访问的时候用对方的IP就可以了

解决方案 »

  1.   

    1.自己打包,累死啊,让框架来打吧
    2.你说的是两个ejb还是客户端访问服务器端:两个ejb的话用jndi访问;客户端好象没必要问吧
      

  2.   

    部署EJB实际上就是让EJB服务器知道你写的类的具体情况(类型,方法名等等).
    而不同机器上的EJB服务器互相之间交流就是通过JNDI技术来作到.具体方法可以查看EJB服务器的说明
      

  3.   

    继续问:
    具体怎么设置JNDI?(本人实在是菜鸟)
      

  4.   

    举个例子:
    在计算机A为EJB服务器,计算机B为Web服务器(用WebLogic做Web服务器),手工编写了EJB_jar.xml部署文件,三个类文件:CustomerEJB.class, CustomerHome.class, CustomerLocale.class问题:
    1.计算机A作为EJB服务器也需要装上WEBLogic吗?
    2.这三个类件应如何打包,分别怎么放在两台计算机上?
    3.EJB_jar.xml是应该放在A上还是B上?
    4.在计算机B上怎么样设置JNDI来访问这个EJB?(看了几天的书,也没理出一个头绪,问题还是一大堆,还是盼望大家能指点指点。)
      

  5.   

    不好意思!我也刚开始学习EJB!关注中...
      

  6.   

    问题:
    1.计算机A作为EJB服务器也需要装上WEBLogic吗?
        不一定非得安装上WEBLOGIC,只要有支持EJB的服务器就可以,
    websphere,jboss等都可以。2.这三个类件应如何打包,分别怎么放在两台计算机上?
    这三个类需要打成一个包,包里面需要有一个META-INF文件夹,
    文件夹里面需要有一个,ejb-jar.xml,这个xml是ejb部署描述文件。将这个ejb发部到计算机A的EJB服务器上,
    且需要将这个包作为web服务器库文件,可以放在/web-inf/lib里。
    或者说只要让classloader能找到这三个类就可以,3.EJB_jar.xml是应该放在A上还是B上?
    参照24.在计算机B上怎么样设置JNDI来访问这个EJB?
    EJB服务器一般都自带一个JNDI服务器,且不同的ejb服务器上的driver是不一样的。
    以websphere为例
    Hashtable table = new Hashtable();
    table.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
    table.put(Context.PROVIDER_URL, "corbaloc:iiop:localhost:2809");
    Context ctx = new InitialContext(table );
    try{
            Object obj = ctx.lookup("java:comp/env/XXXX");
            ejbHome = (EJBHome) PortableRemoteObject.narrow(obj,"XXXX");
            ...
    } catch (ClassCastException e){
            ...
    } catch (NamingException e){
            ...
    }