您的位置:首页 > 编程语言 > Java开发

Spring+CXF开发RESTful风格的WebService

2017-04-08 21:34 411 查看
Spring+CXF开发RESTful风格的WebService

使用apache-cxf-2.7.18版本的cxf相关jar包

项目结构图:



StudentBean.java

package com.zxj.webservice.beans;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="student")
public class StudentBean implements Serializable {

private static final long serialVersionUID = 1L;

private long id;
private String name;

public StudentBean() {
super();
}

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@Override
public String toString() {
return "StudentBean [id=" + id + ", name=" + name + "]";
}

}


服务接口:IStudentWebService.java

package com.zxj.webservice.studentserver;

import java.util.List;

import javax.jws.WebService;
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 com.zxj.webservice.beans.StudentBean;

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

@Path("/getstudent/{id}")
//指定JSON数据类型
@Produces("application/json;charset=utf-8")
@GET
public StudentBean getStudent(@PathParam("id") long id);

@Path("/getstudents/{name}")
//指定XML数据类型
@Produces(MediaType.APPLICATION_XML)
@GET
public List<StudentBean> getStudents(@PathParam("name") String name);
}


服务接口实现类:StudentWebServerImpl.java

package com.zxj.webservice.studentserver.impl;

import java.util.ArrayList;
import java.util.List;

import com.zxj.webservice.beans.StudentBean;
import com.zxj.webservice.studentserver.IStudentWebService;

public class StudentWebServerImpl implements IStudentWebService {

@Override
public StudentBean getStudent(long id) {
StudentBean student = new StudentBean();
student.setId(id);
student.setName("赵祥军");
return student;
}

@Override
public List<StudentBean> getStudents(String name) {
List<StudentBean> students = new ArrayList<StudentBean>();
StudentBean student1 = new StudentBean();
student1.setId(1);
student1.setName(name);
StudentBean student2 = new StudentBean();
student2.setId(2);
student2.setName("XiangjunZhao");
students.add(student1);
students.add(student2);
return students;
}

}


applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd"> 
<!-- <jaxrs:server发布REST协议的服务 ,对JAXRSServerFactoryBean类封装 -->
<jaxrs:server address="/user">
<jaxrs:serviceBeans>
<ref bean="studentWebServerImpl"/>
</jaxrs:serviceBeans>
</jaxrs:server>

<!-- 配置服务实现类 -->
<bean id="studentWebServerImpl" class="com.zxj.webservice.studentserver.impl.StudentWebServerImpl"></bean>
</beans>


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>webservice_spring_cxf</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>

b48e
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<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>

<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
</web-app>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: