hessian 和 spring结合,url动态替换

发布于 2021-11-30 18:53:19 字数 1271 浏览 711 评论 12

Hessian做远程服务,大家都知道的。 如何跟spring结合,网上有很多例子,这里就不写,主要是写一下,我遇到的一个问题,不知道大家解决的办法。

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<!-- 客户端Hessian代理工厂Bean -->
	<bean id="clientSpring" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
		<!-- 请求代理Servlet路径 -->		
		<property name="serviceUrl">
<value>http://localhost:8080/HessianSpring/remote/helloSpring</value>
		</property>
		<!-- 接口定义 -->
		<property name="serviceInterface">
			<value>com.wtang.isay.Isay</value>
		</property>
	</bean>
</beans>



大家看上课,使用spring Hessian的代理工厂,创建一个 单例的对象,大家看属性,serviceUrl属性值是写死的。

也就是说,客户端(也就是消费者),获取服务的地址已经写死了,那么服务端做集群的时候,多个url,

比如:

http://localhost:8080/HessianSpring/remote/helloSpring

http://localhost:8081/HessianSpring/remote/helloSpring
这样的话,集群就无法做了。 大家是怎么解决这个问题的?



如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(12

狼亦尘 2021-12-04 20:04:12

将多个服务注册到zookeeper下 . 存储节点为node1 , node2 , 分别对应 service1的服务 和 service2的服务 . 容器中添加计数器 , 对服务及节点的访问进行计数  . 这样既能实现服务集群 . 也能实现负载均衡 . dubbo的思路 

拍不死你 2021-12-04 20:04:09

HessianProxyFactoryBean类的setServiceUrl方法

永不分离 2021-12-04 20:04:08

引用来自“温佐镜”的评论

能否做个扩展实现服务发现,自动路由呢?或者使用其他服务框架,如dubbo、hsf,这些都支持注册中心

北笙凉宸 2021-12-04 20:04:08

我没看过这部分的源码,大概也有个思路

扩展两个类

org.springframework.remoting.caucho.HessianServiceExporter  初始化完后把自己的服务向注册中心注册
org.springframework.remoting.caucho.HessianProxyFactoryBean  把静态的地址改成向向注册中心获取

不需要改动hessian,hessian只是底层的rpc实现,spring应该也是在上层封装而已

策马西风 2021-12-04 20:04:06

引用来自“温佐镜”的评论

能否做个扩展实现服务发现,自动路由呢?或者使用其他服务框架,如dubbo、hsf,这些都支持注册中心

千纸鹤带着心事 2021-12-04 20:04:05

引用来自“温佐镜”的评论

能否做个扩展实现服务发现,自动路由呢?或者使用其他服务框架,如dubbo、hsf,这些都支持注册中心

毁梦 2021-12-04 20:03:58

能否做个扩展实现服务发现,自动路由呢?或者使用其他服务框架,如dubbo、hsf,这些都支持注册中心

牵你的手,一向走下去 2021-12-04 20:02:44

引用来自“兮风古道”的评论

这个可以用域名的方式做智能dns。你把example.com域名解析到你两个主机上host1,host2。 你在客户端访问的时候,dns可以帮你智能的解析到各个host上。

以上

回眸一笑 2021-12-04 20:01:44

这个可以用域名的方式做智能dns。你把example.com域名解析到你两个主机上host1,host2。 你在客户端访问的时候,dns可以帮你智能的解析到各个host上。

以上

灵芸 2021-12-04 18:51:38

这块你做过么?请问现在有实现么?

凯凯我们等你回来 2021-12-04 07:23:04

回复
我的实现和上面描述的思路差不多

墨洒年华 2021-12-03 04:52:28

以上都是思路,我说说具体实现中的一种方法:

重写HessianClientInterceptor和HessianProxyFactoryBean,用map缓存每个url对应的HessianProxy, 调用的时候动态去拿服务地址,如果map中有HessianProxy就直接用,否则就创建一个再用。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文