Jersey+Spring 实现rest 接口 服务调用
2016-09-02 14:53
1041 查看
下载地址: http://download.java.net/maven/2/com/sun/jersey/contribs/jersey-spring/
或官网
https://maven.java.net/content/repositories/releases/com/sun/jersey/contribs/jersey-spring/1.9/
所需包:
jersey-client-1.8.jar
jersey-core-1.8.jar
jersey-json-1.8.jar
jersey-server-1.8.jar
jersey-spring-1.8.jar
所有jar 目录如下:
web.xml:
[html] view
plain copy
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>workflowController Application</display-name>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>workflowController.root</param-value>
</context-param>
<!-- 生产环境设为0 -->
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>0</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/*Context.xml</param-value>
<!-- classpath:applicationContext.xml,classpath*:*Context.xml -->
</context-param>
<servlet>
<servlet-name>REST Servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.wondersgroup.resource</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>REST Servlet</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SecheduleServlet</servlet-name>
<servlet-class>com.wondersgroup.schedule.servlet.ScheduleServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!--
<filter>
<filter-name>struts2</filter-name>
<description>Struts2 Filter</description>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<init-param>
<param-name>packages</param-name>
<param-value>com.wondersgroup.framework.widget</param-value>
</init-param>
</filter>
<filter>
<filter-name>struts2-cleanup</filter-name>
<description>Struts2 CleanUp Filter</description>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2-cleanup</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
-->
<!-- session失效时间 分钟
<session-config>
<session-timeout>-1</session-timeout>
</session-config>
-->
</web-app>
sample:
[java] view
plain copy
/**
*
*/
package com.wondersgroup.workflow.resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.google.gson.Gson;
import com.wondersgroup.workflow.controller.WorkflowController;
import com.wondersgroup.workflow.model.bo.WorkflowActivity;
import com.wondersgroup.workflow.model.vo.WorkflowResult;
/**
* @ClassName: WorkflowService
* @Description: TODO(rest)
* @author zhoushun
* @date 2013-5-31 09:34:11
*
*/
@Component
@Path("workflow")
@Scope("prototype")
public class WorkflowResource {
@Context
public HttpServletRequest request;
@Context
public HttpServletResponse response;
private WorkflowController controller;
public WorkflowController getController() {
return controller;
}
@Autowired(required=false)
public void setController(@Qualifier("workflowController")WorkflowController controller) {
this.controller = controller;
}
@POST
@Path("launchProcess")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public WorkflowResult launchProcess(@FormParam("data") String data){
System.out.println("data="+ data);
Gson gson = new Gson();
WorkflowResult result = this.controller.saveProcessData(data,2);
System.out.println(gson.toJson(result));
if(result.isSuccess()){
result = this.controller.lauchProcess();
}
System.out.println(gson.toJson(result));
return result;
}
@POST
@Path("saveProcessStep")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public WorkflowResult saveProcessStep(@FormParam("data") String data){
WorkflowResult result = this.controller.saveProcessData(data,0);
return result;
}
//
@POST
@Path("completeProcessStep")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public WorkflowResult completeProcessStep(@FormParam("id") String id){
WorkflowResult result = this.controller.completeProcessStep(id);
return result;
}
@POST
@Path("test")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public WorkflowActivity test(@FormParam("zs") String zs){
System.out.println("----------------------------");
System.out.println(zs);
System.out.println("----------------------------");
System.out.println(request.getParameter("ss"));
WorkflowActivity bo = new WorkflowActivity();
if (true) {
// throw new CustomNotFoundException(new WorkflowResult());
}
return bo;
}
}
或官网
https://maven.java.net/content/repositories/releases/com/sun/jersey/contribs/jersey-spring/1.9/
所需包:
jersey-client-1.8.jar
jersey-core-1.8.jar
jersey-json-1.8.jar
jersey-server-1.8.jar
jersey-spring-1.8.jar
所有jar 目录如下:
web.xml:
[html] view
plain copy
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>workflowController Application</display-name>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>workflowController.root</param-value>
</context-param>
<!-- 生产环境设为0 -->
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>0</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/*Context.xml</param-value>
<!-- classpath:applicationContext.xml,classpath*:*Context.xml -->
</context-param>
<servlet>
<servlet-name>REST Servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.wondersgroup.resource</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>REST Servlet</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SecheduleServlet</servlet-name>
<servlet-class>com.wondersgroup.schedule.servlet.ScheduleServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!--
<filter>
<filter-name>struts2</filter-name>
<description>Struts2 Filter</description>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<init-param>
<param-name>packages</param-name>
<param-value>com.wondersgroup.framework.widget</param-value>
</init-param>
</filter>
<filter>
<filter-name>struts2-cleanup</filter-name>
<description>Struts2 CleanUp Filter</description>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2-cleanup</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
-->
<!-- session失效时间 分钟
<session-config>
<session-timeout>-1</session-timeout>
</session-config>
-->
</web-app>
sample:
[java] view
plain copy
/**
*
*/
package com.wondersgroup.workflow.resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.google.gson.Gson;
import com.wondersgroup.workflow.controller.WorkflowController;
import com.wondersgroup.workflow.model.bo.WorkflowActivity;
import com.wondersgroup.workflow.model.vo.WorkflowResult;
/**
* @ClassName: WorkflowService
* @Description: TODO(rest)
* @author zhoushun
* @date 2013-5-31 09:34:11
*
*/
@Component
@Path("workflow")
@Scope("prototype")
public class WorkflowResource {
@Context
public HttpServletRequest request;
@Context
public HttpServletResponse response;
private WorkflowController controller;
public WorkflowController getController() {
return controller;
}
@Autowired(required=false)
public void setController(@Qualifier("workflowController")WorkflowController controller) {
this.controller = controller;
}
@POST
@Path("launchProcess")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public WorkflowResult launchProcess(@FormParam("data") String data){
System.out.println("data="+ data);
Gson gson = new Gson();
WorkflowResult result = this.controller.saveProcessData(data,2);
System.out.println(gson.toJson(result));
if(result.isSuccess()){
result = this.controller.lauchProcess();
}
System.out.println(gson.toJson(result));
return result;
}
@POST
@Path("saveProcessStep")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public WorkflowResult saveProcessStep(@FormParam("data") String data){
WorkflowResult result = this.controller.saveProcessData(data,0);
return result;
}
//
@POST
@Path("completeProcessStep")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public WorkflowResult completeProcessStep(@FormParam("id") String id){
WorkflowResult result = this.controller.completeProcessStep(id);
return result;
}
@POST
@Path("test")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public WorkflowActivity test(@FormParam("zs") String zs){
System.out.println("----------------------------");
System.out.println(zs);
System.out.println("----------------------------");
System.out.println(request.getParameter("ss"));
WorkflowActivity bo = new WorkflowActivity();
if (true) {
// throw new CustomNotFoundException(new WorkflowResult());
}
return bo;
}
}
相关文章推荐
- Jersey+Spring 实现rest 接口 服务调用
- Jersery——RESTful Web Services in Java,RESTful服务,Jersey+Spring实现REST服务调用
- 用jersey + spring 实现rest服务及单元测试
- 微服务实战之春云与刀客(二)—— Spring cloud 实现仿RPC面向接口调用方式
- 基于spring-cloud相关技术整合,实现接口调用、服务容错、动态路由配置等
- SpringBoot系列十一:SpringBoot整合Restful架构(使用 RestTemplate 模版实现 Rest 服务调用、Swagger 集成、动态修改日志级别)
- jersey实现web service接口+客户端调用
- apache-cxf-3.0.4和spring实现rest服务
- 转换Arcgis Server REST接口实现OL2直接调用
- Android(java)学习笔记229:服务(service)之绑定服务调用服务里面的方法 (采用接口隐藏代码内部实现)
- tomcat+webservice实现简单的web服务远程调用接口
- 利用Jersey和Google ProtoBuf 集成Spring搭建REST服务
- SpringMVC构建REST接口:第六篇 服务层实现
- Jersey+jetty 搭建高并RestFull 接口服务
- 【起航计划 037】2015 起航计划 Android APIDemo的魔鬼步伐 36 App-&gt;Service-&gt;Remote Service Binding AIDL实现不同进程间调用服务接口 kill 进程
- 通过 Jersey 客户端 API 调用 REST 风格的 Web 服务
- 使用 Spring RestTemplate 调用 rest 服务时自定义请求头(custom HTTP headers)
- 在Rest服务调用中应用JAXB来实现XML与对象之间的转换
- 使用 Spring RestTemplate 调用 rest 服务时自定义请求头(custom HTTP headers)
- 通过 Jersey 客户端 API 调用 REST 风格的 Web 服务