REST架构之Apache Wink介绍

http://blog.csdn.net/kimylrong/article/details/7687593

http://blog.csdn.net/kimylrong/article/details/7687593

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。

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

[html] view plaincopy
  1.      <servlet>  
  2.     <servlet-name>restSdkService</servlet-name>  
  3.     <servlet-class>org.apache.wink.server.internal.servlet.RestServlet</servlet-class>  
  4.     <load-on-startup>0</load-on-startup>  
  5. </servlet>  
  6.   
  7. <servlet-mapping>  
  8.     <servlet-name>restSdkService</servlet-name>  
  9.     <url-pattern>/rest/*</url-pattern>  
  10. </servlet-mapping>  
     

    与Spring的集成,需要一个集成模块wink-spring-support,配置如下:

[html] view plaincopy
  1.   <context-param>  
  2.     <param-name>contextConfigLocation</param-name>  
  3.     <param-value>  
  4.         classpath:META-INF/server/wink-core-context.xml,  
  5.         /WEB-INF/spring/app-context.xml  
  6.     </param-value>  
  7. </context-param>  
  8.   
  9. <listener>  
  10.     <listener-class>  
  11.         org.springframework.web.context.ContextLoaderListener  
  12.     </listener-class>  
  13. </listener>  

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

[html] view plaincopy
  1.   <bean class="org.apache.wink.spring.Registrar">  
  2.     <property name="classes">  
  3.         <set value-type="java.lang.Class">  
  4.         </set>  
  5.     </property>  
  6.     <property name="instances">  
  7.         <set>  
  8.             <ref local="helloWorldResource" />  
  9.         </set>  
  10.     </property>  
  11. </bean>  
  12.   
  13. <!-- Resources -->  
  14. <bean id="helloWorldResource" class="HelloWorldResource" />  

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

[java] view plaincopy
  1. import javax.ws.rs.GET;  
  2. import javax.ws.rs.Path;  
  3.   
  4. import org.apache.wink.common.annotations.Workspace;  
  5.   
  6. @Workspace(workspaceTitle = "Workspace Title", collectionTitle = "Collection Title")  
  7. @Path("/helloworld")  
  8. public class HelloWorldResource {  
  9.   
  10.     @GET  
  11.     public String getMessage() {  
  12.         return "HelloWorld";  
  13.     }  
  14. }  
这样启动web服务器,输入http://localhost:8080/weat/rest/即可看到web service信息。服务列表里面可以看到HelloWorldResource服务。
阅读更多
换一批

apache wink rest肿么出现异常了

08-29

ERROR org.apache.wink.server.internal.handlers.FlushResultHandler - The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the org.json.JSONArray type and application/xml mediaType. Ensure that a javax.ws.rs.ext.MessageBodyWriter exists in the JAX-RS application for the type and media type specified.rn这个是我的部门代码:rn@GETrn @Produces(MediaType.APPLICATION_JSON)rn public JSONArray getTasks() rn JSONArray result = new JSONArray();rn Collection tasks = TaskManager.getInstance().getTasks();rn for (Task task : tasks) rn try rn result.put(createJSONObject(task));rn catch (JSONException e) rn e.printStackTrace();rn throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);rn rn rn return result;rn rnrn这个是我的web。xml配置:rnrn restServicern org.apache.wink.server.internal.servlet.RestServletrnrn rn applicationConfigLocationrn /WEB-INF/resourcesrn rnrn rn propertiesLocationrn /WEB-INF/tasks.propertiesrn rnrn rnrn rn restServicern /rest/*rn rnrn以下是我用到的jar包:rnrnactivation-1.1.jarrncommons-lang-2.3.jarrnjaxb-api-2.2.jarrnjaxb-impl-2.2.1.1.jarrnjersey-json-1.0.3.jarrnjson-20100208.jarrnjsr311-api-1.1.1.jarrnslf4j-api-1.6.1.jarrnslf4j-simple-1.6.1.jarrnstax-api-1.0-2.jarrnwink-1.2.0-incubating.jarrnwink-client-1.2.0-incubating.jarrnwink-common-1.2.0-incubating.jarrnwink-server-1.2.0-incubating.jarrnrn帮忙解决以下。。。弄了好久 硬是没弄出来。。一直以为是json包的问题。。。换了n个还是报这个错误

没有更多推荐了,返回首页