直接上代码,发布在weblogic10里面@Stateless(mappedName = "MyOwnEJB30SessionBean") 
@Remote ({MyOwnEJB.class})
public class MyOwnEJB30SessionBean implements MyOwnEJB{
public int addNumber(int x, int y){
      return (x+y);
}
}1、在weblogic10发布的时候为什么必须实现一个接口,书上不是说可以不用实现任何接口的吗?
2、@Remote({MyOwnEJB.class})这个后面的有什么用?貌似加不加都一样?
3、为什么我不写@Remote和写@Local都不行?
4、如果在Stateless后面加mappedName = "MyOwnEJB30SessionBean"那我jndi应该怎么写?
//加了之后是这样写的:
//MyOwnEJB sessionBean = (MyOwnEJB)context.lookup("MyOwnEJB30SessionBean#session.bean.MyOwnEJB");
如果不加的话用weblogic的jndi tree那里的名字访问的话类型是容器里面的类型,转化不成我客户端的接口类型。
5、weblogic10没有重新发布的功能么?我要重新发布一个EJB还得删了再发布?问题很多,一个问题40分(可能还会有追问),请大家帮忙解答下。

解决方案 »

  1.   

    4应为如果在Stateless后面加mappedName = "MyOwnEJB30SessionBean"那我jndi应该怎么写?追加一个:
    6、jndi这样写可以得到一个EJB对象
    MyOwnEJB sessionBean = (MyOwnEJB)context.lookup("MyEJB#session.bean.MyOwnEJB");
    但是为什么用注解
    @EJB
    MyOwnEJB sessionBean;说容器里面没有MyOwnEJB类型的对象无法注入?
      

  2.   

    问题2:local是本地接口,remote是远程接口。web层调用app层使用remote接口。session bean和entity bean之间调用使用的是local接口,默认是local接口
      

  3.   


    应该是问题3吧,关键是我不写remote和写local的话EJB都无法发布
      

  4.   


    我的理解也是要面向接口编程,而不是类。这样我们可以把EJB的接口打包成jar包然后客户端就可以很方便的使用这些接口,而不是要把类的实现交给客户端
    EJB规范是session bean可以不用实现任何接口,weblogic难道和规范有点小区别?
      

  5.   

    现在的趋势也是面向接口编程,将接口声明为服务,供远程客户端实现。EJB以前只用过一点点,不怎么熟,weblogic通过web层调用app的话就得使用remote接口?
      

  6.   

    应该是web层调用app得用remote接口
    但是也不至于不能发布啊同一容器的ejb还要通过local接口访问的呢
      

  7.   

    weblogic的发布
    可以通过http://localhost:XXXX/console,上面部署程序发布,也可以重新部署。另外也可以打包ear,war ,jar等方式发布到WebLogic domain /autodeploy下面。
      

  8.   

    面向接口编程,Java都是这样。不这样写也可以。其他基本都是ejb写死的,不这样写就不是EJB了。
      

  9.   

    如果是在本地local可以不用写
      

  10.   


    默认是local,但是不管我不写还是写local就发布不了,改成remote就可以了
      

  11.   

    @Remote:指明业务接口,可加在Bean类或业务接口之前,若加在Bean类之前则,该Bean类只需提供业务接口的方法实现,而不需要implements该接口;若加载业务接口之前则相应的Bean类要implements该业务接口
      

  12.   

    mappedName属性 由容器来解释,各类容器解释的不一样,sun的服务器是EJB存根stub的JNDI名称
      

  13.   

    我不回答接下来的问题了,建议你去百度文库下载文档<达内EJB课堂笔记完全版.doc>那里面比较详细,如果要的话我也可以给你!!Good Luck!!
      

  14.   

    1.通常实现一个接口是为了方便本地的程序创建ebj实例吧
    2.@Remote说明是远程调用,即不再一个ebj容器内的调用.
    3.?
    4.lookup("类名/Remote")
      

  15.   

    我也在学习EJB中 
    顺便提一提   每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
      

  16.   

    2、@Remote({MyOwnEJB.class})这个后面的有什么用?貌似加不加都一样? 
    这加不加一样
      

  17.   

    学习,看来该由corba向ejb转了
      

  18.   

    敲了半天答案,结果csdn抽风没发上来,算了,气死我了。