`

wink restful服务 第一个例子记录

 
阅读更多

  REST(Representational State Transfer)  based Web Service是相对于传统的Web Service(SOAP+WSDL+UDDI)而提出的。传统的Web Service可以很好的解决异构系统之间的通信问题,但是需要首先定义好XML格式的合同(WSDL),client和server都必须严格遵守协议,不容易升级以及集群伸缩。REST Web Service不需要事先定义格式,传输的内容也可以依据不同的client变化(json,xml,html等),最重要的是使用源URL来唯一定位资源,对资源的增删改查映射为HTTP的四个方法,无状态传输,具有非常好的伸缩性

     Apache Wink就是一个纯Java的REST框架。它完整的实现了JSR 311并扩展了部分功能,此外还提供了良好的扩展性,难能可贵的是还可以与流行的Java框架Spring无缝集成。目前该项目还在开发中。所谓框架无非就是定义好格式,提供一些工具和钩子,让开发人员可以专注于业务逻辑的开发。本文将试图简单的介绍一下Wink。

1、下载wink官网包

当前   apache-wink-1.3.0

 

 jar包引入:

在一个搭好了spring的环境里,添加:

 1、wink-1.3.0.jar apache-wink-1.3.0\dist\路径下,该包包含了主要的wink逻辑,有了这个无需再引入wink-client-1.3.0.jar、wink-common-1.3.0.jar、wink-server-1.3.0.jar

2、slf4j-api-1.6.1.jar    javax.ws.rs支持,apache-wink-1.3.0\lib下
3、slf4j-simple-1.6.1.jar   javax.ws.rs支持,apache-wink-1.3.0\lib下
4、jsr311-api-1.1.1.jar   apache-wink-1.3.0\lib下


提供对普通pojo转成json的支持需要加入jackson包:
jackson-core-asl-1.9.2.jar   自己找
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
jackson-xc-1.9.2.jar
以及wink的jackson转换包
wink-jackson-provider-1.3.0.jar    apache-wink-1.3.0\ext\wink-jackson-provider 下

 

 

2、配置

     Web Service当然是Web程序了,所以入口就是一个Servlet,在web.xml里面配置一下,把REST的访问都安排给Wink来处理。代码如下:

 

<servlet>
		<servlet-name>restSdkService</servlet-name>
		<servlet-class>org.apache.wink.server.internal.servlet.RestServlet</servlet-class>
		<load-on-startup>0</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>restSdkService</servlet-name>
		<url-pattern>/rest/*</url-pattern>
	</servlet-mapping>

 

 

 

    与Spring的集成,需要讲wink包里的wink-core-context.xml载入,配置如下:

 

 

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:META-INF/server/wink-core-context.xml,classpath:config/spring/spring-config.xml</param-value>
	</context-param>

 
其中wink-core-context.xml是wink-spring-support模块里面的一个Spring配置文件

 

spring的配置文件app-context.xml添加bean如下:

<bean class="org.apache.wink.spring.Registrar">
		<property name="classes">
			<set value-type="java.lang.Class">
				<!--<value>org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider</value>-->
			</set>
		</property>
		<property name="instances">
			<set>
				<ref local="helloWorldResource" />
			</set>
		</property>
	</bean>

	
	<bean id="helloWorldResource" class="training.HelloWorldResource" />

 

 

 

HelloWorldResource是一个REST里面的Resource,用Annotation配置路径等信息:

 

package training;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.apache.wink.common.annotations.Workspace;
import org.springframework.stereotype.Service;

import training.module.xuelei.data.Xuelei;

@Workspace(workspaceTitle = "Workspace Title", collectionTitle = "Collection Title")
@Path("/testWink")
@Service
public class HelloWorldResource {

	@GET
	public String getMessage() {
		return "HelloWorld";
	}
	
	
	@GET
	@Path("/getjson/{id}")
	@Produces(MediaType.APPLICATION_JSON)
	public XueleiNew getById(@PathParam("id") String id)
	{
	    XueleiNew xl = new XueleiNew();
	    xl.setId("123");
	    xl.setName("小李子");
		return xl;
	}
	
	@GET
	@Path("/getxml/{id}")
	@Produces(MediaType.APPLICATION_XML)
	public Book getBook(@PathParam("id") String id){
		Book b = new Book();
		b.setId(123111);
		b.setISBN("sdfjlsjdf2kj234");
		b.setTitle("一个农民工的江湖");
		
		return b;
		

	}
}

 

 

pojo对象:

转成的json的对象无需作任何处理

 

package training;

import java.io.Serializable;


public class XueleiNew implements Serializable {

    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	
	private String id;
	
	private String name;
    
	public XueleiNew(){
	}
	
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

   
}

 

 

转成xml的对象需要添加注释

 

package training;

import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;

@XmlRootElement(name="book")
@XmlAccessorType(XmlAccessType.FIELD)
public class Book {

	@XmlAttribute(name="id")
	private int id;

	@XmlElement(name="title")
	private String title;

	@XmlElement(name="isbn")
	private String ISBN;



	
	public Book() { }

	public int getId() { 
		return id; 
	}
	public void setId(int id) { 
		this.id = id; 
	}

	public String getTitle() { 
		return title; 
	}
	public void setTitle(String title) {
		this.title = title; 
	}

	public String getISBN() { 
		return ISBN; 
	}
	public void setISBN(String ISBN) {
		this.ISBN = ISBN; 
	}


	
}

 

 

这样启动web服务器,输入http://localhost:8080/weat/rest/即可看到web service信息,服务列表里面可以看到HelloWorldResource服务。

http://localhost:8080/training.web/rest/testWink/getjson/123123  获得对象转换成的json

{"id":"123","name":"小李子"}

 

http://localhost:8080/training.web/rest/testWink/getxml/1235345  获得对象转换成的xml

 <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
  <book id="123111">
  <title>一个农民工的江湖</title>
  <isbn>sdfjlsjdf2kj234</isbn>
  </book>

 

 

 

部分内容抄袭自:http://blog.csdn.net/kimylrong/article/details/7687593

 

这里还有一个不错的wink例子:http://download.csdn.net/download/kehongyong/4167213

 

0
2
分享到:
评论

相关推荐

    apache wink集成spring 开发rest服务

    Apache Wink是一个开源框架,主要用于构建RESTful Web服务。它基于Java EE标准,提供了一组API和工具,帮助开发者快速创建、部署和管理RESTful应用程序。Spring框架则是Java领域广泛使用的依赖注入(DI)和面向切面...

    计算机-restful-基于Restful服务的专利数据分析及可视化系统.pdf

    2. Apache Wink框架:Apache Wink是一个基于Java的Restful服务框架,提供了一个简单的API来实现Restful服务。 3. PageRank算法:PageRank算法是一种链分析算法,用于计算网页的重要性和排名。 4. HITS算法:HITS算法...

    Apache Wink 和 REST1

    RESTful Web 服务和 Apache Wink

    apache-wink-1.4.tar.gz

    Apache Wink是一个开源的RESTful Web服务开发框架,由Apache软件基金会维护。它提供了一组开发工具和服务,帮助开发者构建高效、可扩展的RESTful应用程序。这个“apache-wink-1.4.tar.gz”文件是Apache Wink 1.4版本...

    apache-wink-1.3.0-src.tar.gz

    Apache Wink是一个开源的Java框架,主要用于构建RESTful Web服务。这个"apache-wink-1.3.0-src.tar.gz"文件是Apache Wink 1.3.0版本的源代码压缩包,提供了完整的源码,供开发者进行深入研究、定制和扩展。以下是...

    用maven创建基于wink的rest服务(二)-携带参数的get请求

    在本教程中,我们将深入探讨如何使用Maven构建一个基于Wink框架的RESTful服务,特别是处理带有参数的GET请求。Wink是Apache的一个开源项目,它提供了实现RESTful Web服务的一系列工具和库,而Maven则是一个流行的...

    Apache Wink 和 REST

    RESTful Web 服务和 Apache Wink

    apache-wink-1.1.1-incubating.tar.gz

    Apache Wink是一个开源的Java框架,用于构建RESTful Web服务。这个"apache-wink-1.1.1-incubating.tar.gz"文件是Apache Wink的1.1.1版本,发布于Apache孵化器项目阶段。它以tar.gz格式提供,这是一种在Unix/Linux...

    apache-wink-1.2.1-incubating.tar.gz

    Apache Wink是一个开源的Java框架,用于构建RESTful Web服务和客户端应用程序。它属于Apache软件基金会的Incubator项目,1.2.1是其在Incubating阶段的一个版本。这个"apache-wink-1.2.1-incubating.tar.gz"文件是一...

    apache-wink-1.4-src.tar.gz

    Apache Wink是一个开源的Java框架,主要用于构建RESTful Web服务。这个"apache-wink-1.4-src.tar.gz"文件是Apache Wink 1.4版本的源代码压缩包,适用于那些希望深入理解Wink工作原理或者需要对其进行定制开发的...

    apache-wink-1.2.0-incubating.tar.gz

    Apache Wink是一个开源的Java框架,专为构建RESTful Web服务而设计。它属于Apache软件基金会,最初在Incubator阶段被标记为“incubating”,这意味着该项目正在孵化过程中,尚未成为Apache顶级项目。"apache-wink-...

    apache-wink-1.2.0-incubating-src.tar.gz

    Apache Wink是一个开源的Java框架,用于构建RESTful Web服务和客户端应用程序。它是由Apache软件基金会托管,并在Incubator阶段被开发为1.2.0版本。这个压缩包"apache-wink-1.2.0-incubating-src.tar.gz"包含了源...

    apache-wink-1.1-incubating.tar.gz

    Apache Wink 是一个开源的Java框架,主要用于构建RESTful Web服务。这个“apache-wink-1.1-incubating.tar.gz”文件是一个压缩包,包含了Apache Wink 1.1版本的所有组件和资源,它是Apache软件基金会的一个孵化项目...

    apache-wink-0.1-incubating.tar.gz

    Apache Wink是一个开源的Java框架,用于构建RESTful Web服务和客户端应用程序。它是在Apache软件基金会的孵化器项目中诞生的,版本号为0.1,表明这是一个早期版本,可能包含实验性的特性和功能。".tar.gz"是常见的...

    记录屏幕操作Wink

    Wink是一款专业的屏幕录制软件,它能够帮助用户记录下计算机屏幕上的各种操作,包括鼠标移动、点击、键盘输入等,并且支持将录制内容保存为多种格式,如Flash、exe和htm,这使得用户可以轻松地分享和播放这些教程...

    apache wink rest学习(配置、编码、调用)

    Apache Wink是一个开源的RESTful Web服务开发框架,它提供了构建和消费RESTful服务的一系列工具和库。本文将深入探讨如何配置、编码以及调用Apache Wink服务,结合提供的`web.xml`和`spring`文件,我们来详细了解这...

    apache-wink-1.0-incubating.tar.gz

    Apache Wink是一个基于Java的轻量级Web服务框架,它主要设计用于构建RESTful Web服务。这个"apache-wink-1.0-incubating.tar.gz"文件是Apache Wink项目在1.0版本孵化阶段的一个归档包,包含了完整的源代码、库文件和...

    wink2.0一种支持录制flash过程的工具

    “wink2.0”指的是一个名为Wink的软件的第二个主要版本。这个工具的主要功能是支持录制Flash过程,意味着它可以捕捉在Adobe Flash环境中进行的各种交互和操作,将其转化为可回放的步骤,这对于测试、教学或演示场景...

    apache-wink-0.1-incubating-src.tar.gz

    Apache Wink是一个开源的Java框架,主要用于构建RESTful Web服务。这个"apache-wink-0.1-incubating-src.tar.gz"文件是该框架的源代码版本,属于Apache Wink项目在0.1阶段孵化时期的开发资源。"incubating"意味着它...

Global site tag (gtag.js) - Google Analytics