Transaction Helper组件:OSGi-DS事务管理简化方案

需积分: 13 0 下载量 11 浏览量 更新于2024-11-28 收藏 29KB ZIP 举报
资源摘要信息:"Transaction-helper: transaction.helper是一个OSGi-DS组件,其主要功能是简化在代码中使用事务传播的过程。该组件通过注册具有众所周知的传播功能(requires,requireNew,never等)的TransactionHelper OSGi服务来实现这一点。该项目已经不再维护,而是被拆分成了多个单独的微型项目。其中一个项目是transaction-propagator-jta-ecm,这是一个尚未实施的项目,它将是围绕事务传播器的jta实现的OSGi组件包装。另外两个项目是包含接口的API和基于JTA的API实现。版本1.0.1及以后的版本与Java 5兼容,而1.1.x及以后的版本在回滚或setRollbackOnly期间发生异常时,使用Throwable.add来处理异常。" 首先,需要了解的是OSGi(Open Service Gateway Initiative)是一个Java动态模块系统标准,它为Java平台带来了模块化编程的能力。OSGi-DS(Declarative Services)则是一种特定的OSGi服务,它允许开发人员声明式地定义服务组件,以简化服务的创建和管理。在这种架构下,Transaction-helper作为一个组件,意味着它可以在OSGi环境中被动态地添加、启动、停止和移除,而不需要重启整个应用程序。 事务传播(Transaction Propagation)是分布式系统和多线程编程中的一个重要概念。它允许一个事务的上下文信息被传播到多个线程或多个数据库操作中。在Java中,事务传播是通过Transaction Propagation属性来控制的。Transaction Helper组件提供了对事务传播功能的封装,使得开发者可以通过简单地使用TransactionHelper服务来执行复杂的事务传播操作。 从描述中我们可以知道,Transaction-helper项目包含了如下关键知识点: - JTA(Java Transaction API):JTA是Java EE的规范之一,它定义了一组用于执行分布式事务的接口。JTA允许开发者在分布式系统中使用事务,确保数据的一致性和完整性。 - LogService:LogService是一个用于记录信息的组件,通常用于调试和记录应用程序中的事件。在Transaction-helper中,LogService被用于记录在事务回滚或设置为只回滚状态时抛出的异常。 - Throwable.add:这是一个在Java中添加异常信息的方法。在Transaction-helper项目的新版本中,使用Throwable.add来处理在回滚或setRollbackOnly期间发生的异常,这可能涉及到异常链的使用,以保留原始异常的详细信息并添加新的上下文信息。 - 版本兼容性:描述中提到的版本1.0.1与Java 5兼容,这意味着该版本的Transaction-helper考虑了Java 5平台的特定需求和限制。随着Java版本的更新,新版本可能引入了新的特性或者改进,比如使用Throwable.add来处理异常。 尽管Transaction-helper项目已经不再维护,但它曾作为一个模块化的解决方案,其设计理念和实现方式对于学习和理解OSGi环境下的服务组件化设计、事务管理以及Java异常处理都是有帮助的。此外,项目拆分后形成的微型项目为未来可能的开发提供了新的方向,例如jta实现和API的进一步开发。对于这些微型项目,开发者可能需要关注它们各自的特点,以及如何单独使用或集成它们来满足特定的业务需求。
2017-11-09 上传
/** * 微信支付帮助库 * ==================================================== * 接口分三种类型: * 【请求型接口】--Wxpay_client_ * 统一支付接口类--UnifiedOrder * 订单查询接口--OrderQuery * 退款申请接口--Refund * 退款查询接口--RefundQuery * 对账单接口--DownloadBill * 短链接转换接口--ShortUrl * 【响应型接口】--Wxpay_server_ * 通用通知接口--Notify * Native支付——请求商家获取商品信息接口--NativeCall * 【其他】 * 静态链接二维码--NativeLink * JSAPI支付--JsApi * ===================================================== * 【CommonUtil】常用工具: * trimString(),设置参数时需要用到的字符处理函数 * createNoncestr(),产生随机字符串,不长于32位 * formatBizQueryParaMap(),格式化参数,签名过程需要用到 * getSign(),生成签名 * arrayToXml(),array转xml * xmlToArray(),xml转 array * postXmlCurl(),以post方式提交xml到对应的接口url * postXmlSSLCurl(),使用证书,以post方式提交xml到对应的接口url */ include_once("SDKRuntimeException.php"); include_once("WxPay.pub.config.php"); /** * 所有接口的基类 */ class Common_util_pub { function __construct() { } function trimString($value) { $ret = null; if (null != $value) { $ret = $value; if (strlen($ret) == 0) { $ret = null; } } return $ret; } /** * 作用:产生随机字符串,不长于32位 */ public function createNoncestr( $length = 32 ) { $chars = "abcdefghijklmnopqrstuvwxyz0123456789"; $str =""; for ( $i = 0; $i $v) { if($urlencode) { $v = urlencode($v); } //$buff .= strtolower($k) . "=" . $v . "&"; $buff .= $k . "=" . $v . "&"; } $reqPar; if (strlen($buff) > 0) { $reqPar = substr($buff, 0, strlen($buff)-1); } return $reqPar; } /** * 作用:生成签名 */ public function getSign($Obj) { foreach ($Obj as $k => $v) { $Parameters[$k] = $v; } //签名步骤一:按字典序排序参数 ksort($Parameters); $String = $this->formatBizQueryParaMap($Parameters, false)