WEB服务器B不用做什么设置。个人观点:1、本地类调用ejb时初始化一下jboss的上下文环境,则可实现调用ejb(最理想)
2、本地类通过RMI来调用远端ejb,如果你对ejb比较熟,应该会想到RMI通过以上两个方法肯定能实现

解决方案 »

  1.   

    一般应用服务器之间的整合需要用配置文件。
    用RMI太复杂,而且效率以及可维护性都是未知数。 你可以用GOOGLE搜一下,应该有这方面的文章。
      

  2.   

    谁说用RMI太复杂,完全可以!
      

  3.   

    配置一下数据源,要用ip,就可以根据数据源来调用相应的Ejb
      

  4.   

    要数据源干嘛?
    直接用 在context 里lookup JNDI然后获得一个Home 的接口
    然后 用home.create()
    获得remote的ref
    然后就可以.....
      

  5.   

    楼主可以用jdbc或者DataSource都可以,只是看你实现的问题
    ClientContext clt=new ClientContext ();
    Context ctx=clt.getInitialContext();
    Object obj=ctx.lookup("JNDI NAME");
    ....Home home=(...Home)PortableRemoteObject.narrow(obj,...Home.class);
    ...........................
    public class ClientContext{
    public  Context getInitalContext() throw...Exception{
        String url="t3://.......";
        String user=null;
        Properties pro=null;
        try{
            Properties pro=new Properties ();
            pro.put("Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi,WLINitialContextFactroy");
            pro.put(Context.PROVIDER_URL,url);
            return new InitalContext(pro);
          }
        catch(Exception e){
            ....
         }
    }}
      

  6.   

    因为EJB本身提供两个接口:home 和remote
    RMI就可以远程调用接口,实际取得的是interface的reference。你不必考虑底层的动作,只要通过你的inerface reference将消息送出即可。
    当你想产生一个远程端口,必须依循以下原则:
    1.远端接口public
    2.远端接口必须继承java.rmi.remote
    3.必须将java.rmi.remote exception 声明到throw子句里
    4.作为引数的远端对象,必须声明为远端接口,而不是class
      

  7.   

    对于远程调用jboss的ejb,首先你要在客户端的机器上的classpath中引入几个类,在%jboss_home%\client下,具体是哪几个.jar文件我也不记得了。然后写一个config.properties(上下文的配置文件,当然你也可以在程序中指定,不过不推荐,原因很简单,为了以后的可移植性)文件,内容如下:
    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    java.naming.provider.url=jnp://192.3.2.1:1099
    你所要引入的.jar文件应该包含org.jnp.interfaces.NamingContextFactory,org.jboss.naming:org.jnp.interfaces,这两个类,自己去%jboss_home%\client好好找找去。我第一回几乎是把client下的.jar文件都解压了找的。可能不止这两个类,你运行客户端的时候看看提示哪些class notfound,自己去把那些类放到classpath中去
    程序:
    Properties env=new Properties();
    env.load(new FileInputStream("config.properties"));
    InitialContext ctx=new javax.naming.InitialContext(env);
    Object obj=ctx.lookup("你的ejb服务器jboss.xml中的<jndi-name/>的值");
    你的home接口名 home=(你的home接口名)PortableRemoteObject.narrow(obj,你的home接口名完整类名包括.class);
    你的远程接口名 remote_interface=home.create();OK,Over!呵呵,够详细吧。