java搭建webservice基于jersey

REST(Representational State Transfer)是基于 SOAP 和 Web 服务描述语言的 Web 服务的更为简单的替代方法。REST 对 Web 的影响非常大,由于其使用相当方便,已经普遍地取代了基于 SOAP 和 WSDL 的接口设计。

    我们这里是基于jersey来在java中实现webService服务。

Jersey是JAX-RS 的参考实现。Jersey:https://jersey.dev.java.net/

JAX -RS 为在Java上构建RESTful风格的web services提供了一组标准API。这组API基本上由一组注解(annotations)和相关的类和接口组成的。我们可以通过为 POJO 添加注解来发布 web services。

 

一.将jersey相关的jar包拷贝到java web项目的lib目录。

asm-3.1.jar
jackson-core-asl-1.8.3.jar
jackson-jaxrs-1.8.3.jar
jackson-mapper-asl-1.8.3.jar
jackson-xc-1.8.3.jar
jersey-client-1.10.jar
jersey-core-1.10.jar
jersey-json-1.10.jar
jersey-server-1.10.jar
jersey-servlet-1.10.jar
jettison-1.1.jar
jsr311-api-1.1.1.jar
最简包:jersey-core-1.10.jar ,  jersey-server-1.10.jar,   asm-3.1.jar,   jsr311-api-1.1.1.jar    

 

二.配置web.xml

<!-- REST Service 提供 web service服务 -->
<servlet>
    <servlet-name>JAX-RS REST Servlet</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <load-on-startup>4</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>JAX-RS REST Servlet</servlet-name>
    <!-- 指定了services路径下的所有都将被jersey进行拦截 -->
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>

 三.建立service端Java类。使用注解将其暴露为web服务对象。

package com.XXXXXXXXXXXXX;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import net.sf.json.JSONException;
import net.sf.json.JSONObject;

import org.apache.log4j.Logger;

import com.txsoft.xmcp.operation.common.util.CommonUtils;

/**
 * History Resource
 * 
 * @author jiangbo
 * 
 */
@Path("/xmcp/test")
public class WebServiceResource {

    /**
     * lo4j
     */
    private static Logger logger = Logger.getLogger(WebServiceResource.class);

    /**
     * main
     * 
     * @param json
     * @param method
     * @return
     */
    @Path("/{method}")
    @POST
    @Consumes( {
            "application/json", "application/xml" })
    @Produces( {
            "application/json", "application/xml" })
    public JSONObject main(JSONObject json, @PathParam("method")
    String method) {
        logger.debug("===============interface input param JSON data:" + json);
        JSONObject rejson = new JSONObject();
        // 初始化内存中的热力站数据
        rejson = initStationInfo(json, method);
        logger.debug("===============interface return JSON data:" + rejson);
        return rejson;
    }
}

 

四.新建客户端类。实现对服务端的调用。

1.使用Jersey Client 与 REST 服务通讯

客户端调用服务端时候可以通过post方式或者get方式分别调用。可以传参数,也可以无参数。

 这里给一个 post的 带参数的例子

package com.txsoft.xmcp.operation.resource;

import java.net.URI;
import java.net.URISyntaxException;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;

/**
 * 
 * @author JiangBo
 */
public class webServiceClient {

    public static void main(String[] args) throws URISyntaxException {
        Client client = Client.create();
        URI u = new URI("http://localhost:8888/XMCP/services/xmcp/initStationInfo");
        // 客户端的核心类是 WebResource。据根 URI 构建一个请求 URL。发送请求并获取响应。
        WebResource resource = client.resource(u);
        // 以post的方式进行通讯
        // POST 请求 :一个 POST 请求相当于一个 GET 请求和一个 PUT 请求的综合
        // 使用 POST 请求来发送一个实体到指定的 Web 资源并且接收另一个实体。使用 WebResource 类的 post() 方法来发送一个 HTTP POST 请求到指定的 Web 资源。
        // 发送一个带有查询参数以及进行了 URL 编码的表单数据的 POST 请求
        String jsonObject = resource.type("application/json").post(String.class, "{\"number\":\"aaaaaa\"}");
        System.out.println(jsonObject);
    }
}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值