寻求兼容JDK5的Jersey版本及JDK5下REST服务示例
兼容JDK 5的Jersey版本及REST服务示例
一、兼容JDK 5的Jersey版本
Jersey 1.x系列从1.18版本开始就升级要求JDK 6及以上了,Jersey 1.17.1是官方明确支持JDK 5的最后一个稳定版本,完全适配你的JDK 5环境,放心用就好。
二、JDK 5环境下的REST服务示例
下面是一个简单的基于Jersey 1.17.1的JSON REST服务示例,涵盖核心代码和配置:
1. 依赖配置(Maven)
如果用Maven管理依赖,在pom.xml里添加以下配置:
<dependencies> <!-- Jersey核心依赖 --> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version>1.17.1</version> </dependency> <!-- JSON支持依赖 --> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-json</artifactId> <version>1.17.1</version> </dependency> <!-- JDK5兼容的Servlet API --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> </dependencies>
不用Maven的话,直接下载这些jar包:jersey-server-1.17.1.jar、jersey-json-1.17.1.jar、jsr311-api-1.1.1.jar、asm-3.1.jar(核心依赖),以及JSON相关的jackson-core-asl-1.9.13.jar、jackson-mapper-asl-1.9.13.jar等(Jersey 1.17.1依赖这些)。
2. REST资源类
创建一个处理JSON请求响应的资源类:
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/hello") public class HelloResource { @GET @Produces(MediaType.APPLICATION_JSON) public User getHello() { User user = new User(); user.setId(1); user.setName("Alice"); user.setEmail("alice@example.com"); return user; } // JDK5下的POJO类,必须提供getter和setter public static class User { private int id; private String name; private String email; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } }
3. 应用配置类
创建Jersey的应用配置类,注册资源和JSON提供者:
import com.sun.jersey.api.core.PackagesResourceConfig; import com.sun.jersey.api.json.JSONConfiguration; public class MyApplication extends PackagesResourceConfig { public MyApplication() { // 扫描资源类所在的包,替换成你的实际包名 super("com.yourpackage"); // 启用JSON POJO自动映射 getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE); } }
4. Web.xml配置
在WEB-INF/web.xml里配置Jersey的Servlet:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>com.yourpackage.MyApplication</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/api/*</url-pattern> </servlet-mapping> </web-app>
5. 部署测试
把项目打包成WAR包,部署到兼容JDK5的Servlet容器(比如Tomcat 6.x,它完美支持JDK5),然后访问http://localhost:8080/你的应用名/api/hello,就能得到JSON响应:
{"id":1,"name":"Alice","email":"alice@example.com"}
注意事项
- 容器也要选JDK5兼容的,Tomcat 6.x、Jetty 7.x都可以,Jetty 8开始就要求JDK6+了。
- 如果遇到JSON序列化问题,检查所有依赖jar包版本是否和Jersey 1.17.1匹配,避免版本冲突。
内容的提问来源于stack exchange,提问作者Revathi Chandramohan
相关产品推荐
相关产品推荐

