Spring之auto-detection(自动检测)

本文探讨了RMI、Spring HTTP调用者、Hessian、JMS及EJB等远程调用技术的特点与适用场景。分析了各种技术在序列化、跨语言支持、安全性等方面的优势与局限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



自动检测实现接口出现于远程接口中的原因是避免给调用者提供更多的门。目标对象可能实现了内部调用接口,比如

InitializingBean 或DisposableBean ,这些不想暴露给调用者。


提供所有接口实现的代理


这是配置方便和意外暴露内部方法风险之间的权衡。总是指定一个业务接口不是太麻烦,并且让你位于安全的一边而无需控制指定方法的暴露。



21.9 当选择技术的时候,需要考虑的东西

 这里谈到的每个技术都有自己的缺点。当你选择一项技术的时候你应该仔细考虑你的需求。你暴露的业务和发向封装的对象。


当使用RMI时,通过HTTP协议访问对象是不可能的。除非你打开了RMI的通道。RMI是一个重量级协议,其支持全对象序列化,这对于使用复杂的对象是很重要的,需要在传输的时候序列化。然而,RMI-JRMP绑定在Java客户端上:这是一个Java对Java的远程解决方案。


如果你需要基于HTTP远程但也需要Java序列化,Spring的HTTP调用者是一个好的选择。其与RMI调用者共享基本的设置,仅使用HTTP作为传输。注意HTTP调用器不仅用于Java到Java的远程调用而且用于Java到Spring的的服务器端和客户端两边。(后者也适用于Spring的RMI调用非RMI接口)


Hessian和/或Burlap可能提供有重要意义的值,尤其在异构环境中操作时。因为它们明显允许非Java的客户端。然而,非Java支持仍旧受限。已知的事物包括了Hibernate对象(与延迟初始化集合结合)的序列化。如果你有这样的数据模型,考虑使用RMI或者HTTP调用器,而不是使用Hessian。


JMS对于业务簇有用并且允许JMS作为中间人负责负载均衡,发现和自动故障转移。默认地,当使用JMS远程地时候要使用Java序列化但是了JMS提供器可能对于封装的格式使用一个不同的机制,比如XStream允许服务器用其他的技术实现。


最后了,EJB与RMI相比,其支持基于角色的校验和远程事物传播。可能获取RMI调用器或者HTTP调用器支持安全上下文传播,虽然Spring 核心不提供这样的功能:这里有针对第三方插件或普通解决方案的适合的钩子。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值