cxf3.14+spring4.2以rest风格发布webservice
来源:互联网 发布:无法开启网络发现 编辑:程序博客网 时间:2024/05/20 03:07
1 开发工具
Idea
spring4.2
cxf3.14
2 maven 依赖 pom.xml
<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.4</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-transports-http-jetty --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>3.1.4</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api --> <dependency> <groupId>javax.ws.rs</groupId> <artifactId>javax.ws.rs-api</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxrs</artifactId> <version>3.1.4</version> </dependency> <!--解决cxf3x版本不自动提供转化json格式数据--> <dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> <version>2.5.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>4.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc-portlet</artifactId> <version>4.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-websocket</artifactId> <version>4.2.0.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</version> </dependency>
3 web.xml配置
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>apptest1</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 配置spring资源路径 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:SpringMVCServlet-servlet.xml</param-value> </context-param> <!--配置spring上下文监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 字符集过滤 --> <filter> <description>字符集过滤器</description> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <description>字符集编码</description> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- springmvc的配置 --> <!--<servlet> <servlet-name>SpringMVCServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:SpringMVCServlet-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVCServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>--> <!-- cxf的Servlet --> <servlet> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <!-- 配置cxf的访问地址 --> <!-- 本系统中webService必须以/ws/*开头 --> <servlet-mapping> <servlet-name>cxf</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping></web-app>
4 spring的配置文件 SpringMVCServlet-servlet.xml
<?xml version="1.0" encoding="UTF-8"?><beans xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.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"xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:jaxrs="http://cxf.apache.org/jaxrs"xmlns:cxf="http://cxf.apache.org/core"xmlns:soap="http://cxf.apache.org/bindings/soap"> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <context:component-scan base-package="com.wyn.app;com.ws.weather"></context:component-scan> <bean id="studentService" class="com.wyn.app.serviceImp.StudentServiceImpl"></bean> <!--jaxrs搭配restful相关配置--> <jaxrs:server id="studentServiceT" address="/student"> <!--输入拦截器设置--> <jaxrs:inInterceptors> </jaxrs:inInterceptors> <!--输出拦截器设置--> <jaxrs:outInterceptors> </jaxrs:outInterceptors> <!--serviceBeans:暴露的WebService服务类--> <jaxrs:serviceBeans> <ref bean="studentService"/> </jaxrs:serviceBeans> <!--支持的协议--> <jaxrs:extensionMappings> <entry key="json" value="application/json"/> <entry key="xml" value="application/xml"/> </jaxrs:extensionMappings> <!--编码格式--> <jaxrs:languageMappings> </jaxrs:languageMappings> <!--对象转换--> <jaxrs:providers> <bean class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider"/> </jaxrs:providers> </jaxrs:server> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <!-- <bean p:suffix=".jsp" p:prefix="/" class="org.springframework.web.servlet.view.InternalResourceViewResolver"/> --> <!--配置ModelAndView(jsp)解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 --> </bean> <!-- 静态资源的访问方式 --> <mvc:default-servlet-handler/></beans>
5 实体类 Student
package com.wyn.app.entity;import javax.xml.bind.annotation.XmlRootElement;import java.util.Date;/** * Created by wangyanan on 2017/8/25. */@XmlRootElementpublic class Student { private long id; private String name; private Date birthday; 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; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", birthday=" + birthday + '}'; }}
实体类 StudentList
package com.wyn.app.entity;import javax.xml.bind.annotation.XmlRootElement;import java.util.List;/** * Created by wangyanan on 2017/8/25. */@XmlRootElementpublic class StudentList { List<Student> studentList; public List<Student> getStudentList() { return studentList; } public void setStudentList(List<Student> studentList) { this.studentList = studentList; }}
6 service 接口层
package com.wyn.app.service;import com.wyn.app.entity.Student;import com.wyn.app.entity.StudentList;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;/** * Created by wangyanan on 2017/8/25. */@WebService@Path("/student")//@Produces(MediaType.APPLICATION_JSON)public interface StudentService { //查询学生信息 @GET //http中的GET方法 @Path("/query/{id}") //id参数通过URL访问传递 @Produces(MediaType.APPLICATION_XML) //返回XML public Student queryStudent(@PathParam("id")long id); //查询学生列表 @GET //http中的GET方法 @Path("/querylist/{type}") //JSON格式 //@Produces({ "text/html;charset=utf-8", MediaType.TEXT_HTML }) //@Produces({MediaType.APPLICATION_JSON,"application/json;charset=utf-8"}) @Produces(MediaType.APPLICATION_JSON) //@Produces(MediaType.APPLICATION_XML) //返回XML //如果想让json返回xml需要在rest的url后边添加?_type=xml public StudentList queryStudentList(@PathParam("type")String type) throws Exception; //public Response queryStudentList(@QueryParam("type")String type) throws Exception;}
7 serviceImp 接口实现类层
package com.wyn.app.serviceImp;import com.wyn.app.entity.Student;import com.wyn.app.entity.StudentList;import com.wyn.app.service.StudentService;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * Created by wangyanan on 2017/8/25. */public class StudentServiceImpl implements StudentService{ public Student queryStudent(long id) { //使用静态数据 Student student = new Student(); student.setId(id); student.setName("张三"); student.setBirthday(new Date()); return student; } public StudentList queryStudentList(String type) throws Exception { StudentList studentList=new StudentList(); List<Student> list = new ArrayList<Student>(); Student student1 = new Student(); student1.setId(1L); student1.setName("张三"); student1.setBirthday(new Date()); Student student2 = new Student(); student2.setId(2L); student2.setName("王五"); student2.setBirthday(new Date()); list.add(student1); list.add(student2); studentList.setStudentList(list); return studentList; /*JSONArray jsonArray = JSONArray.fromObject(student1); return Response.ok(jsonArray.toString()).build();*/ }}
8 访问接口
阅读全文
0 0
- cxf3.14+spring4.2以rest风格发布webservice
- 利用cxf3.14+spring4.2发布webservice
- maven3.1.1 spring4.3.4+mybatis3.2.8+CXF3.1.7 发布webservice 注意几点
- cxf发布rest风格的webService
- WebService Spring4.3+cxf3.1.5整合Demo
- 使用 Spring4 + CXF3 + WS-Security 开发 WebService
- CXF3+spring4发布RESTful问题总结
- koala4以rest方式发布webservice服务
- maven 项目 cxf+spring 发布rest风格webservice
- webService的rest风格的接口发布流程
- Spring4 搭建一个REST WebService
- REST风格WebService调用客户端
- Axis2 WebService(基于REST风格)
- Axis2 WebService(基于REST风格)
- rest风格webservice相关记录
- Rest 风格的webservice 调用
- [CXF REST标准实战系列] 二、Spring4.0 整合 CXF3.0,实现测试接口
- 转载 [CXF REST标准实战系列] 二、Spring4.0 整合 CXF3.0,实现测试接口
- 【PAT】【Advanced Level】1073. Scientific Notation (20)
- .NET Core 常用加密和Hash工具NETCore.Encryp
- 【leetcode】112. Path Sum(Python & C++)
- Iput子系统探究--1(input_dev)
- Python的from import和import的区别?
- cxf3.14+spring4.2以rest风格发布webservice
- 51nod1305 Pairwise Sum and Divide
- c和cpp比较(1)--读书笔记3
- java单例设计模式
- 达人篇:3)质量管理
- Linux系统中MySQL相关问题
- Android第一行代码
- R语言对高频交易订单流进行建模分析 3
- 数据库存储过程