/**

* 类名        : HessianApi

*

* 参考资料    :

* 1.http://hessian.caucho.com/ ( Hessian主页 )

* 2.http://hessianphp.sourceforge.net/ ( Hessian PHP )

* 3.http://sourceforge.net/projects/hessianphp/ ( Hessian PHP开源 )

* 4.http://baike.baidu.com/view/1859857.htm ( 单例模式 )

*

* @author wubaiqing

* @package system.core applied to the whole site

* @copyright Copyright (c) 2012

* @since 1.0

*/

class HessianApi

{

/**

* @var string 接口地址

*/

private $_url = NULL;

/**

* @var result 句柄

*/

private $_handle = NULL;

/**

* @var array 存放单例模式数组

*/

private static $_objects = array();

/**

* 设置URL地址

* 实例化HessianClient类

* 参数    : (1) url地址 , 2

*

* 2.Java调用字段

* @param string $url

*/

public function __construct( $url )

{

$this->setUrl( $url );

$handler = new HessianClient ( $this->getUrl (), $this->getOptions () );

$this->setHandler ( $handler );

}

/**

* @return result $_handle 句柄

*/

public function getHandler() {

return $this->_handle;

}

/**

* 设置句柄

* @param result $_handle

*/

public function setHandler($_handle) {

$this->_handle = $_handle;

}

/**

* 获取URL地址

*/

public function getUrl() {

return $this->_url;

}

/**

* 设置URL地址

* @param string $url

*/

public function setUrl($url) {

$this->_url = $url;

}

/**

* typeMap映射Java等平台对象

* @return array

*/

public function getOptions() {

return array (

'version' => 1,

'saveRaw' => TRUE,

'typeMap' => array(

'JavaNullPointException' => 'java.lang.NullPointerException' ,

'StackTraceElement' => 'java.lang.StackTraceElement')

);

}

/**

* 记录接口调用信息

* @param string $method 调用的方法

* @param string $returnMsg 需要记入log的文字信息

*/

public function resultLog( $method , $returnMsg )

{

$logPath = PATH.'/runtime/hessian/';

if( !is_dir( $logPath ) ) {

mkdir($logPath,0777);

}

error_log(date('Ymd H:i:s', time()) . '|' . $method . '|' . $returnMsg."\n", 3, $logPath . date('Y-m-d', time()) . '.log');

}

/**

* 静态工厂方法,生成单个URL的唯一实例

* @param string $url

*/

public static function start( $url )

{

$key = md5( $url );

if ( isset(self::$_objects[$key]) ) {

return self::$_objects[$key];

}

self::$_objects[$key] = new HessianApi( $url );

return self::$_objects[$key];

}

}

class JavaNullPointException extends Exception {}

class StackTraceElement extends Exception {}

// IDE : Zend Studio 9.0

// IDE Extension : Toggle Vrapper

?>

hessian java php_探讨Hessian在PHP中的使用分析相关推荐

  1. java hessian 协议_dubbo的Hessian协议的使用

    因为在项目中需要在dubbo的消费者和生产者之间传递文件,目前使用的是字节数组作为参数的形式,但是看到官网提供的文档说Hessian协议适合传递文件,所以自己做了一个例子,测试后是可以正常运行的.下面 ...

  2. 2021 Java面试题总结(更新中)

    目录 一.面试题 1.SpringMVC的流程? 2.SpringMVC怎么设定 重定向 和 转发 的? 3.SpringMVC常用的注解有哪些? 4.Equal 和 == 区别 ==运算符的使用 e ...

  3. Hessian学习总结(一)——Hessian入门

    一.远程通讯协议的基本原理 网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http . tcp . udp 等等, http . ...

  4. hessian java_java序列化之Hessian

    一.Hessian序列化的前提 Hessian要实现序列化,前提是被序列化的类得实现Serializable接口. 二.Hessian序列化的实现 1.首先需要jar 2.代码实现 public cl ...

  5. [Java学习探讨]为什么学Java虚拟机的Java程序员更有价值?

    个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 [Java学习探讨]为什么学Java虚拟机的Java程序员更值钱? 曾经的我经常害怕处理与JVM相关的异常,对JVM的配置参数也一无 ...

  6. java boolean几个字节_Java中boolean类型到底占用多少个字节?

    1.时间:2017-07-03 07:37:06YuanMxy 2.问题描述:今天在复习java基础的时候发现一小问题,Java中boolean类型到底占用多少个字节? 3.问题解答: (1)什么是b ...

  7. java主线程捕获子线程中的异常

    java主线程捕获子线程中的异常 参考文章: (1)java主线程捕获子线程中的异常 (2)https://www.cnblogs.com/jpfss/p/10272726.html (3)https ...

  8. java 基本类型的引用_Java中的基本数据类型与引用数据类型

    一.基本数据类型 byte.short.int.long(整数类型) float.double(浮点数类型) char(字符型) boolean(布尔类型 ) Java数据大多数存放在堆栈中.栈区:存 ...

  9. java人名识别_HanLP中人名识别分析(示例代码)

    HanLP中人名识别分析 在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: HanLP参考博客: 分词 分词:给定一个字 ...

最新文章

  1. 无盘服务器游戏盘尺寸,网吧无盘游戏服务器 案例五
  2. 说说标准服务器架构(WWW+Image/CSS/JS+File+DB)
  3. 远程计算机管理权限,肿么获得远程计算机管理员权限
  4. WebSphere MQ 自动启动发送方通道
  5. shiro表单登录认证及退出(自定义form认证器)
  6. 数据“土豪”电信云告诉你,如何“玩转”数据生态
  7. Mybatis实现多表关联多条件查询
  8. 小程序引入百度地图与uni.getLocation的使用
  9. 如何学习开源项目及Ceph的浅析
  10. 如果把钱存入余额宝时,所有人都在受益,那么谁在亏损呢?
  11. Shiro Spring 集成xml配置
  12. 仿苹果涂鸦软件_ipad平板电脑有哪些绘画软件?
  13. 起底“XX神器”:超级手机病毒的因果
  14. 无线路由器建立usb共享打印服务器,无线路由器USB网络共享管理设置方法
  15. (时间表达式)定时任务Quartz 之 cron表达式及在线生成器
  16. 密码学常用数学计算软件sagemath安装使用
  17. ES6模板字符串(循环、函数)
  18. go module使用教程:使用go mod的方法.报错go: cannot determine module path for source directory E:\tttttt (outside
  19. 柳州铁一中机器人_柳州铁一中学学子在2020年广西中小学电脑机器人竞赛中勇创佳绩...
  20. web漏洞扫描器-Burpsuite 常规测试

热门文章

  1. 你需要知道的MySQL开源存储引擎TokuDB
  2. mysql max 多个字段_mysql – 选择max()多列
  3. keycloak mysql_Keycloak换mysql存储详细步骤
  4. 单独组件_苹果已停止对macOS Big Sur 11.0.1版本macOS系统组件的单独更新
  5. 一文带你学会基于SpringAop实现操作日志的记录
  6. xps数据怎么导出为txt_使用ExportAsFixedFormat方法将数据导出到PDF或XPS.docx
  7. Linux中为wget命令设置代理
  8. C语言标准库函数getenv的实现
  9. linux快速还原oracle,linux下恢复误删除oracle的数据文件
  10. java 设计原则_【无尽的编程之路】(java)-设计模式六大原则