使用apach cxf+spring+tomcat搭建提供json格式的对外接口入门Demo
来源:互联网 发布:linux sudo命令 编辑:程序博客网 时间:2024/04/29 19:51
apache cxf是一款可提供webservice服务的轻量级框架。主要格式有xml和json。下面就以apache cxf和spring以及tomcat框架为基础,搭建一个简单的对外提供json格式的接口服务。
下面就开始快乐的学习之旅吧!
由于apache cxf是基于servlet技术的SOA应用框架,所以当然第一件事情就是配置web.xml了。
<web-app>
<display-name>application</display-name>
<!--由于spring也需要进行启动,所以顺带也进行了配置。下面制定了的spring配置文件位置-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:com/resources/spring-context.xml</param-value>
</context-param>
<!-- 默认的spring配置文件是在WEB-INF下的applicationContext.xml,下面这个是上下文加载器,用于初始化spring容器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--下面定义了cxfServlet以及加载的顺序-->
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!--定义访问cxf提供的服务时,servlet所做的映射-->
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
上面就把spring容器和cxf框架在servlet容器(此处用tomact)中定义好了。
下面就开始写接口服务了。先上我的项目结构图,如下图所示。
其中接口CxfTestService.java内容如下所示:
//@path指定访问的路径,这个注释是由jsr.jar来提供,下面的@GET注释也是由该jar包来提供,除此之外还提供了@POST(以post进行访问),@QueryParam(用于接口参数声明),@FormParam(用于接口参数声明,如果访问用post方式进行,则若接口方法有参数则可以用该注释申明)等注释。
@Path("/test")
public interface CxfTestService {
@GET
@Path("/init")
public ResultDomain init();
}
上面用注释的方法把接口定义好了,当然也可以选择代码的方式进行声明,本文还是同一采用注释的方式(ps:本人习惯用注释的方式了)。
下面就来看接口实现类CxfTestService.java吧。下面上代码:
public class CxfTestServiceImpl implements CxfTestService{
public ResultDomain init() {
ResultDomain domain = new ResultDomain();
domain.setCode(1);
domain.setResult("成功了");
domain.setResultDesc("操作成功");
return domain;
}
}
大家不要骂我,就是一个用于测试的方法而已,和普通方法完全没区别,但注意了,我们进入这个方法返回ResultDomain去看一下有什么不同吧。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ResultDomain {
public String resultDesc;
public Integer code;
public Object result;
从上面可以看到,该实体类也进行了注释申明。因为cxf使用jaxb进行数据绑定时,要知道对应实体的属性,所以要将类申明为@XmlRootElement。这样jaxb才知道类里面有什么属性。而@XmlAccessorType(XmlAccessType.FIELD)则指定 JAXB 绑定类中的每个非静态、非瞬态字段将会自动绑定到 XML。
搞定了上面两块东西,下面就剩最后一块内容了,那就是spring容器和cxf的整合。本配置内容放在spring-cxf-out.xml文件中。上配置文件:
<!--下面这块dtd,xsd我就不解释了,就是配置的规范约束-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<!--生成一个cxfTestService实例对象-->
<bean id="cxfTestService" class="com.cxf.webService.impl.CxfTestServiceImpl" />
<bean id="securityExceptionMapper" class="com.cxf.webService.impl.CxfTestServiceImpl" />
<!--指定返回的json的格式,可以安装字面理解-->
<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<!--忽视命名空间-->
<property name="ignoreNamespaces" value="true" />
<!--忽略根节点-->
<property name="dropRootElement" value="true" />
<!--若返回结果是集合,则这个配置为true和false影响到集合内属性的括号问题,若为true,json格式大概是[{}],而反之则是{{}},第一种格式是用gson可以解析的,而第二种是gson无法解析的-->
<property name="dropCollectionWrapperElement" value="true" />
<!--结合的序列化-->
<property name="serializeAsArray" value="true" />
</bean>
<!--用jaxrs来声明服务,ps:spring容器中提供了jaxrs和jaxws来发布cxf服务-->
<jaxrs:server id="cxfServices" address="/">
<jaxrs:serviceBeans>
<!--这里就是将定义好的服务-->
<ref bean="cxfTestService" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="jsonProvider" />
</jaxrs:providers>
</jaxrs:server>
</beans>
好了,到此为止一个简易的对外提供json格式的服务已经搭好了,下面就开启服务进行访问吧!看下图所示,就可已用get方式来访问该接口服务并返回json格式的结果了。
资源下载地址:
http://download.csdn.net/detail/shihai1991/8021127
参考博文:
http://cxf.apache.org/docs/index.html
http://www.ibm.com/developerworks/cn/education/java/j-cxf/
- 使用apach cxf+spring+tomcat搭建提供json格式的对外接口入门Demo
- CXF学习-与Spring结合:使用其他程序提供的web service 接口
- CXF集成Spring提供Webservice接口服务
- memcached与spring提供的cache接口整合demo
- spring boot的入门demo搭建记录
- 提供对外接口时,要注意的地方
- JSON API免费接口 各种提供JSON格式数据返回服务网站的API接口
- CXF提供的接口如何调用
- WebService使用对外免费接口的问题
- CXF+Spring搭建Restful接口服务
- spring + cxf 构建 webservice 接口入门
- 使用CXF+spring创建一个web的接口项目
- 使用CXF+spring+restful创建一个web的接口项目
- 使用CXF+spring+restful创建一个web的接口项目
- 使用cxf发布rest服务接口,和spring的整合
- 使用CXF+spring+restful创建一个web的接口项目
- 使用CXF+spring+restful创建一个web的接口项目
- Webservice - Demo : Spring + CXF + JSON(服务器篇)
- Android 开发简介
- 排序算法——插入排序
- Android解决没有AVD的方法
- xcode6+ios8最新真机调试教程
- struct 和typedef struct的区别
- 使用apach cxf+spring+tomcat搭建提供json格式的对外接口入门Demo
- HTML<input>标签的name和id属性区别
- 创建进程 fork()函数的基本使用 父子进程之间的关系
- CSDN第一篇
- SQL中的case when then else end用法
- C++ lambda表达式
- PNG图片尺寸小于2x2,导致小尺寸屏幕机型会缩放为0像素导致crash
- extjs5 更改主题
- Eclipse 中打不开android sdk managerf