Tomcat 基本概念:
一.Tomcat服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,Tomcat6.x支持Servlet 2.5和JSP 2.1。
二.Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。有了Sun的支持当然就遵从J2EE规范,而所有遵从J2EE规范的应用服务器都必须支持SOAP协议。注意这里只是说遵从J2EE规范,没有说获得J2EE认证,我在网上搜了一下,也没有相关信息,说明Tomcat在处理高并发的企业级任务是较弱的。
机制:
一.WebService是一项新技术,实现应用程序间的通信。, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么,都可以相互交换数据。目前比较流行的实现方法是使用.NET 和 Java两种技术。
要达到这样的目标,Webservices要使用技术:
◆XMLXML是在web上传送结构化数据的伟大方式,Web services要以一种可靠的自动的方式操作数据,HTML不会满足要求,而XML可以使webservices十分方便的处理数据,它的内容与表示的分离十分理想。是WebService平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XML是由万维网协会(W3C)创建,W3C制定的XML SchemaXSD 定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。
◆XSDWeb Service平台是用XSD来作为数据类型系统的。当你用某种语言如VB. NET或C# 来构造一个Web Service时,为了符合WebService标准,所有你使用的数据类型都必须被转换为XSD类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如 SOAP。
◆SOAPSOAP使用XML消息调用远程方法,这样webservices可以通过HTTP协议的post和get方法与远程机器交互,而且,SOAP更加健壮和灵活易用。SOAP即简单对象访问协议 (SimpleObject AccessProtocol),它是用于交换XML编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在任何其他传输协议上。例如,你可以使用SMTP,即因特网电子邮件协议来传递SOAP消息,这可是很有诱惑力的。在传输层之间的头是不同的,但XML有效负载保持相同。
◆WSDL Web Service描述语言WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述WebService及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
◆调用RPC与消息传递
WebService本身其实是在实现应用程序间的通信。我们现在有两种应用程序通信的方法:RPC远程过程调用和消息传递。使用RPC的时候,客户端的概念是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。RPC系统试图达到一种位置上的透明性:服务器暴露出远程对象的接口,而客户端就好像在本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在哪台机器上
下面附上一张WebService的流转图:
在附上一张Tuscany的架构图,公司用的版本是1.6:
最后附上Tuscany的运行环境,真相大白:
原来Tomcat是直接支持Tuscany发布服务的,在公司现在的SOA框架中用的Tuscany SCA1.6,实现方式是Spring,然后将服务绑定为WebService和Hessian、JSONRPC,调用WebService服务的时候SOAP协议包着XML和XSD这些特定的信息,去访问服务,至于Hessian服务就用HessianProxyFactory这样简单的方式就可以调用了。恩,就这样。
大家可以去IBM的开发网站上看:http://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/,这篇文章将Tomcat的原理介绍得很清楚了。IBM是OSOA的贡献者,有很多资源提供给开发者。