这里写错了?
打包的时候,由于这是两个EJB MODULE,所以都含有各自的WEB-INF目录,有各自的部署描述XML,那么很自然会被打成两个JAR文件,彼此分开应该是:META-INF吧?用SBEAN调用CMP,有没有问题呢,可以直接调用吗?
没有问题,是可以调用的。
关于,你说的区别,
我觉得,
调用是没有区别的。不过,你的部署是有点不同,但其实归根结底,还是一样的。^@^

解决方案 »

  1.   

    你的叙述不是很清楚,上面那个人的回答很片面,我可以把你说的两个情况解释一下!
    两个不同的jar包deploy两个ejb(不管是cmp or bmp),你需要注意的是jvm不会管你是cmp or bmp,它关心的是local or remote interface,知道吗?也就是说
    1:如果两个都是remote interface,那么打成2个jar包deploy没有问题,调用也没有问题(因为是remote调用啊,这时jvm是用两个classloader),我想你的情况应该是这种,所以调用起来没有任何问题.
    2:如果有两个ejb,一个是statefulless,一个是cmp(local interface),注意这里有local了,那么你可以把他们分成两个不同的jar,deploy也没有问题,但是statafulless调用cmp就有问题了,会throw LinkException.
    所以如果你的ejb有local interface,你必须把他们打在一个包中,如果你的statefulless也是local interface,你也必须把ejb client + statefulless打在一个ear中!
    不知道你清楚了吗?
      

  2.   

    你的叙述不是很清楚,上面那个人的回答很片面,我可以把你说的两个情况解释一下!
    两个不同的jar包deploy两个ejb(不管是cmp or bmp),你需要注意的是jvm不会管你是cmp or bmp,它关心的是local or remote interface,知道吗?也就是说
    1:如果两个都是remote interface,那么打成2个jar包deploy没有问题,调用也没有问题(因为是remote调用啊,这时jvm是用两个classloader),我想你的情况应该是这种,所以调用起来没有任何问题.
    2:如果有两个ejb,一个是statefulless,一个是cmp(local interface),注意这里有local了,那么你可以把他们分成两个不同的jar,deploy也没有问题,但是statafulless调用cmp就有问题了,会throw LinkException.
    所以如果你的ejb有local interface,你必须把他们打在一个包中,如果你的statefulless也是local interface,你也必须把ejb client + statefulless打在一个ear中!
    不知道你清楚了吗?
      

  3.   

    多谢楼上!
    但是小弟还有话说:
    我看书上说:如果客户端和EJB在一个process里面,也就是说,是一个server(我用的WEBLOGIC)的话,就可以local调用。虽然我用的是两个JAR,但是都是部署在一个SEVER里面的啊!,两个jar的区别除了部署不同以外,还有不同???楼上还是没有说明两个jar有什么区别,和二楼矛盾,弄得我更胡涂了◎!!!
      

  4.   

    这两个jar包没有区别,都是jar包而已,你可以在你的ear里面选择
    要包含哪些jar包。
    至于local接口和remote接口的调用和ejb是不是在同一个jar包没有关系,
    如果你调用的ejb和你的应用在同一个jvm里面,也就是你说的同一个server,
    那么就可以用local接口,如果不是,比如说你调用的是另外一个server下
    的ejb,哪就需要remote接口
      

  5.   

    哦!那就是说: dwju1981(灭日屠美)  lijing725(java无罪,我有罪) 两位说错了?收到
      

  6.   

    还有,如果我的APPLICATION里面除了这两个JAR以外,还有一个WAR,里面是一些JSP要调用JAR里面的EJB,可以文的调用吗?(当然这些东西全部被打成一个EAR,就同再一个SERVER上面)还有,关于 IMPORT 问题,这三个包(JAR1,JAR2,WAR)之间互相调用,JAR1里面的EJB调用JAR2里面的EJB,要不要在他们头上加上 IMPORT PROJECT.* ???(他们都是同输一个PROJECT,在一个PACKAGE里面),那JSP调用他们的时候,头上需要IMPORT PROJECT吗???
      

  7.   

    还有,如果我的APPLICATION里面除了这两个JAR以外,还有一个WAR,里面是一些JSP要调用JAR里面的EJB,可以文的调用吗?(当然这些东西全部被打成一个EAR,就同再一个SERVER上面)一个ear包括war和jar,在你的war中当然可以本地调用jar里面的ejb。前提是你的ear里面包含了这个jar。还有,关于 IMPORT 问题,这三个包(JAR1,JAR2,WAR)之间互相调用,JAR1里面的EJB调用JAR2里面的EJB,要不要在他们头上加上 IMPORT PROJECT.* ???(他们都是同输一个PROJECT,在一个PACKAGE里面),那JSP调用他们的时候,头上需要IMPORT PROJECT吗???jsp调用的时候需要import,jar1里面调用jar2也是要import的,不过我建议你同一个package
    的文件最好打成同一个jar包,jar1和jar2的package一样,很容易就冲突的
      

  8.   

    你是在一个包里。部署时分成两个BEAN。要在CMP中BEAN之间调用,一般是用本地接口的,访问效率高。
      

  9.   

    是吗,表面上看在weblogic下的东西都是在一个jvm下,但是container解晰的时候会做不同的处理,这个我确实做过实验,你自己也可以做个实验,打两个ejb jar包,一个是session bean(remote interface),另一个是cmp(local interface),不把他们打在一个ear下,然后写一个jsp去调你的session bean,看看是那里出错!jsp + session bean + cmp!我的观点是,jsp雕session bean可以成功,因为session bean是remote的,但是session bean调cmp就会失败,因为他是local interface,而且会报LinkException,不信你自己试试!
      

  10.   

    我刚才已经就我的观点再次做过测试,和我的结论一样正确,已经报了LinkException!ejb只是中O/R映射的实现,现在很火,但是闭端很多,之所以由ejb1.1 upgrade to ejb2.0/2.1就是因为开发人员本身就意识到了它的问题!ejb做为j2ee中重要的成员,本身就是为分布式准备的,但是如果允许其使用cmp,使用local interface,使用ejb还有意义吗?
      

  11.   

    楼上说的也碰到过,如果cmp使用的是local,只能将他们打到一个ear包里
      

  12.   

    楼上两位老大哥,你们说得把远程SESSION BEAN和本地ENTITY BEAN 分成两个EAR打包,然后互相调用的试验我还没有做呢,我说得是都在同一个EAR里面,但是分别打在两个JAR包里面!!我做过了,好像可以哦,呵呵