webservice--cxf和spring结合,发布restFull风格的服务

下面是发布一个restFull风格的实例:

服务端:

实体:

package entity;


import java.util.Date;

import javax.xml.bind.annotation.XmlRootElement;

/**
 * 实体
 */

@XmlRootElement(name="student")
public class Pojo {

    private long id;
    //温度
    private String detail;
    //日期
    private Date  date;
    //最高
    private int temperature_max;
    //最低
    private int temperature_min;

    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getDetail() {
        return detail;
    }
    public void setDetail(String detail) {
        this.detail = detail;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    public int getTemperature_max() {
        return temperature_max;
    }
    public void setTemperature_max(int temperature_max) {
        this.temperature_max = temperature_max;
    }
    public int getTemperature_min() {
        return temperature_min;
    }
    public void setTemperature_min(int temperature_min) {
        this.temperature_min = temperature_min;
    }

}

一定要在实体类的前边加上annotation ,这样才能让信息在POJO和XML之间转换

SEI:

package service;

import java.util.List;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.ws.rs.Consumes;
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.MediaType;

import entity.Pojo;

/**
 * 接口
 */

@WebService
@Path("/student")
public interface WeatherInterface {

    //MediaType

    //查询学生列表
    @GET
    @Path("/queryList/{type}")
    @Consumes(MediaType.APPLICATION_XML)
    public List<Pojo> queryWeather(@PathParam("type")String cityName);

    //查询学生
    @GET
    @Path("/query/{id}")
    @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
    public Pojo queryById(@PathParam("id")long id);

}

每个方法之前,要用annotation声明http请求的method类型,比如GET,DELETE,POST, PUT

 @Path("/room/{id}")中的id是一个参数,应该在方法的参数列表中声明:  public Pojo queryById(@PathParam("id")long id)

实现类:

package service;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

import com.sun.org.glassfish.gmbal.ParameterNames;

import entity.Pojo;

/**
 * 实现类
 */

public class Impl implements WeatherInterface {

    @Override
    public List<Pojo> queryWeather(String cityName) {

        List<Pojo> list = new ArrayList<Pojo>();

        //日历附件
        Calendar calendar = Calendar.getInstance();
        int day = calendar.get(Calendar.DATE);

        Pojo pojo1 = new Pojo();
        pojo1.setId(01);
        pojo1.setDetail("晴1");
        pojo1.setDate(new Date());
        pojo1.setTemperature_max(5);
        pojo1.setTemperature_min(-6);

        Pojo pojo2 = new Pojo();
        pojo2.setId(02);
        pojo2.setDetail("晴2");
        calendar.set(Calendar.DATE, day+1);
        pojo2.setDate(calendar.getTime());
        pojo2.setTemperature_max(5);
        pojo2.setTemperature_min(-6);

        Pojo pojo3 = new Pojo();
        pojo3.setId(003);
        pojo3.setDetail("晴3");
        calendar.set(Calendar.DATE, day+2);
        pojo3.setDate(calendar.getTime());
        pojo3.setTemperature_max(5);
        pojo3.setTemperature_min(-6);

        list.add(pojo1);
        list.add(pojo2);
        list.add(pojo3);

        return list;
    }

    @Override
    public Pojo queryById(long id) {
        Pojo pojo1 = new Pojo();
        pojo1.setId(id);
        pojo1.setDetail("张三");
        pojo1.setDate(new Date());
        pojo1.setTemperature_max(5);
        pojo1.setTemperature_min(-6);

        return pojo1;
    }

}

spring配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jaxrs="http://cxf.apache.org/jaxrs"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://cxf.apache.org/jaxrs
        http://cxf.apache.org/schemas/jaxrs.xsd" >

    <!-- service -->
    <bean id="WeatherInterface" class="service.Impl" />

    <!-- 通过jaxrs:server方式来配置webservice -->

    <jaxrs:server  address="/weather">
        <jaxrs:serviceBeans>
            <ref bean="WeatherInterface" />
        </jaxrs:serviceBeans>
    </jaxrs:server>
</beans>

xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    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">
  <display-name></display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!-- 加载spring容器 -->
  <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>  

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>  

  <!-- cxf的servlet -->
  <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>  

    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/ws/*</url-pattern>
    </servlet-mapping>
</web-app>

把项目部署到tomcat,地址栏输入:http://localhost:8989/cxf_rest_spring_service/ws/

时间: 2024-11-05 18:34:28

webservice--cxf和spring结合,发布restFull风格的服务的相关文章

webservice的cxf和spring整合发布

1.新建一个web项目 2.导入cxf相应的jar包,并部署到项目中 3.服务接口 1 package com.xiaostudy; 2 3 /** 4 * @desc 服务器接口 5 * @author xiaostudy 6 * 7 */ 8 public interface Test_service { 9 10 public String getNumber(String number); 11 12 } 4.服务接口实现类 1 package com.xiaostudy; 2 3 im

WebService—CXF整合Spring实现接口发布和调用过程2

一.CXF整合Spring实现接口发布 发布过程如下: 1.引入jar包(基于maven管理) <!-- cxf --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>2.7.18</version> </dependency> <de

WebService—CXF整合Spring实现接口发布和调用过程

一.CXF整合Spring实现接口发布 发布过程如下: 1.引入jar包(基于maven管理) <!-- cxf --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>2.7.18</version> </dependency> <de

webservice cxf与spring详解

wsdl文档结构图 JDK方式开发 server端代码 package server; import javax.jws.WebMethod; import javax.jws.WebService; /**  *   *   * SEI:Service Endpoint Interface 发布的服务接口  *  */ @WebService public interface HelloWS { @WebMethod     public String sayHello(String name

springMvc发布restFull风格的URL

package zpark.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.Reques

Spring整合CXF,发布RSETful 风格WebService(转)

Spring整合CXF,发布RSETful 风格WebService 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的.关于发布CXF WebServer和Spring整合CXF这里就不再多加赘述了.如果你对Spring整合CXF WebService不了解,具体你可以参看这两篇文章: http://www.cnblogs.com/hoojo/archive/2011/03/30/1999563.html http://www.cnblogs.com/ho

CXF发布rest风格的webservice

1.1      什么是restFul REST 是一种软件架构模式,只是一种风格,rest服务采用HTTP 做传输协议,REST 对于HTTP 的利用分为以下两种:资源定位和资源操作. l  资源定位 更加准确去定位一个互联网资源.使用url定位一个互联网资源. 比如:查询一个学生信息url 资源定位要定位一个学生信息: 不使用rest的url:http://ip:port/queryUser.action?userType=XXX&studentid=001&XXXX 使用 rest的

CXF集成Spring实现webservice的发布与请求

CXF集成Spring实现webservice的发布(服务端) 目录结构: 主要代码: package com.cxf.spring.pojo; public class User { int id ; String name = null; String address = null; String email = null; public int getId() { return id; } public void setId(int id) { this.id = id; } public

Web Service学习-CXF与Spring整合为JavaEE应用发布WebService(三)

CXF与Spring整合,分两个方面给大家介绍: 1,在传统ssh项目基础上添加Web Service 赋值CXF的jar包 在web.xml配置文件中导入CXF的核心控制器:CXFServlet 在Spring配置文件中导入CXF提供Schema,xml配置文件 在Spring配置文件中使用jaxws:endpoint元素来暴露Web Service 如果要添加拦截器,在jaxws:endpoint元素里添加 inInterceptors,outInterceptors子元素 2,远程调用We