那在一个会话bean中如何调用同一jar文件中的另一个ejb中的local接口?????

解决方案 »

  1.   

    //模块名:First.jar
    //有两个会话bean: EJBTestBean、FirstBean
    //在First bean中getHello()中调用EJBTestBean的本地接口LocalEjb
    InitialContext context1 = new InitialContext();
    System.out.println("123");
    //上一条能输出
    Object AA = context1.lookup("EJBTestLocal");
    System.out.println("111");
    //上一条能输出
    EJBTestLocalHome cc = (EJBTestLocalHome) AA;
    System.out.println("222");
    //上一条能输出
    EJBTestLocal bb = cc.create();
    System.out.println(bb.LocalEjb());
    输出结果
    123
    111
    222
    java.lang.NullPointerException
    at org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:110)
    at $Proxy2.create(Unknown Source)
    at com.Test.TestEJB.FirstTest.testBean(FirstTest.java:57)
    at com.Test.TestEJB.FirstTest.main(FirstTest.java:71)
    Exception in thread "main" 
    //EJBTestLocalHome源文件
    public interface EJBTestLocalHome
       extends javax.ejb.EJBLocalHome
    {
       public static final String COMP_NAME="java:comp/env/ejb/EJBTestLocal";
       public static final String JNDI_NAME="EJBTestLocal";   public com.Test.TestEJB.EJBTestLocal create()
          throws javax.ejb.CreateException;}
      

  2.   

    半夜看了几个MasteringEJB中的例子
    我发现remote,local所定义的接口都是一样的,只是一个抛出remote异常一个没有,是不是client的调用时如为remote客户自动转换到remote接口,如为local客户就调用local接口?????????????(理解90%是错了,没信心)
      

  3.   

    local接口是要在同一个package里,或者至少在同一个Module(同一个jar包)才能访问的,感觉有点象protected,只对内不对外。remote可以在任何的位置访问。
      

  4.   

    local接口应该是运行在同一个jvm里的程序都可以访问.虽然和remote接口是一样的,但访问的时候还是要在程序中指明,服务器不会自动去转的.
      

  5.   

    client是一个概念,而不是一个机器(很多人错误理解了这个词),即使在一个机器上,也有
    服务和客户的区别;在同一个应用程序中,也有服务和客户的区别。如果你的client与EJB在一个JVM中,比如在同一个应用服务器中(同JVM中)的JSP中调用的话
    ,就既可以使用本地接口也可以使用远程接口,如果是在不同的JVM中,就必须使用远程接口
      

  6.   

    dreamnear(哟哟) 
    你的说法完全错误,你应该去看看他的规范了,因为你的理解根本上就错误了
      

  7.   

    有点跑题了
    那我的ejb要如何去访问local接口 LocalEjb
      

  8.   

    还有就是同一机器上不是在同一jvm上吗?
    难道jboss是一个jvm,client是一个jvm?
      

  9.   

    同一个机器不一定是同一个JVM,你用JAVA可以同时运行好多个JVM呢,在操作系统里,JVM不过是他的一个进程罢了,