目前项目用到Jersey 在这里记录一下
项目采用maven管理
1:pom.xml引得jersey相关jar
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.10</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-spring</artifactId>
<version>1.11</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
</exclusions>
</dependency>
2:web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:spring/*.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>JerseyServlet</servlet-name>
<servlet-class>
com.sun.jersey.spi.spring.container.servlet.SpringServlet
</servlet-class>
<init-param>
<param-name>
com.sun.jersey.config.property.packages
</param-name>
<!-- 系统启动时扫描的包的路径-->
<param-value>com.gissecur.mcas.webservices</param-value>
</init-param>
<init-param>
<param-name>
com.sun.jersey.api.json.POJOMappingFeature
</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JerseyServlet</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
3:要生成rest的service类
package com.gissecur.mcas.webservices;
import javax.servlet.http.HttpServletRequest;
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.Context;
import javax.ws.rs.core.MediaType;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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.gissecur.mcas.exception.ServiceException;
import com.gissecur.mcas.model.TimebasedToken;
import com.gissecur.mcas.service.ChallengeService;
import com.gissecur.mcas.service.VerifyService;
import com.sun.jersey.spi.resource.Singleton;
@Path("/tokenapi")
@Component
@Scope("request")
@Singleton
@SuppressWarnings("unqualified-field-access")
public class McasWebserviceTest {
protected Log logger = LogFactory.getLog(getClass());
@Autowired
@Qualifier("challengeServiceImp")
public ChallengeService challengeServiceImp;
@Autowired
@Qualifier("verifyServiceImp")
public VerifyService verifyServiceImp;
// 外部传过来的参数
// @QueryParam("id") String serid;
public VerifyService getVerifyServiceImp() {
return verifyServiceImp;
}
public void setVerifyServiceImp(VerifyService verifyServiceImp) {
this.verifyServiceImp = verifyServiceImp;
}
@SuppressWarnings("nls")
@GET
@Scope("request")
@Path("/hello")
@Produces(MediaType.TEXT_PLAIN)
public String helloWorld() { // @PathParam("username") String username
String ret = "Hello World!";
return ret;
}
@SuppressWarnings( { "nls", "unqualified-field-access" })
@GET
@Scope("request")
@Produces(MediaType.TEXT_PLAIN)
@Path("/crtchallengecode/{tokenid}")
public String crtChallengeCode(@PathParam("tokenid")
String tokenid, @Context
HttpServletRequest request) {
String retString = "";
String clientIp = request.getRemoteAddr();
System.out.println("token id in--------------->" + tokenid + "/"
+ request.getRemoteAddr());
try {
retString = challengeServiceImp.crtChgCode(tokenid, clientIp);
} catch (Exception e) {
// TODO Auto-generated catch block
if (e instanceof ServiceException) {
ServiceException serverError = (ServiceException) e;
String errcode = serverError.getErrorCode();
String errMesage = serverError.getMessage();
retString = "challenge errorcode:" + errcode + "/descript:"
+ errMesage;
} else {
retString = "challenge system error:" + e.getMessage();
}
logger.error("Challenge Code generate error->IP::" + clientIp
+ ";tokenid::" + tokenid + ";"
+ ExceptionUtils.getFullStackTrace(e));
// throw new WebApplicationException(400);
}
return retString;
}
@SuppressWarnings( { "nls", "unqualified-field-access" })
@GET
@Scope("request")
@Produces(MediaType.TEXT_PLAIN)
@Path("/verify/{tokenid}/{challengecode}")
public String verify(@PathParam("tokenid")
String tokenid, @PathParam("challengecode")
String challengecode, @Context
HttpServletRequest request) {
String retString = "";
String clientIp = request.getRemoteAddr();
try {
TimebasedToken token = new TimebasedToken();
token.setSerid(tokenid);
token.setChgCode(challengecode);
if (verifyServiceImp.tokenVerfiy(token, clientIp)) {
retString = "verify pass.";
}
else{
retString = "verify failed.";
}
} catch (Exception e) {
// TODO Auto-generated catch block
if (e instanceof ServiceException) {
ServiceException serverError = (ServiceException) e;
String errcode = serverError.getErrorCode();
String errMesage = serverError.getMessage();
retString = "verify errorcode:" + errcode + "/descript:"
+ errMesage;
} else {
retString = "verify system error:" + e.getMessage();
}
logger
.error("verify generate error->IP::" + clientIp
+ ";tokenid::" + tokenid + ";challenge code::"
+ challengecode + ";"
+ ExceptionUtils.getFullStackTrace(e));
// throw new WebApplicationException(400);
}
return retString;
}
@SuppressWarnings("unqualified-field-access")
public ChallengeService getChallengeServiceImp() {
return challengeServiceImp;
}
public void setChallengeServiceImp(ChallengeService challengeServiceImp) {
this.challengeServiceImp = challengeServiceImp;
}
}
访问方式:http://localhost:7001/mcas/resources/tokenapi/crtchallengecode/0000000001
相关参考文章(感觉比较好的文章)
http://www.iteye.com/topic/1111932
http://www.cnblogs.com/bluesfeng/archive/2010/10/28/1863816.html
http://jersey.java.net/nonav/documentation/latest/user-guide.html#d4e919
http://jersey.java.net/nonav/documentation/latest/getting-started.html#d4e45
分享到:
相关推荐
【标题】:“jersey+spring+springmvc实现上传” 在Web开发中,文件上传功能是一项常见且重要的任务。本示例将介绍如何结合Jersey、Spring和Spring MVC框架来实现这一功能。Jersey是Java RESTful Web服务的实现,而...
**标题解析:** "Jersey 1.8在Spring环境下的实现 包括实例代码" 这个标题表明我们将探讨如何在Spring框架中集成和使用Jersey 1.8,这是一个基于Java的RESTful Web服务客户端和服务器端实现。"包括实例代码"意味着...
5. **配置 Servlet**:在非 Spring Boot 环境下,你可能还需要配置一个 Servlet 来处理 Jersey 请求。这通常在 `web.xml` 文件中完成,但 Spring Boot 自动配置了这个过程,所以你不需要手动配置。 6. **测试和运行...
在与Jersey结合时,Spring可以用来管理服务层的bean,实现组件的松耦合,并提供事务管理和安全控制。在"Jersey+Spring Demo"中,Spring可能被用来配置和管理数据库连接、事务规则,以及其他的业务逻辑组件。 在...
在Jetty和Jersey的环境中整合Spring,主要步骤有: 1. 引入Spring依赖:确保项目包含Spring的核心库和其他必要模块。 2. 配置Spring:创建Spring配置文件,定义Bean和它们之间的依赖关系。 3. 使用Spring的...
在Spring中,MyBatis可以通过Spring的SqlSessionFactoryBean和MapperScannerConfigurer进行集成,使得我们可以在不写大量DAO代码的情况下执行数据库操作。 在"jersey+spring+mybatis"整合中,Jersey作为REST服务的...
通过以上步骤,我们可以成功地将 Jersey 和 Spring 整合在一起,利用 Spring 提供的依赖注入、事务管理等特性,同时利用 Jersey 实现 RESTful Web 服务。这个过程可能会遇到一些问题,但只要按照正确的步骤和方法,...
这些库允许Spring管理的bean在Jersey环境中被注入。 - **配置Spring**:创建Spring配置文件(如`applicationContext.xml`),定义bean和它们的依赖关系。同时,需配置Jersey以使用Spring容器,这通常通过`...
这意味着所有客户端请求都会共享同一个服务实例,这在多线程环境下可能会引发线程安全问题。 为了解决这个问题,可以结合使用 Jersey 和 Spring 进行集成。Spring 提供了强大的依赖注入和管理 Bean 的能力,可以...
在本文中,我们将深入探讨如何将Spring 4.x框架与Jersey 2.x结合,以构建一个能够对外提供RESTful接口服务的系统。这个过程包括了配置、组件整合以及实际的API开发。以下是对整个集成过程的详细说明。 首先,让我们...
标题 "jersey 2.2 +spring 3.1.0.RELEASE+hibernate 3.3.1.GA maven 配置文件" 暗示了一个集成开发环境,其中涉及到三个主要的技术组件:Jersey、Spring 和 Hibernate。这个配置文件是基于 Maven 构建系统的,用于...
本教程将引导初学者了解如何整合jersey、spring和mybatis这三个强大的开源框架,以实现基本的CRUD(创建、读取、更新和删除)操作。这些框架的结合提供了高效、灵活且可扩展的后端解决方案。 首先,让我们逐一介绍...
3. **配置Jersey**:在web.xml中配置Jersey的Servlet,声明资源扫描路径和加载Spring上下文。 4. **创建RESTful服务**:创建一个Java类,使用Jersey的注解(如`@Path`, `@GET`, `@POST`等)定义资源方法。 5. **...
【标题】"Jersey2.1+mysql+Hibernate4.3+Spring3.2" 描述了一个集成开发环境,该环境结合了四个关键的技术组件,用于构建基于RESTful Web服务的Java应用程序。让我们深入探讨每个组件及其在项目中的作用。 **Jersey...
在jersey+spring的环境中,Maven可以帮助我们整合和管理所有依赖库,确保项目的构建一致性。 5. **压缩包子文件的文件名称列表**:虽然这里只有一个文件名"grower - 副本",这通常代表项目中的一个组件或者模块。...
在项目的`src/main/resources`目录下创建`applicationContext.xml`文件,配置Spring的bean定义、事务管理器等。示例代码如下: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
"Jersey Spring4 Freemarker HIbernate整合搭建"这个主题就是关于如何将这几个关键组件整合在一起,以创建一个功能强大的RESTful服务。让我们详细了解一下这些技术以及它们在集成过程中的作用。 首先,Jersey是Java...
标题中的"jersey 1.17+spring 3.1.0.RELEASE+hibernate 3.3.1.GA maven 配置文"揭示了一个集成开发环境的配置,涉及到三个关键的Java技术栈组件:Jersey、Spring和Hibernate。下面将详细介绍这三个组件以及如何在...
在本教程中,我们将深入探讨如何使用Spring Boot与Jersey实现跨域文件上传。Spring Boot以其简化Spring应用程序开发的特性而受到广泛欢迎,而Jersey是JAX-RS规范的一个实现,用于构建RESTful Web服务。当我们谈论...
在这种情况下,集成jersey、redis、mongodb和spring可能是为了构建一个能够处理大量设备连接、实时数据处理和存储的后端服务。Jersey处理设备到服务器的API通信,Redis用于快速响应和存储临时数据,如设备状态,而...