领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Craig Wickesser 译者 李剑 发布于 2007年12月17日
Apache Web Services Wiki上的Stack Comparison(特性比较)表明,目前有Apache的Axis 1.x、Axis2,Metro@GlassFish和Oracle Application Server 10g提供了客户端异步交互和服务器端异步交互。
Apache Axis2是一个开源的Web Services引擎,通过Axis2,开发人员可以使用Java或C来调用或是实现Web Services。Axis2的一个核心特性就是可以提供同步式和异步式的交互,Rajith Attapattu对此解释说:
为同步式和异步式交互提供支持,是Web Services的一个关键性需求,因为这二者都有着非常普遍的应用。Axis2在传输层提供了这一特性,当请求到来后,可以通过同一种或是不同的传输方式来作出异步式响应。例如,如果一个请求通过HTTP到达,而后完成了异步式处理工作,最终的响应可以通过HTTP或是截然不同的传输方式——例如JMS——返回。
Eran Chinthaka的一篇名为“使用Axis2开发异步Web Services(Develop asynchronous Web services with Axis2)”的文章中,提供了一些在客户端和服务器端应用中使用Axis2的异步APIs的示例。
在使用Axis2时,有两种方法可以异步式调用Web Services。第一种方法是使用Nonblocking API,
你可以为客户端提供一个nonblocking API,这样它就可以把请求传递给SOAP引擎,继续做其他工作。客户端会提供一个回调对象,当SOAP引擎从服务器端收到响应时,就会通知这个回调对象。这种方式对使用GUI的交互式应用尤其有效。
Axis2的早期版本中有一个叫做Callback的类,它可以被用来作为异步式消息的回调机制,或是一种轮询(polling)机制。这个类在Axis2 1.3中已经被废弃了,取而代之的是一个简单的接口——AxisCallback。藉由这个新的接口,开发人员可以实现service异步调用过程中的细粒度通知,但它并没有提供Callback类中的轮询机制。
在客户端异步式调用Web Services的第二种方法是在传输层实现的。Eran描述了Axis2提供的传输方式,
所有可以用于Web Services调用中的传输方式可以大致分为两种:
客户端在处理请求——响应的交互时,可以有多种选 择。最简单的一种就是用类似HTTP的双向传输。但是这种方式没有用到传输层的异步特性。客户端还可以使用两个单向传输或是两个双向传输。例如,你可以用 一个SMTP通道来发送消息,再用另外一个SMTP通道来接收消息。同时,你还可以用一个HTTP通道来发送请求,在消息发出后关闭通道,再使用另外一个 HTTP通道来接受响应。但这就必须要有一种消息关联机制来使这种方式工作。Apache Axis2使用了WS-Addressing规范来实现消息关联。
- 单向传输——提供发送或者接受消息的通道。
- 双向传输——可以使用一个通道来发送和接收消息。
在Axis2中,用哪一种传输机制都变得非常简单,开发人员所需要做的就是在客户端通过设置useSeparateListener标记来使得双向传输可用。
Apache Axis2在为客户端提供了异步式交互的同时,还提供了服务器端的异步式交互。标准的SOAP引擎通常只是在同一个线程中接受请求并做出响应。基于和客户端同样的原因,在服务器端提供异步式的处理并响应客户端请求也是大有益处的。
Axis2用了一个消息接收器来负责处理MEP,并把消息传送给对请求进行处理的逻辑或是服务实现。在一个同步调用中,消息接收 器会调用服务实现类(假设服务实现是用Java语言编写的)中的正确方法,然后在同一个线程中发送响应。但是在异步调用中,这个消息接收器会启动一个新的 线程来调用服务并向客户端发送通知。这个新的线程负责向客户端发送响应和从服务实现类中获取响应。有两种方法可以很简单的在服务器端启用异步式交互,一种是在WSDL生成器中使用正确的标记,或是对services.xml进行配置,让它使用AbstractInOutAsyncMessageReceiver。
Eran Chinthaka在文末总结说:
异步式调用给Web Service的用户或是编写并托管Web Services的人提供了很大的灵活性。越来越多的Web Services变得更加通用,更加复杂,也有越来越多的应用程序把这些Web Services集成到自己的应用中去。因为大多数最终应用基本上都需要和用户交互,所以如何提高用户体验就成了重中之重。在多种层次上——客户端和服务 器端——提供异步式的Web Services调用,可以帮助我们加深对这些目前面临的挑战的认识。查看英文原文:Using Axis2 for Asynchronous Web Services
译者 李剑 李剑──ThoughtWorks高级咨询师,在持续集成、重构等领域具有丰富的经验;多次为国内大型企业敏捷组织转型提供咨询和培训服务。
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
论道WP第三篇专栏,以应用程序栏的使用为中心,包括了软键盘带来的问题、应用程序栏介绍、如何绑定应用程序栏的属性等几个方面的具体话题,为开发者顺利使用应用程序栏开发提供了具体指导。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
没有回复
关注此讨论 回复