java - Java RMI 是 Axis2 SOAP 的良好替代品吗?

标签 java jakarta-ee apache-axis rmi xml-rpc

如果服务器和客户端仅使用 Java,那么与 Axis2 实现的 SOAP 相比,RMI 是否会更高效(带宽和延迟)?我知道 RMI 近年来已经不再流行,但这并不意味着它不能使用。

XML-RPC 怎么样?

最佳答案

RMI 有一些有趣的功能并且相当快,但也有一些问题:

  1. 您必须确保要序列化的所有内容都实现可序列化。
  2. 您必须确保服务器和客户端具有完全相同的所有可序列化类的版本,并且在完全相同的时间部署,并且您序列化的每个类(包括可序列化对象持有的字段)都使用serialVersionUID适本地。否则你将陷入痛苦的世界(阅读:“串行版本不匹配”)。
  3. 您必须确保您序列化的类不会保留对最终保留对大对象的引用的对象的引用,否则您会对通过网络传输的数据包的大小感到非常惊讶。
  4. 如果您决定通过 Java 以外的任何方式访问服务,则必须编写另一个远程访问层。
  5. 没有#5。

实际上,这些天我几乎总是推荐 REST 服务。创建小型 Java 对象并使用 Gson 或 Jackson 或其他东西来回编码数据非常容易,因此相比之下,RMI 的优势微乎其微。

关于java - Java RMI 是 Axis2 SOAP 的良好替代品吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14945014/

相关文章:

java - 在 Android Studio 上同步新项目时出现 Firebase 错误(ASCII 错误)

java - 如何 int x= 1+ +2+ +3+ +4+ +5;在 JAVA 中返回 15

java - 让两个物体在 SwingBot 中移动

java - 无法在我的 android 模拟器中访问我的 wsdl 文件

java - (Axis + Jetty) Prefix 自动生成的前缀命名空间

java - 如何使用 to_char 函数按条件添加到 Criteria 订单

java - 在 JAVA EE 6 Web 服务中设置安全性

java - Glassfish 4 : how to set application or module name for JNDI

java - log4j2问题。无法在控制台或文件中记录任何内容

java - Axis2 getSOAPEnvelope() 性能问题