Axis
Apache Axis 是Apache WebService项目中的子项目,其最初起源于IBM的"SOAP4J",应该属于最早的一批用于构造基于SOAP应用的Framework。 目前Apache Axis已经发展到了第三代,其核心是一个SOAP处理器,用于开发包括客户端,服务器端,SOAP Gateway等各种应用。事实上Apache Axis在了1.0版后,其发行版本还包括了完整的J2EE服务器插件, WSDL支持和生成,TCP/IP监视器等组件,从这个意义上来说Apahce Axis已不仅仅是个SOAP框架了,它包含了除了UDDI外对整个Web Service协议栈(Protocol Stack)的支持。
UDDI4J
uddi4j是一个JAVA类库,提供了一个API来与web服务UDDI注册中心相结合。UDDI4J得到了
HP, IBM和SAP的支持。UDDI是统一描述、发现和集成(Universal Description, Discovery, and Integration的缩写。
WSIL4J
WSIL4J是Java类库,简化了对Web服务注册中心、描述和检查文档的处理。
WSIF
WSIF 是apache的web服务项目的一个子项目,目前版本是2.0,实际上是WSIF被提交给ASF后的第一次发布版本,命名为2.0是和以前非 Apache发布的1.x版本相区别。 WSIF提供了一组简单的API来调用web服务而不需要了解该web服务的实现方式,更深入的说,WSIF是一组基于WSDL文件的API,他调用可以 用WSDL文件描述的任何服务。 WSIF中提供的API允许编程者通过WSDL描述内容和web服务调用的抽象层打交道,而不是直接使用SOAP来调用web服务。编程者使用WSIF后 就可以使用统一的编程模型来调用web服务而不需要了解该web服务是如何实现和被访问的。 WSIF 2.0中里面提供了下列内容的支持: SOAP(可以使用apache SOAP或者axis实现)、本地java类、EJBs、JMS services和其它可以通过java connector访问的应用。WSIF规定了特别的WSDL扩展使这些资源可以被当成WSDL描述的服务访问。 WSIF允许通过运行时分析web服务描述的元数据来实现无stub或者动态的调用一个web服务。他允许在运行时将更新的绑定实现插入到WSIF中,他 允许调用的服务在运行时之前选择自己的绑定实现。 WSIF具有以下几个主要特征: 1,以WSDL为中心和服务的抽象定义(portType)打交道,隐藏实现细节(协议绑定和服务位置) 2,可插入式允许增加心得提供者使应用可以通过修改WSDL就可以应用新的web服务而不需要修改应用的代码 3,可扩展很容易使用新的WSDL扩展进行试验 4,灵活性很容易定制很容易和JNDI结合使用是服务被提供的位置更加透明
Caucho Burlap
Burlap是一个轻量级的XML RPC协议.利用Burlap Web服务协议使用Web服务不需要大型的框架也不用学习其它协议。
Xfire
XFire是与Axis 2并列的新一代WebService框架。具有如下:
- 支持一系列Web Service的新标准--JSR181、WSDL2.0 、JAXB2、WS-Security等 ;
- 使用Stax解释XML,性能有了质的提高。XFire采用Woodstox 作Stax实现;
- Easily Create Services from POJOs;
- 易于与Spring框架结合;
- 灵活的Binding机制,包括默认的Aegis,xmlbeans,jaxb2,castor
SOAP UDDI
SOAP UDDI是一个符合UDDI 2.0的Web服务UDDI注册中心(registry).利用这个UDDI注册中心,Web服务开发者可以发布和测试他们的程序在一个安全的,不公开的环境中.
Caucho Hessian
Hessian也是一个轻量级的,自定义描述的二进制RPC协议.因为它是一个二进制协议,所以它很适合于发送二进制数据而需要使用其它附件来扩展这个协议.
Ivory
Ivory为Java classes,Avalon服务,和Axis这三者之间相互结合提供了一种简单的方式.它允许开发soap服务不需要进行Axis通常所要求的WSDD配置,同样也可以让Avalon服务使用标准WSDD配置变得简单.
Crispy
利 用Crispy提供的一个统一接口,你可以调用RMI,WebService,REST,XML-RPC,EJB,Burlap,Hessian等其它服 务.你不需要知道这些服务是怎样工作的,要调用的服务类型可在properties文件中定义.远程调用就像简单Java对象调用一样,你可以把 Crispy集成到一个SOA(Service Oriented Architecture)或RCP(Rich Client Platform)中.
XINS
XINS 是一项规范技术用于定义,创建和调用远程APIs。当API规范在XML文档中定义好之后,XINS将会把它们转换成包括客户端与服务端的HTML文档与 Java代码.XINS将与复杂的SOAP技术竞争,因为它被设计得具有简单性,可扩缩性与可测试性。简要地说就是:SOA+Java+XML+ 代码生成-复杂性 => XINS。
![xins.jpg](http://www.open-open.com/image/xins.jpg)
Restlet
Restlet这个开源项目为那些要采用
REST结构体系(Web Service标准:基于直接在HTTP上交换原始XML文档的思想)来构建应用程序的Java开发者提供了一个具体的解决方案。它由两部分组成:
1.Restlet API:
支持所有REST概念(资源,表示法,数据,连接器,组件等)。
适合于client与server REST应用程序。
用先进模式匹配的特性来支持URIs as UI的思想。
用Chainlets filter来实现像日记,认证与压缩等功能。
支持阻塞与非阻塞NIO模式。
2.Noelios Restlet Engine (NRE):
用 Noelios Consulting提供的核心包来实现Restlet API。
利用HTTP (通过Jetty连接器)来提供服务器连接器。
利用HTTP, JDBC,SMTP (通过JavaMail)来提供客户端连接器。
支持logging (LogChainlet), authentication (GuardChainlet)与 cool URIs重写(RedirectRestlet)。
采用FreeMarker模板来展示JSP页面等其它功能。
1.Restlet API:
支持所有REST概念(资源,表示法,数据,连接器,组件等)。
适合于client与server REST应用程序。
用先进模式匹配的特性来支持URIs as UI的思想。
用Chainlets filter来实现像日记,认证与压缩等功能。
支持阻塞与非阻塞NIO模式。
2.Noelios Restlet Engine (NRE):
用 Noelios Consulting提供的核心包来实现Restlet API。
利用HTTP (通过Jetty连接器)来提供服务器连接器。
利用HTTP, JDBC,SMTP (通过JavaMail)来提供客户端连接器。
支持logging (LogChainlet), authentication (GuardChainlet)与 cool URIs重写(RedirectRestlet)。
采用FreeMarker模板来展示JSP页面等其它功能。
Gomba
Gomba 是一组Java servlets集合,它能够帮助开发者快速构建RESTful Web services。Gomba在内部使用JDBC API同时是关系型数据库与Web之间的一个接口。Gomba可作为一个动态Web站点的中间层甚至可以作为一个数据库的报表工具。它的特点:使用 http与XML来读取与写入数据到一个RDBMS。把SQL结果集表示成XML。使用XSLT来定制XML输出。使用JSTL+EL来构建动态SQL。 支持BLOB与CLOB SQL数据类型。支持Multipart form请求处理。使用XML responses进RESTful错误处理。
jSoapServer
jSoapServer这个Java类包可以集成到Java应用程序中为外部程序提供一个SOAP接口。jSoapServer是一个独立的SOAP服务器,因此不需要让Java程序运行在像Tomcat这样的容器中。它具有的特性包括:
*多线程SOAP服务器,
*使用线程池,
*支持对gzip内容进行编码,
*支持对压缩内容进行编码,
*支持持久连接(persistent connections:http keep-alive),
*支持SOAP1.1/1.2,
*支持生成WSDL,
*支持生成servlice列表,
*支持SOAP附件(DIME,MIME)。
*多线程SOAP服务器,
*使用线程池,
*支持对gzip内容进行编码,
*支持对压缩内容进行编码,
*支持持久连接(persistent connections:http keep-alive),
*支持SOAP1.1/1.2,
*支持生成WSDL,
*支持生成servlice列表,
*支持SOAP附件(DIME,MIME)。
JBossWS
JBossWS实现了一个新的符合JAX-RPC1.1标准的SOAP stack,可用于替代先前的WS4EE和JBoss.NET。它能够更好的与整个JBoss架构体系相集成。
soapui
soapui 提供一个工具通过soap/http来检查,调用,实现web service和web service的功能/负载/符合性测试。该工具既可作为一个桌面应用软件使用,也可利用插件集成到Eclipse,maven2.X,netbeans 和intellij中使用。
![](http://www.open-open.com/projectimage/soapui_screenshot.gif)
kSOAP2
kSOAP2是一个SOAP web service客户端包。主要用于资源受限制的Java环境如Applets或J2ME应用程序(CLDC/ CDC/MIDP)。
Apache CXF
Apache CXF一个开源的Service框架,它实现了JCP与Web Service中一些重要标准。CXF简化了构造,集成,面 向服务架构(SOA)业务组件与技术的灵活复用。在CXF中,Service使用WSDL标准定义并能够使用各种不同的消息 格式(或binding)和网络协议(transports)包括SOAP、XML(通过HTTP或JMS)进行访问。CXF同样支持多种model 如:JAX-WS,JBI,SCA和CORBA service。CXF设计成可灵活部署到各种容器中包括Spring-based,JBI,SCA, Servlet和J2EE容器。
Jersey
Jersey是JAX-RS(JSR311)开源参考实现用于构建RESTful Web service。此外Jersey还提供一些额外的API和扩展机制,所以开发人员能够按照自己的需要对Jersey进行扩展。
RESTClient
OpenUDDI
OpenUDDI提供一个高性能,易于使用,遵循UDDI v3规范的服务器与客户端类库。服务器使用Hibernate作为存储引擎,因此支持大部分SQL数据库,同时支持还LDAP作为数据存储。
jrest4guice
一个轻量级的基于Google Guice的Restful服务框架,支持JPA、JAAS、分布式资源对象,对OSGI的支持也在计划中。
基于Google guice 零配置,服务的自动扫描注册 非侵入式,用户不需要实现特定的接口来实现Restful服务 支持Post. Get. Put. Delete操作 灵活的注入(支持上下文环境request/response/session以及参数的自动注入) 根据客户端要求返回不同类型的数据(xml/json/html) 支持Velocity、Freemarker和Spry模板引擎(当返回类型是text/html时才有效,参见@ViewTemplate) 支持JPA,通过增强的BaseEntityManager实现实体的CRUD 支持事务,通过@Transactional注解声明事务的类型 支持JAAS,通过@RolesAllowed注解声明操作所需要的角色 支持分布式资源对象,实现业务逻辑的分布式部署
基于Google guice 零配置,服务的自动扫描注册 非侵入式,用户不需要实现特定的接口来实现Restful服务 支持Post. Get. Put. Delete操作 灵活的注入(支持上下文环境request/response/session以及参数的自动注入) 根据客户端要求返回不同类型的数据(xml/json/html) 支持Velocity、Freemarker和Spry模板引擎(当返回类型是text/html时才有效,参见@ViewTemplate) 支持JPA,通过增强的BaseEntityManager实现实体的CRUD 支持事务,通过@Transactional注解声明事务的类型 支持JAAS,通过@RolesAllowed注解声明操作所需要的角色 支持分布式资源对象,实现业务逻辑的分布式部署
kSOAP
kSOAP是一个SOAP web service客户端类库,适用于那些资源受限制的Java环境比如:Applets,J2ME应用程序(CLDC/CDC/MIDP)。
Metro
Metro 是一个高性能,可扩展,易于使用的web service stack/framework。它提供一个一站式解决方案来满足你所有web service需求。从最简单的hello world web service到可靠,安全和涉及与.NET服务交互的事务处理web service。
sqlREST
sqlREST能够将关系型数据库发布为REST风格的Web Service。为任何能够通过JDBC访问的数据库提供Web Service访问接口,使用HTTP方法GET、POST、PUT和DELETE就能够查询,创建,修改和删除数据库中的数据记录。
GWT-REST
Redstone XML-RPC Library
Redstone 是XML-RPC规范的一个Java实现,支持任意Java对象的动态代理与序化(Serialization)。 Redstone提供一个XML-RPC客户端用于访问XML-RPC服务,和一个XML-RPC servlet用于在web服务器中将普通的Java对象发布作为XML-RPC服务。Redstone还提供一组序化器(serializer)用于生 成可以代替XML-RPC信息的JSON信息,以便从JavaScript也可以访问XML-RPC服务。
PHPRPC
PHPRPC 是一个轻型的、安全的、跨网际的、跨语言的、跨平台的、跨环境的、跨域的、支持复杂对象传输的、支持引用参数传递的、支持内容输出重定向的、支持分级错误 处理的、支持会话的、面向服务的高性能远程过程调用协议。目前已有以下几种语言的实现:ASP、ActionScript、Delphi/Kylix、 Java、JavaScript、.NET:(支持 .NET 框架下所有的语言(如 C#、VB.NET、VC.NET、Delphi.NET 等)、PHP、Python、Ruby等。
![](http://www.open-open.com/projectimage/architecture.jpg)
JetS3t
JetS3t是一个用于与Amazon S3和CloudFront交互的Java开源工具箱。它为开发人员提供强大、易于使用的API和工具来与S3交互,管理数据存储。JetS3t主要由5个应用程序组成: Cockpit:一个GUI工具用于传输文件,查看和管理 Amazon S3账号中的内容。 Synchronize:用于同步用户计算机上的目录和Amazon S3帐户的命令行工具,最适合于在不同的计算机之间同步文件与备份。 Gatekeeper:一个Servlet可以作为访问Amazon S3帐户的中介,其它没有S3帐户的客户端可以利用这个Servlet实现上传,下传,删除等操作。 CockpitLite:Cockpit的简约版本,它通过中介Gatekeeper服务实现所有操作。 Uploader:一个GUI应用程序提一个通过Gatekeeper服务实现上传文件至S3帐户中的简单向导。
jUDDI
jUDDI 是Web Services UDDI(Universal Description、Discovery、Integration)规范的一个Java实现。可以部署在支持Servlet2.3的任何Java应用 服务器上包括:Jakarta Tomcat、JOnAS、WebSphere、WebLogic、Borland Enterprise Server、JRun等。可以与支持ANSI标准SQL的关系型数据库(MySQL、DB2、Sybase、JDataStore、HSQLDB等)相 结合使用。 易于与现有的验证系统相集成。
Apache Wink
Apache Wink是一个简单而强大的RESTful Web服务创建框架。它由一个服务器端模块和一个客户端模块组成。Apache Wink的服务器端模块是JAX-RS1.0规范的一个完全实现。除了对基本协议的实现外,Apache Wink服务器端模块还提供了一系列便于开发RESTful Web服务的新特性。Apache Wink客户端模块提供了调用RESTful Web服务的相关功能,该模块基于JDK HttpURLConnection实现。
RESTEasy
RESTEasy 是JBoss的一个开源项目,提供各种框架帮助你构建RESTful Web Services和RESTful Java应用程序。它是JAX-RS规范的一个完整实现并通过JCP认证。作为一个JBOSS的项目,它当然能和JBOSS应用服务器很好地集成在一起。 但是,它也能在任何运行JDK5或以上版本的Servlet容器中运行。RESTEasy还提供一个RESTEasy JAX-RS客户端调用框架。能够很方便与EJB、Seam、Guice、Spring和Spring MVC集成使用。支持在客户端与服务器端自动实现GZIP解压缩。
Membrane SOAP Monitor
RichRest
RichRest是一个适用于RCP/RIA应用的REST(ful)框架,提供远程资源管理接口,以及远程MVC控制器支持,简化模型与视图的交互过程。 完整的RESTful支持 以数据为中心的控制器 友好的执行过程拦截器 完善的集成扩展点 可管理的传输队列 全面的事件通知 多服务器传输支持
JSON Webservice
JSON Webservice是一个让你可以采用纯JSON作为输入/输出格式,基于
JAX-WS(Metro)提供Web服务的开源项目。
Spring Web Services
Spring Web Services 是基于 Spring 框架的 Web 服务框架,主要侧重于基于文档驱动的Web服务,提供 SOAP 服务开发,允许通过多种方式创建 Web 服务。
Resty
Resty是一个微型,便利的RESTful服务调用Java客户端。它的特点就是简单和易于使用,正常只需要两行代码就能够访问RESTful Web Services。Resty支持通过GET,POST传输JSON、XML和任何文本或二进制数据。
WSS4J
WSS4J能够用于对部署在任意服务器上的Web服务进行加密。 WSS4J实现了WS-Security,是AXIS的安全模块,但也可以用于其他Web Services框架(例如XFIRE,CXF)。
WSS4J在Web Services框架中以handler方式工作,在发送SOAP消息前进行签名、加入认证凭据和加密,在收到SOAP消息后进行解密、认证和验证签名等安全工作。使用者可以自己编写handler处理SOAP消息以保证安全。
WSS4J在Web Services框架中以handler方式工作,在发送SOAP消息前进行签名、加入认证凭据和加密,在收到SOAP消息后进行解密、认证和验证签名等安全工作。使用者可以自己编写handler处理SOAP消息以保证安全。
mfinder
mfinder是一个基于对象方法架构的开源轻量级Java容器。它基于配置和注解来抽取和收集程序中对象的方法(method)以用于RPC,Web服务,HTTP的控制器,桌面应用程序等。
针对方法,提供基于注解(@Annotation)的配置:
★ 命名空间(Namespace)
★ 方法定义(Action)
★ 拦截器(Interceptor)
★ 拦截栈(InterceptorStack)
★ 结果定义(Result)
★ 结果类型(ResultType)
针对方法,提供基于注解(@Annotation)的配置:
★ 命名空间(Namespace)
★ 方法定义(Action)
★ 拦截器(Interceptor)
★ 拦截栈(InterceptorStack)
★ 结果定义(Result)
★ 结果类型(ResultType)
Apache Neethi
Apache Neethi该组件为Axis2提供了非完整的WS-Policy实现,允许 Axis2用户操作和组合策略文档。是Axis2用于创建策略文档的运行时表示形式、以及对策略文档执行规范化、合并和求交操作的工具。WS- Policy 提供了指定Web服务的可能配置以及执行定义的安全性和身份验证的一种方式。
MessagePack
MessagePack 是一个基于二进制高效的对象序列化Library用于跨语言通信。它可以像JSON那样,在许多种语言之间交换结构对象;但是它比JSON更快速也更轻 巧。支持Python、Ruby、Java、C/C++等众多语言。比Google Protocol Buffers还要快4倍。
![speedtest.png](http://www.open-open.com/projectimage/speedtest.png)
RPC远程调用实现jpoxy
这是一个简单的Java JSON-RPC实现,设计用于能够很方便将现有POJOs中的公共方法通一个健壮的RPC框架发布去出。
jsonrpc4j:JSON-RPC for Java
这个项目能够帮助开发人员利用Java编程语言轻松实现JSON-RPC远程调用。jsonrpc4j使用
Jackson类 库实现Java对象与JSON对象之间的相互转换。jsonrpc4j包含一个JSON-RPC服务器,支持Stream与HTTP(GET与 POST),同时还提供一个支持Stream的JSON-RPC客户端。此外还提供一个HTTP客户端、Spring Service Provider和Spring Service Consumer。
超轻量级RPC框架 JS2Java RPC
JS2Java RPC 是一个国人开发,基于flash、java、js架构设计的超轻量级RPC框架。
特点:
1、JS2Java RPC:能够在javascript的web浏览器环境中指定java类,获取该类实例的属性,调用该实例的方法
2、支持复杂js对象作为入参:能够传递复杂的JavaScript Object对象作为调用参数,在java中得到对应的Map对象
3、自动压缩、解压传递的数据:调用过程中传递的数据自动进行压缩传输,后台自动解压,然后转换为Map给开发人员;因此从一定层面上保护、加密了传输的数据
4、JS回调函数中能够接收java返回的复杂对象:java中可以返回复杂的对象,比如Map、List,在javascript中对应为Object和Array
5、友好逐行数据输出并回调:java中可以将List逐行输出到浏览器中,框架每接收到一条数据,能够自动回调给定的javascript方法, 从而实现数据流的逐行输出;该接口继承与“com.ibatis.sqlmap.client.event.RowHandler”因此很容易将 ibatis的数据流逐行输出给浏览器,从而实现非常友好的数据加载方式
6、支持回调全异步(观察者模式):所有的过程调用都采用异步方式,可以指定回调函数,用来接收返回的对象,并进行其他处理
7、日志回调:L异步过程可以设置日志回调函数,让你掌控全过程
服务框架 Dubbo
Dubbo 是一个服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能。
主要核心部件:
- Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制.
- RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能
- Registry: 服务目录框架用于服务的注册和服务事件发布和订阅