http接口
- 格式:docx
- 大小:38.42 KB
- 文档页数:9
² HTTP invoker 服务模式
2. 客户端:通过 HTTP invoker 代理向服务器端发送请求,远程调用服务接口的方法
3. 服务器端与客户端通信的数据需要序列化
配置服务器端和客户端的步骤
配置服务器端
1. 添加 springJAR 文件
建议使用 spring2+.jar 版本
2. 创建服务接口
3. 创建服务接口的具体实现类
4. 公开服务
配置客户端
1. 添加 springJAR 文件
建议使用 spring2+.jar 版本
2. 创建服务接口
3. 访问服务
实例讲解
服务器端
1. 服务接口: UcService.java
它提供两项服务,查询用户信息和记录日志,如下:
public interface UcService {
public UserInfo getUserInfobyName(String userName);
public int recordLog(String username, String point, String operate, String desc);
}
说明:举这个列子是因为其比较有代表性,它将展示普通数据类型( int,long 等)和复杂数据类型( DTO 等)的远程调用方式。 UserInfo 是一个普通的 DTO ,代码如下:
public class UserInfo implements Serializable {
private static final long serialVersionUID= -6970967506712260305L;
/**用户名*/
private String userName ;
/**电子邮箱*/
private String email ;
/**注册日期*/
private Date registDate ;
public String getUserName() {
return userName ;
}
public void setUserName(String userName) {
this. userName = userName;
}
public String getEmail() {
return email ;
}
public void setEmail(String email) {
this. email = email;
}
public Date getRegistDate() {
return registDate ;
}
public void setRegistDate(Date registDate) {
this. registDate = registDate;
}
}
注意:因为是在网络间传输对象,所以需要将 UserInfo 实现 Serializable 接口,并指定一个serialVersionUID(任意值即可,同时客户端也要有这个类,否则在客户端接收对象时会因为serialVersionUID不匹配而出现异常)
回到UcService.java ,它提供了两个服务(在这里一个方法代表一个服务功能),我们需要具体的实现类来实现真正的服务
2. 实现类是 UCServiceImpl.java
public class UCServiceImpl implements UcService {
private static Logger pointrecordlog= Logger.getLogger ( "pointrecordlog" );
private static Logger logger= Logger.getLogger (UCServiceImpl. class);
private UcFacade ucFacade ;
public void setUcFacade(UcFacade ucFacade) {
this. ucFacade = ucFacade;
}
public UserInfo getUserInfobyName(String userName) {
UserInfo user = null;
try{
user = ucFacade .getUserInfoDetail(userName);
logger.debug( "get userinfo success by username:" + userName);
} catch(Throwable t) {
logger.error( "get userinfo fail by username:" + userName, t);
}
return user;
}
public int recordLog(String username, String point, String operate, String desc) {
int result = 0;
try{
(username + " - " + point + " - " + operate + " - " + desc);
} catch(Throwable t) {
result = -1;
logger.error(t);
}
return result;
}
}
说明: ucFacade 是通过 spring 注入的一个数据查询类,因为它与 http invoker 没有直接关系,所以不进行介绍。
3. 公开服务 UcService.java
² WEB-INF/application-context.xml :将接口声明为 HTTP invoker 服务
class = "org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> value = "qin.baike.service.UcService">