Spring HttpInvoker 远程调用

Spring HttpInvoker 是 spring 框架中的一个远程调用模型,执行基于 HTTP 的远程调用,并使用 java 的序列化机制在网络间传递对象,客户端可以很轻松的像调用本地对象一样调用远程服务器上的对象。 

  HttpInvoker 服务模式

服务器端配置

1、创建服务接口

package cn.gtmap.approval.service.interf;

import java.util.Map;

public interface ApprovalService {
	/**
	 * 获取勘测定界相关信息
	 * {"wlydMj":5521,"gdMj":35894,"nydMj":47141,"jsydMj":0}
	 * @param proid 工作流id
	 * @return
	 */
	Map<String, Object> getKcdjInfo(String proid) throws Exception;
}

2、创建服务接口实现类

package cn.gtmap.approval.service.impl;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;

import cn.gtmap.approval.service.interf.ApprovalService;

@Service
public class ApprovalServiceImpl implements ApprovalService {
	@Override
	public Map<String, Object> getKcdjInfo(String proid) throws Exception {
		if (StringUtils.isNotBlank(proid)) {
			Map<String, Object> map = new HashMap<String, Object>(6);
			map.put("nydMj", 1);
			map.put("gdMj", 2);
			map.put("jsydMj", 3);
			map.put("wlydMj", 4);
			return map;
		}
		return null;
	}
}

3、公开服务

app-config.xml

	<bean id="approvalServiceImpl" class="cn.gtmap.approval.service.impl.ApprovalServiceImpl"/>
	<bean name="approvalService" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
        <property name="service" ref="approvalServiceImpl"/>
        <property name="serviceInterface" value="cn.gtmap.approval.service.interf.ApprovalService"/>
    </bean>

注: HttpInvokerServiceExporter 实际上是一个spring mvc 控制器,它处理客户端的请求并调用服务实现。

需要为其提供spring URL 处理器,如下:

	<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/approvalService">approvalService</prop>
			</props>
		</property>
	</bean>

4、添加 SpringSecurity过滤

<security:intercept-url pattern="/approvalService/**" filters="none"/>

最终服务地址为:

http://ip:port/web工程/approvalService

客户端配置

1、将服务器短的ApprovalService接口类直接拷贝到客户端

2、配置访问服务

    <bean id="ApprovalService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
		<property name="serviceUrl" value="${approval.url}/approvalService"/>
		<property name="serviceInterface" value="cn.gtmap.approval.service.interf.ApprovalService"/>
	</bean>

3、调用接口

@Resource
@Qualifier("ApprovalService")
private ApprovalService approvalService;
public String execute() throws Exception {
	Map<String, Object> map = approvalService.getKcdjInfo("21AD2944GCJ7X208");
	System.out.println(map);
}	Map<String, Object> map = approvalService.getKcdjInfo("21AD2944GCJ7X208");
	System.out.println(map);
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值