jersey 是 sun 公司的一套HTTP接口,并不是真正的WebService。
由于采用了HTTP接口,自然就省去了SOAP封闭的步骤。
JSR绑定还是省不了的。
jersey在理解上最难的莫过于他的一套 Annotation 风格的代码。
将jersey放在Tomcat servlet中作服务端,这个代码很多。我喜欢嵌在Console程序中。
根据官方的
http://jersey.java.net/nonav/documentation/latest/getting-started.html
的非常明晰的DEMO。
以下程序是服务端。我这边根据项目上要求要用JSON来传递。
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.sun.grizzly.http.SelectorThread;
import com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory;
public class Main {
public static void main(String[] argc) throws IllegalArgumentException, IOException {
final String baseUri = "http://localhost:9998/";
final Map<String, String> initParams = new HashMap<String, String>();
initParams.put("com.sun.jersey.config.property.packages",
"com.sun.jersey.samples.helloworld.resources");
System.out.println("Starting grizzly...");
SelectorThread threadSelector = GrizzlyWebContainerFactory.create(baseUri, initParams);
System.out.println(String.format(
"Jersey app started with WADL available at %sapplication.wadl\n"
+ "Try out %shelloworld\nHit enter to stop it...",
baseUri, baseUri));
System.in.read();
threadSelector.stopEndpoint();
System.exit(0);
}
}
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
@Path("/helloworld")
public class HelloWorld {
@POST
@Produces(MediaType.APPLICATION_JSON)
public JSONObject getClichedMessage(JSONObject param) throws JSONException {
System.out.println(param);
return param;
}
}
// @Produces(MediaType.APPLICATION_JSON)不加的话,客户端如果求返回的话,会解析不出//来。如果这个函数是void的话,则客户端访问取返回值时会返回 HTTP STATUS 205。
//参数JSONObject param 不需要加 Annotation也可以识别。
这样访问 http://localhost:9998/helloworld 会有明显的变化。
客户端就不多说了
package com.pt;
import javax.ws.rs.core.MediaType;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
public class JerClient {
public static void main(String[] argc) throws JSONException {
Client c = Client.create();
WebResource r=c.resource("http://localhost:9998/helloworld");
JSONObject obj = new JSONObject();
obj.put("a", "1");
obj.put("b", "2");
JSONObject response = r.type(MediaType.APPLICATION_JSON_TYPE).post(JSONObject.class, obj);
System.out.println(response.toString());
}
}
分享到:
相关推荐
在本主题中,我们将深入探讨如何模拟SOAP客户端和服务端,尤其是在Tomcat服务器环境中。 首先,理解SOAP的基本结构至关重要。一个SOAP消息通常包括三部分:Header、Body和Envelope。Header部分包含消息处理信息,如...
RequestMethod支持GET, POST, DELETE, PUT 参数获取支持 @FormParam, @PathParam, @QueryParam, @HeaderParam等 ...能够方便地实现Java复杂对象, List, Map对象与JSON/XML的互转换 支持多文件、多参数上传,支持文件下
总结,利用"Maven REST API Codegen Maven Plugin"扫描Jersey资源并自动生成客户端代码是一种高效且可靠的方法,它能提升开发效率,确保客户端和服务端的同步,并降低错误率。对于大型项目或者频繁变动的服务接口,...
Jersey 是一个开源的 RESTful Web 服务客户端和服务器端框架,它基于 Java 的 JAX-RS(Java API for RESTful Web Services)规范。在Java应用程序中使用Jersey,需要包含一些核心的JAR包来支持其功能。以下是标题和...
3. **jersey-server**: 包含了用于构建RESTful服务端应用程序的组件,如资源定位、请求处理和响应生成。 4. **jersey-container-servlet**: 提供了与Servlet容器集成的模块,使你能在Tomcat、Jetty等环境中部署...
- Jersey客户端API的易用性和重用JAX-RS组件。 - 客户端API的概览。 - 如何开始使用客户端API,包括创建和配置客户端实例。 由于文件内容不完整,以上知识点的详细解释可能会有所省略,但以上信息足以提供对Jersey...
在本文中,我们将深入探讨如何使用SpringBoot框架与Jersey库整合来实现RESTful Web服务,并同时集成Spring MVC。这将使我们能够构建一个高效、灵活的后端系统,为客户端提供API接口。 首先,SpringBoot是Spring框架...
3. **jersey-json-1.19.1.jar**:此jar包支持JSON格式的数据交换,允许服务端和客户端处理JSON格式的请求和响应。它包含了对JSON-P(Java API for JSON Processing)的支持。 4. **jersey-client-1.19.1.jar**:这...
客户端可以编译PB消息定义到目标语言,以便与服务端进行通信。这种方式提高了数据交换的效率,并简化了接口设计。 【知识点四】:Demo的结构分析 "jerseydemo"这个压缩包可能包含以下组件: 1. `proto`文件:这是...
本Demo展示了如何使用Jersey构建一个简单的客户端(client)和服务端(server)的交互流程。 【描述】: 这个Demo的核心是基于REST 1.0规范,它分为两个部分:客户端(client)和服务器端(server)。客户端负责...
4. **jersey-client-1.18.jar**:提供了RESTful客户端功能,可以创建和发送HTTP请求,接收响应,并且能与服务器端的Jersey进行交互。 5. **jersey-servlet-1.18.jar**:这是用于部署Jersey应用到Servlet容器(如...
这些库共同构成了一个完整的 Jersey 开发环境,涵盖了服务端开发、客户端调用、JSON 处理以及与 Servlet 容器的集成。通过这些库,开发者可以方便地创建 RESTful 服务,同时利用源代码进行深入学习和定制化开发。...
例如,`jersey-server.jar`包含了服务端的核心功能,`jersey-client.jar`则用于客户端调用RESTful接口,`jersey-servlet.jar`是与Servlet容器集成的组件,而`jersey-json.jar`则支持JSON数据格式的处理。 另外,...
总的来说,jersey-bundle-1.9.1.jar是构建RESTful Web服务的基础,它简化了服务端和客户端的开发,并与Spring等主流框架无缝集成。理解并掌握jersey-bundle的使用,对于提升Java Web应用的开发效率和可维护性具有...
在IT行业中,构建RESTful服务已经成为现代Web应用开发的标准实践,它允许客户端和服务端通过HTTP协议进行通信。Jersey是Java平台上的一个轻量级框架,专门用于构建RESTful服务。MyBatis则是一个强大的持久层框架,它...
8. 测试:使用Jersey Test Framework进行单元测试和集成测试,模拟客户端发送请求并验证服务端的响应。 9. 异常处理:通过@Provider和@ExceptionMapper注解,可以自定义异常处理器,优雅地处理服务端抛出的异常。 ...
5. **客户端支持**:除了提供服务器端API之外,Jersey还提供了客户端API,便于开发者调用RESTful服务。 6. **错误处理**:内置的错误处理机制使得开发者能够更轻松地处理服务端或客户端可能出现的各种异常情况。 ##...
使用Gson,你可以轻松地将Java对象序列化为JSON,然后在服务端发送到客户端,或者将接收到的JSON数据反序列化为Java对象。以下是一个简单的示例: ```java import com.google.gson.Gson; public class User { ...
8. **异常处理**:理解如何处理服务端的异常,以及如何通过HTTP状态码和自定义错误消息向客户端传达错误信息。 9. **JSON与XML支持**:Jersey内置了对JSON和XML的支持,可以通过注解轻松地进行数据序列化和反序列化...
Jersey不仅提供了服务端实现,还提供了客户端API,方便进行服务调用和测试。通过`Client`类,可以构建HTTP请求,发送并接收响应。 **9. 模块化与扩展** Jersey允许模块化开发,可以通过添加模块来扩展功能,例如,...