论坛首页 Java企业应用论坛

EJB基于RMI, 真理还是谎言?

浏览 6480 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-11   最后修改:2009-05-11
很早以前就听高手说过EJB基于RMI, 最近也有美国同事说基于RMI的EJB远程调用会有问题。

but, 看了一些JBoss文档之后,There always a different answer:

首先JBoss Application Server5的EJB是JBoss EJB3实现.
JBoss EJB3的参考文档里面指出JBoss EJB3是基于JBoss Remoting
而JBoss Remoting的首页里面就指出, 它是的传输协议支持很多:
  Socket (SSL Socket)
  RMI (SSL RMI) //二奶身份
  HTTP(S)
  Bisocket (SSL Bisocket)
  Servlet (SSL Servlet)

从deploy/ejb3-connectors-jboss-beans.xml来看JBoss的EJB缺省配置:
  <bean name="org.jboss.ejb3.RemotingConnector"
    class="org.jboss.remoting.transport.Connector">
    <property name="invokerLocator">
      <value-factory bean="ServiceBindingManager"
        method="getStringBinding">
        <parameter>
          jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3
        </parameter>
        <parameter>
          <null />
        </parameter>
        <parameter>socket://${jboss.bind.address}:${port}</parameter>
        <parameter>
          <null />
        </parameter>
        <parameter>3873</parameter>
      </value-factory>
    </property>
    <property name="serverConfiguration">
      <inject bean="ServerConfiguration" />
    </property>
  </bean>

这里表明,缺省配置是jboss socket方式,而不是RMI. 在JBoss EJB3的wiki里面有配置EJB3为其他协议的指南。

这里还有个各种协议的性能比较,应该是JBoss Socket作为缺省协议的理由吧。
   发表时间:2009-05-12  
ejb可以基于rmi,不是必须基于rmi

远程调用,说白了都一样,就是序列化,网络传输,反序列化。
不管是com/com+,soap,webservice,rmi,.net remoting.

同种runtime的,可以native的二进制序列化,序列化的效率高。
文本的序列化(xml/json/自定义格式)的方式,可以跨平台和语言,一般基于中间类型。序列化的效率低,数据量也偏大。

网络传输可以使socket/http/或是自定义协议的。
明显socket数据冗余最小,效率最高。rmi其实是socket上的自定义协议。
http明显要走http的报文,文本的方式最合适,实现最简单,开发和部署方便。




11 请登录后投票
   发表时间:2009-05-12  
我感觉
Socket (SSL Socket)
  RMI (SSL RMI) //二奶身份

  Bisocket (SSL Bisocket)
  Servlet (SSL Servlet)

应该都是socket

  HTTP(S)
类似于web service,进行文本交互。

虚拟机和虚拟机之间的恶交互无外乎这两种。
0 请登录后投票
   发表时间:2009-05-12  
不基于RMI的话, 如果两个不相同的EJB容器要交互怎么办?
0 请登录后投票
   发表时间:2009-05-12  
xiaoyu 写道
不基于RMI的话, 如果两个不相同的EJB容器要交互怎么办?


在client端引入JBoss Client目录下面的包吧?
1 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics