1、新建RestSpringApplication
Web工程。
将restlet和spring的jar包复制进来。红色部分为新加入进来的jar包。
将上篇中的RestApplication工程项目中的src的源文件复制过来。
2、将web.xml加入下面代码
<servlet>
<servlet-name>restlet</servlet-name>
<servlet-class>
org.restlet.ext.spring.RestletFrameworkServlet
</servlet-class>
<init-param>
<param-name>org.restlet.component</param-name>
<param-value>restletComponent</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>restlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
上面代码指定了restlet使用spring的RestletFrameworkServlet。
3、建立restlet-servlet.xml文件,只需要配置org.restlet.ext.spring.SpringRouter,及对应的路径和资源文件。
<bean
name="root">
<property
name="attachments">
<map>
<entry
key="/student/{studentId}">
<bean>
<lookup-method
name="create"
bean="StudentResource"
/>
</bean>
</entry>
<entry
key="/student">
<bean>
<lookup-method
name="create"
bean="StudentsResource"
/>
</bean>
</entry>
</map>
</property>
</bean>
<bean
id="StudentResource"
class="org.lifeba.ws.resource.StudentResource"
scope="prototype"/>
<bean
id="StudentsResource"
class="org.lifeba.ws.resource.StudentsResource"
scope="prototype"/>
上面的代码配置了
/student/{studentId}对应StudentResource,以及student对应StudentsResource资源类。通过SpringRouter可以非常方便的通过attachments配置资源路径。如果你有更多的路径,你可以建立多个entry即可。
二、测试添加、删除、更新方法。
1、student_post方法,添加一个Student,成功后返回新建studentId为2的对象。
public
void
student_post(){
try
{
Form
queryForm
=
new
Form()
queryForm.add("name","steven_spring")
queryForm.add("clsId","201002")
queryForm.add("sex","2")
queryForm.add("age","12")
Representation
representation
=client.post(queryForm.getWebRepresentation())
System.out.println(representation.getText())
}
catch
(Exception
e)
{
e.printStackTrace()
}
}
2、student_delete方法,删除Id为1的Student,成功执行后返回1。
public
void
student_delete(){
try
{
Representation
representation
=client.delete()
System.out.println(representation.getText())
}
catch
(Exception
e)
{
e.printStackTrace()
}
}
3、student_put方法,更新Id为2的Student。
public
void
student_put(){
try
{
Form
queryForm
=
new
Form()
queryForm.add("name","steven_spring_modify")
queryForm.add("clsId","201012")
queryForm.add("sex","12")
queryForm.add("age","24")
Representation
representation
=client.put(queryForm)
System.out.println(representation.getText())
}
catch
(Exception
e)
{
e.printStackTrace()
}
}
通过上面的代码已经完全实现了Spring中的restlet的配置。上面只对Student对象做了介绍,你也可以实现对Course在spring中配置,基本方法一样。这里不再阐述。
AxisApache 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)的支持。
更多Axis信息
UDDI4J
uddi4j是一个JAVA类库,提供了一个API来与web服务UDDI注册中心相结合。UDDI4J得到了HP, IBM和SAP的支持。UDDI是统一描述、发现和集成(Universal Description, Discovery, and Integration的缩写。
更多UDDI4J信息
WSIL4J
WSIL4J是Java类库,简化了对Web服务注册中心、描述和检查文档的处理。
更多WSIL4J信息
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结合使用是服务被提供的位置更加透明
更多WSIF信息
Caucho Burlap
Burlap是一个轻量级的XML RPC协议.利用Burlap Web服务协议使用Web服务不需要大型的框架也不用学习其它协议。
更多Caucho Burlap信息
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
更多Xfire信息
SOAP UDDI
SOAP UDDI是一个符合UDDI 2.0的Web服务UDDI注册中心(registry).利用这个UDDI注册中心,Web服务开发者可以发布和测试他们的程序在一个安全的,不公开的环境中.
更多SOAP UDDI信息
Caucho Hessian
Hessian也是一个轻量级的,自定义描述的二进制RPC协议.因为它是一个二进制协议,所以它很适合于发送二进制数据而需要使用其它附件来扩展这个协议.
更多Caucho Hessian信息
Ivory
Ivory为Java classes,Avalon服务,和Axis这三者之间相互结合提供了一种简单的方式.它允许开发soap服务不需要进行Axis通常所要求的WSDD配置,同样也可以让Avalon服务使用标准WSDD配置变得简单.
更多Ivory信息
Crispy
利用Crispy提供的一个统一接口,你可以调用RMI,WebService,REST,XML-RPC,EJB,Burlap,Hessian等其它服务.你不需要知道这些服务是怎样工作的,要调用的服务类型可在properties文件中定义.远程调用就像简单Java对象调用一样,你可以把Crispy集成到一个SOA(Service Oriented Architecture)或RCP(Rich Client Platform)中.
更多Crispy信息
XINS
XINS是一项规范技术用于定义,创建和调用远程APIs。当API规范在XML文档中定义好之后,XINS将会把它们转换成包括客户端与服务端的HTML文档与Java代码.XINS将与复杂的SOAP技术竞争,因为它被设计得具有简单性,可扩缩性与可测试性。简要地说就是:SOA+Java+XML+ 代码生成-复杂性 =>XINS。
更多XINS信息
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页面等其它功能。
更多Restlet信息
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错误处理。
更多Gomba信息
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)。
更多jSoapServer信息
JBossWS
JBossWS实现了一个新的符合JAX-RPC1.1标准的SOAP stack,可用于替代先前的WS4EE和JBoss.NET。它能够更好的与整个JBoss架构体系相集成。
更多JBossWS信息
soapui
soapui提供一个工具通过soap/http来检查,调用,实现web service和web service的功能/负载/符合性测试。该工具既可作为一个桌面应用软件使用,也可利用插件集成到Eclipse,maven2.X,netbeans和intellij中使用。
更多soapui信息
kSOAP2
kSOAP2是一个SOAP web service客户端包。主要用于资源受限制的Java环境如Applets或J2ME应用程序(CLDC/ CDC/MIDP)。
更多kSOAP2信息
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容器。
更多Apache CXF信息
Jersey
Jersey是JAX-RS(JSR311)开源参考实现用于构建RESTful Web service。此外Jersey还提供一些额外的API和扩展机制,所以开发人员能够按照自己的需要对Jersey进行扩展。
更多Jersey信息
RESTClient
RESTClient是一个用于测试RESTful Web services的Java客户端。
更多RESTClient信息
OpenUDDI
OpenUDDI提供一个高性能,易于使用,遵循UDDI v3规范的服务器与客户端类库。服务器使用Hibernate作为存储引擎,因此支持大部分SQL数据库,同时支持还LDAP作为数据存储。
更多OpenUDDI信息
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注解声明 *** 作所需要的角色
支持分布式资源对象,实现业务逻辑的分布式部署
更多jrest4guice信息
kSOAP
kSOAP是一个SOAP web service客户端类库,适用于那些资源受限制的Java环境比如:Applets,J2ME应用程序(CLDC/CDC/MIDP)。
更多kSOAP信息
Metro
Metro是一个高性能,可扩展,易于使用的web service stack/framework。它提供一个一站式解决方案来满足你所有web service需求。从最简单的hello world web service到可靠,安全和涉及与.NET服务交互的事务处理web service。
更多Metro信息
sqlREST
sqlREST能够将关系型数据库发布为REST风格的Web Service。为任何能够通过JDBC访问的数据库提供Web Service访问接口,使用HTTP方法GET、POST、PUT和DELETE就能够查询,创建,修改和删除数据库中的数据记录。
更多sqlREST信息
GWT-REST
GWT-REST是一个用于GWT应用程序的异步RESTful客户端实现。GWT-REST可以与GWT-RPC一起使用或者代替它。
更多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服务。
更多Redstone XML-RPC Library信息
PHPRPC
PHPRPC 是一个轻型的、安全的、跨网际的、跨语言的、跨平台的、跨环境的、跨域的、支持复杂对象传输的、支持引用参数传递的、支持内容输出重定向的、支持分级错误处理的、支持会话的、面向服务的高性能远程过程调用协议。目前已有以下几种语言的实现:ASP、ActionScript、Delphi/Kylix、Java、JavaScript、.NET:(支持 .NET 框架下所有的语言(如 C#、VB.NET、VC.NET、Delphi.NET 等)、PHP、Python、Ruby等。
更多PHPRPC信息
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帐户中的简单向导。
更多JetS3t信息
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等)相结合使用。 易于与现有的验证系统相集成。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)