Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。
由于项目上使用PHP与JAVA,其中一些业务场景需要保持两者相互调用。
Hessian支持多语言,还有另外一个选择Twitter开源项目Thrift,这个后面的文章会记录。
两者的区别请自行google.
采用Hessian很大一部分原因是Java项目集成该组件,使用起来也比较方便,直接下载PHPHessianClient就能搞定。Java Web集成 hessian请点击链接。
1、Java服务端
/**
*
* 类描述: 远程服务方法调用
* @author junhua.zhou
*
* @version
*/
public interface IDataService {
public byte[] process(byte[] params) ;
public String callProc(String params) ;
}
/**
*
* 类描述: 远程服务方法调用Imple
* @author junhua.zhou
*
* @version
*/
public class DataServiceImpl implements IDataService {
public static final Log log = LogFactory.getLog(DataServiceImpl.class) ;
@Override
public byte[] process(byte[] params) {
return null;
}
@Override
public String callProc(String params) {
System.out.println(params);
return "";
}
}
2、PHP客户端
①下载 HessianPHP_v2.0.3.zip
<?php
// test.php
// 加载hessian client
include(dirname(APP_PATH).'/lib/Common/Include/hessian/HessianClient.php');
// Java rpc server
$testurl = 'http://localhost:8080/zqdkjob/rmi';
$proxy = new HessianClient($testurl);
try{
$data = array(
'uid'=> '11' ,
'type'=>'2'
) ;
echo $proxy->callProc(json_encode($data));
} catch (Exception $ex){
// …handle error
echo $ex->getMessage();
}
3、验证
php test.php
Java 打印结果 {“uid”:”11”,”type”:”2”} 表示联通成功