Java 远程调用JDBC功能比RMI更好吗?

Java 远程调用JDBC功能比RMI更好吗?,java,jdbc,rmi,remote-access,Java,Jdbc,Rmi,Remote Access,我正在开发一个Java应用程序,它由一个持久层、一个中间层(它公开类似JDBC的功能)和应用程序层组成。中间件和应用程序将始终位于不同的JVM中。通常,应用程序只需导入JDBC驱动程序并执行所有必要的JDBC操作(在同一JVM中),就像连接SQL数据库的简单应用程序一样。在我的情况下,应用程序应该从中间件调用getConnection()操作来检索连接对象并远程执行所有必要的操作,从而远程与中间件通信 实现这种事情的最佳协议是什么?类似REST/Http的实现是不可接受的,因为它们被偷听到了。协

我正在开发一个Java应用程序,它由一个持久层、一个中间层(它公开类似JDBC的功能)和应用程序层组成。中间件和应用程序将始终位于不同的JVM中。通常,应用程序只需导入JDBC驱动程序并执行所有必要的JDBC操作(在同一JVM中),就像连接SQL数据库的简单应用程序一样。在我的情况下,应用程序应该从中间件调用getConnection()操作来检索连接对象并远程执行所有必要的操作,从而远程与中间件通信


实现这种事情的最佳协议是什么?类似REST/Http的实现是不可接受的,因为它们被偷听到了。协议(及其实现)应尽可能轻量级(理想情况下,应在套接字级别)。我在考虑经典的RMI调用,但我担心RMI引入的额外开销。是否有更好的实现或完全不同的体系结构方法?中间件必须始终公开此JDBC功能,因此不可能更改它。

我在生产环境中使用VJDBC:。它通过RMI公开JDBC驱动程序,并具有良好的性能。RMI应该足够了。数据库和数据传输将是主要的开销。RMI实际上只是增加了序列化开销,我看到VJDBC是一个老项目(上一个版本是在2007年),我不确定如何维护它。我曾考虑使用Jgroups远程访问对象,并在两层之间传输数据,但我有点担心这会成为性能杀手。我尝试了一些测试,甚至在两个远程节点之间启动通道都需要很长时间。有使用此工具的经验的人吗?找到解决方案了吗?