远程调用就是A主机里的web应用程序 调用B主机里的EJB,
本地调用就是A主机调的Web应用调用本机(即A主机)里的EJB
我以代码举个例子:
   
import javax.ejb.Remote;@Remote
public interface TaxingBeanRemote {}import javax.ejb.Local;@Local
public interface TaxingBeanLocal {
public double getTaxRate(String city);}import javax.ejb.Stateless;@Stateless
public class TaxingBean implements TaxingBeanLocal, TaxingBeanRemote { public double getTaxRate(String city) {
if("beijing".equalsIgnoreCase(city)){
return 0.3;
}else if("shanghai".equalsIgnoreCase(city)){
return 0.35;
}
return 0;
}  }//远程客户端调用
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;import morefunc.PricingBeanRemote;public class Test {
public static void main(String[] args) throws NamingException {
Context cx=new InitialContext();
PricingBeanRemote pbr=(PricingBeanRemote)cx.lookup("PricingBean/remote");
//运程调用就是
              /** PricingBeanLocal pbl=(PricingBeanLocal)cx.lookup("PricingBean/local")     本地调用*/
System.out.println(pbr.pricing(30000, "shanghai"));
}}
   

解决方案 »

  1.   

    在同一jvm上你可以使用本地EJB调用.
    在不同的jVM上你必须远程调用!
      

  2.   

    在同一jvm上你可以使用本地EJB调用. 
    在不同的jVM上你必须远程调用!
    你看的食品当是webproject的时候和EJB在一个JVM
    当你用右键执行的时候用的是MYECLIPSE自带的JVM,明白了吧,
      

  3.   

    那么java project怎么就成了远程客户端调用了呢?
      

  4.   

    EJB必须用专门的容器来提服务,如Jboss,weblogic等,EjB主要提供分布式服务的(就是你的应用分布在不同的主机上)。就你说的java project 不具备提供ejb服务的容器,必须将 ejb放在 其他容器上 。而一些web project 的容器会提供ejb服务,可以共存于一个jvm上。。