Spring 客户端连接服务

本文介绍如何使用Spring框架的HttpInvokerProxyFactoryBean进行远程服务调用。通过简单的配置即可实现基于HTTP协议的服务交互,支持使用J2SE的HTTPClient或CommonsHttpClient。
Spring 客户端连接服务
Spring 提供了 HttpInvokerProxyFactoryBean 工厂 bean 连接服务。类似于 Hessian 的 HessianProxyFactoryBean ,配置 HttpInvokerProxyFactoryBean 时,只需指定服务的

url 以及服务实现的接口。通过使用代理, Spring 可将调用转换
Spring提供了HttpInvokerProxyFactoryBean工厂bean连接服务。类似于Hessian的HessianProxyFactoryBean,配置HttpInvokerProxyFactoryBean时,只需指定服务的url以及服务

实现的接口。通过使用代理,Spring可将调用转换成POST请求发送到指定服务。详细的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Spring配置文件的文件头,包含dtd等信息-->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<!-- Spring配置文件的根元素-->
<beans>
<!-- 配置测试bean,该测试bean依赖于远程服务bean-->
<bean id="test" class="lee.Test">
<!-- 配置依赖注入-->
<property name="hello">
<ref local="helloService"/>
</property>
</bean>

<!-- 配置连接远程服务的bean-->

<bean id="helloService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<!-- 远程服务的url-->
<property name="serviceUrl" value="http://localhost:8888/httpInvoker/remoting/helloService"/>
<!-- 远程服务所实现的接口-->
<property name="serviceInterface" value="lee.Hello"/>
</bean>
</beans>
通过上面的配置,客户端可以访问httpInvoker提供的服务,默认情况下,HttpInvokerPropxy使用J2SE的HTTP Client功能。可通过设置httpInvokerRequestExecutor属性使用

Commons HttpClient。通过对配置文件简单修改,将
<bean id="helloService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<!-- 远程服务的url-->
<property name="serviceUrl" value="http://localhost:8888/httpInvoker/remoting/helloService"/>
<!-- 远程服务所实现的接口-->
<property name="serviceInterface" value="lee.Hello"/>
</bean>

修改成:
<bean id="helloService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<!-- 远程服务的url-->
<property name="serviceUrl" value="http://localhost:8888/httpInvoker/remoting/helloService"/>
<!-- 远程服务所实现的接口-->
<property name="serviceInterface" value="lee.Hello"/>
<!-- 指定使用Commons HttpClient功能-->
<property name="httpInvokerRequestExecutor">
<bean class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor"/>
</property>
</bean>
Spring Cloud连接服务器主要涉及到配置中心的服务端和客户端两部分,以下是具体的方法和配置: ### 服务端配置 创建一个名为`consul-config`的应用,接着要配置`application.yml`: ```yaml server: port: 8888 spring: profiles: active: native cloud: config: server: native: searchLocations: file:///C:\Users\zunly\spmia\spmia-chapter3\confsvr\src\main\resources\config\licensingservice ``` 此配置中,`server.port`指定了服务端的端口为8888;`spring.profiles.active`设置为`native`,表明使用本地文件系统存储配置;`spring.cloud.config.server.native.searchLocations`指定了配置文件的存储位置[^4]。 ### 客户端配置 #### 方法一 1. 创建一个名为`spring-cloud-lesson-3-config-client`的Spring Cloud Config Client应用。 2. 在`ClassPath`下面创建`bootstrap.properties`。 3. 配置`bootstrap.properties`: ```properties # 配置客户端应用关联的应用 spring.cloud.config.name=segmentfault # 关联profile spring.cloud.config.profile=prod # 关联label spring.cloud.config.label=master # 配置服务器URL spring.cloud.config.uri=http://127.0.0.1:9090/ ``` 这些配置信息以`spring.cloud.config.`开头,`spring.cloud.config.name`指定了客户端应用关联的应用名,`spring.cloud.config.profile`指定关联的`profile`,`spring.cloud.config.label`指定关联的`label`,`spring.cloud.config.uri`指定了配置服务器的URL [^1]。 #### 方法二 在`application.yml`或`application.properties`中进行配置: ```yaml server: port: 9500 spring: application: name: config-client cloud: config: # config客户端配置,和configServer通信,并告知ConfigServer获取的配置信息在哪个文件夹 name: config profile: dev # 后缀名称 label: master # 分支名称 uri: http://localhost:9400 ``` 此配置中,`server.port`指定客户端的端口;`spring.application.name`指定应用名称;`spring.cloud.config.name`、`spring.cloud.config.profile`、`spring.cloud.config.label`和`spring.cloud.config.uri`的作用与方法一中类似 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值