http接口

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

² 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">

相关文档
最新文档