如何在Spring 3 MVC整合Apache CXF开发区优化整合方案Webservice服务

Spring整合CXF webservice restful实例详解
作者:汉有游女,君子于役
字体:[ ] 类型:转载 时间:
这篇文章主要为大家详细介绍了Spring整合CXF webservice restful的实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
webservice restful接口跟soap协议的接口实现大同小异,只是在提供服务的类/接口的注解上存在差异,具体看下面的代码,然后自己对比下就可以了。
用到的基础类
@XmlRootElement(name="User")
public class User {
private String userN
public User(String userName, String sex, int age) {
this.userName = userN
this.sex =
this.age =
public User() {
public String getUserName() {
return userN
public void setUserName(String userName) {
this.userName = userN
public String getSex() {
public void setSex(String sex) {
this.sex =
public int getAge() {
public void setAge(int age) {
this.age =
public static void main(String[] args) throws IOException {
System.setProperty("http.proxySet", "true");
System.setProperty("http.proxyHost", "192.168.1.20");
System.setProperty("http.proxyPort", "8080");
URL url = new URL("");
URLConnection con =url.openConnection();
System.out.println(con);
接下来是服务提供类,PhopuRestfulService.java
@Path("/phopuService")
public class PhopuRestfulService {
Logger logger = Logger.getLogger(PhopuRestfulServiceImpl.class);
@Produces(MediaType.APPLICATION_JSON) //指定返回数据的类型 json字符串
//@Consumes(MediaType.TEXT_PLAIN) //指定请求数据的类型 文本字符串
@Path("/getUser/{userId}")
public User getUser(@PathParam("userId")String userId) {
("Call getUser() method...."+userId);
User user = new User();
user.setUserName("中文");
user.setAge(26);
user.setSex("m");
@Produces(MediaType.APPLICATION_JSON) //指定返回数据的类型 json字符串
//@Consumes(MediaType.TEXT_PLAIN) //指定请求数据的类型 文本字符串
@Path("/getUserPost")
public User getUserPost(String userId) {
("Call getUserPost() method...."+userId);
User user = new User();
user.setUserName("中文");
user.setAge(26);
user.setSex("m");
web.xml配置,跟soap协议的接口一样
&!-- CXF webservice 配置 --&
&servlet-name&cxf-phopu&/servlet-name&
&servlet-class&org.apache.cxf.transport.servlet.CXFServlet&/servlet-class&
&/servlet&
&servlet-mapping&
&servlet-name&cxf-phopu&/servlet-name&
&url-pattern&/services/*&/url-pattern&
&/servlet-mapping&
Spring整合配置
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
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/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"&
&import resource="classpath:/META-INF/cxf/cxf.xml" /&
&import resource="classpath:/META-INF/cxf/cxf-servlet.xml" /&
&import resource="classpath:/META-INF/cxf/cxf-extension-soap.xml" /&
&!-- 配置restful json 解析器 , 用CXF自带的JSONProvider需要注意以下几点
-1、dropRootElement 默认为false,则Json格式会将类名作为第一个节点,如{Customer:{"id":123,"name":"John"}},如果配置为true,则Json格式为{"id":123,"name":"John"}。
-2、dropCollectionWrapperElement属性默认为false,则当遇到Collection时,Json会在集合中将容器中类名作为一个节点,比如{"Customer":{{"id":123,"name":"John"}}},而设置为false,则JSon格式为{{"id":123,"name":"John"}}
-3、serializeAsArray属性默认为false,则当遇到Collecion时,格式为{{"id":123,"name":"John"}},如果设置为true,则格式为[{"id":123,"name":"john"}],而Gson等解析为后者
&bean id="jsonProviders" class="org.apache.cxf.jaxrs.provider.json.JSONProvider"&
&property name="dropRootElement" value="true" /&
&property name="dropCollectionWrapperElement" value="true" /&
&property name="serializeAsArray" value="true" /&
&!-- 服务类 --&
&bean id="phopuService" class="com.phopu.service.PhopuRestfulService" /&
&jaxrs:server id="service" address="/"&
&jaxrs:inInterceptors&
&bean class="org.apache.cxf.interceptor.LoggingInInterceptor" /&
&/jaxrs:inInterceptors&
&!--serviceBeans:暴露的WebService服务类--&
&jaxrs:serviceBeans&
&ref bean="phopuService" /&
&/jaxrs:serviceBeans&
&!--支持的协议--&
&jaxrs:extensionMappings&
&entry key="json" value="application/json"/&
&entry key="xml" value="application/xml" /&
&entry key="text" value="text/plain" /&
&/jaxrs:extensionMappings&
&!--对象转换--&
&jaxrs:providers&
&!-- &ref bean="jsonProviders" /& 这个地方直接用CXF的对象转换器会存在问题,当接口发布,第一次访问没问题,但是在访问服务就会报错,等后续在研究下 --&
&bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider" /&
&/jaxrs:providers&
&/jaxrs:server&
客户端调用示例:
对于get方式的服务,直接在浏览器中输入 就可以直接看到返回的json字符串
{"userName":"中文","sex":"m","age":26}&
客户端调用代码如下:
public static void getWeatherPostTest() throws Exception{
String url = "http://localhost:8080/phopu/services/phopuService/getUserPost";
HttpClient httpClient = HttpClients.createSystem();
//HttpGet httpGet = new HttpGet(url); //接口get请求,post not allowed
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader(CONTENT_TYPE_NAME, "text/plain");
StringEntity se = new StringEntity("");
se.setContentType("text/plain");
httpPost.setEntity(se);
HttpResponse response = httpClient.execute(httpPost);
int status = response.getStatusLine().getStatusCode();
("[接口返回状态吗] : " + status);
String weatherInfo = ClientUtil.getReturnStr(response);
("[接口返回信息] : " + weatherInfo);
客户端调用返回信息如下:
ClientUtil类是我自己封装的一个读取response返回信息的类,encoding是UTF-8
public static String getReturnStr(HttpResponse response) throws Exception {
String result =
BufferedInputStream buffer = new BufferedInputStream(response.getEntity().getContent());
byte[] bytes = new byte[1024];
int line = 0;
StringBuilder builder = new StringBuilder();
while ((line = buffer.read(bytes)) != -1) {
builder.append(new String(bytes, 0, line, HTTP_SERVER_ENCODING));
result = builder.toString();
到这里,就介绍完了,大家手动去操作一下吧,有问题大家一块交流。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具&&原cxf+spring mvc+web service+maven服务端项目搭建实例最近公司用到webservice,所以搭建了一个简单的webservice环境,上传分享猜你喜欢3个牛币请下载代码后再发表评论//WebServiceDemoAndSpringMVC/WebServiceDemoAndSpringMVC/.classpath/WebServiceDemoAndSpringMVC/.project/WebServiceDemoAndSpringMVC/.settings/WebServiceDemoAndSpringMVC/.settings/.jsdtscope/WebServiceDemoAndSpringMVC/.settings/org.eclipse.jdt.core.prefs/WebServiceDemoAndSpringMVC/.settings/org.eclipse.m2e.core.prefs/WebServiceDemoAndSpringMVC/.settings/org.ponent/WebServiceDemoAndSpringMVC/.settings/org.mon.project.facet.core.xml/WebServiceDemoAndSpringMVC/.settings/org.eclipse.wst.jsdt.ui.superType.container/WebServiceDemoAndSpringMVC/src/WebServiceDemoAndSpringMVC/src/main/WebServiceDemoAndSpringMVC/src/main/java/WebServiceDemoAndSpringMVC/src/main/java/com/WebServiceDemoAndSpringMVC/src/main/java/com/jbw/WebServiceDemoAndSpringMVC/src/main/java/com/jbw/Model/WebServiceDemoAndSpringMVC/src/main/java/com/jbw/service/WebServiceDemoAndSpringMVC/src/main/java/com/jbw/service/webservice/WebServiceDemoAndSpringMVC/src/main/java/com/jbw/service/webservice/impl精精精精原精精精原相关分享原原原最近下载暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级最近浏览暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级扫描二维码关注最代码为好友"/>扫描二维码关注最代码为好友springmvc 集成apache cxf 开发webservice 示例 - CSDN博客
springmvc 集成apache cxf 开发webservice 示例
1.添加apache cxf 类库
2.开发webservice接口
3.开发webservic接口实现类
3.配置公开的服务
4.客户端调用webservice 服务示例
方案1的问题:如何知道服务端的接口类型以及接口参数使用类型,接口返回参数类型?
方案2::使用wsimport 工具生成客户端源码然后直接利用生成的客户端源码调用webservice服务,方案2不存在方案1存在的问题
1.生成客户端代码:
2.利用客户端代码调用webservice 服务
最重要的配置文件web.xml文件差点儿给忘了
本文已收录于以下专栏:
相关文章推荐
spring mvc 集成apche cxf 开发webservice 示例
想比较下Jersey以及cxf的使用方便性,所以就
Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多...
本文我们将承接上文Apache CXF实现WebService开发(一)
http://blog.csdn.net/mahoking/article/details/。完成将我们开...
最近项目中采用Apache CXF 的REST 方式发布WebService实现,Android手机后台服务的开发,以下以简单是实例实现。
在项目中采用Android+REST WebService...
在CXF2版本中,整合Spring3发布CXF WebService就更加简单了。因为Spring 3提供了annotation注解,而CXF2发布WebService已经不像之前版本的配置那样(参考...
新一代的 Web Services 框架如 Axis2、CXF 都是由现有的项目中逐渐演化而来的,Axis2 是由大家熟悉的 Axis 1.x 系列演化过来,而 Apache CXF 则是由 Celt...
使用 CXF 做 webservice 简单例子
  Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构。它允许创建高性能和可扩展的服务,...
在CXF2版本中,整合Spring3发布CXF WebService就更加简单了。因为Spring 3提供了annotation注解,而CXF2发布WebService已经不像之前版本的配置那样(参考...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)使用cxf在springMVC环境搭建webservice示例(服务端)
使用cxf在springMVC环境搭建webservice示例(服务端):1、 添加依赖:添加cxf的必要依赖 springMVC相关的依赖自行添加。
org.codehaus.woodstox
woodstox-core-asl
org.apache.cxf
cxf-rt-frontend-jaxws
${cxf.version}
org.apache.cxf
cxf-rt-transports-http
${cxf.version}
org.apache.cxf
cxf-rt-transports-http-jetty
${cxf.version}
2、 web.xml配置
这里提供了webservice的必要配置,具体springMVC的内容暂未加入
所有webservice接口配置放置于bean.xml,具体内容见第3节
contextConfigLocation
classpath:beans.xml
org.springframework.web.context.ContextLoaderListener
CXFServlet
org.apache.cxf.transport.servlet.CXFServlet
CXFServlet
3、 webservice bean配置
4、 接口定义与实现
ReportEntity.java
package skytech.casedemo.
* 直报主体定义
* Created by ht on .
public class ReportEntity {
private String enterpirseN
private String orgaizationId;
public String getPkid() {
public void setPkid(String pkid) {
this.pkid =
public String getEnterpirseName() {
return enterpirseN
public void setEnterpirseName(String enterpirseName) {
this.enterpirseName = enterpirseN
public String getOrgaizationId() {
return orgaizationId;
public void setOrgaizationId(String orgaizationId) {
this.orgaizationId = orgaizationId;
ReportEntityService.java
package skytech.casedemo.
import javax.jws.WebS
* 接口定义
@WebService用于定义webservice对外开放的接口
* Created by ht on .
@WebService
public interface ReportEntityService {
ReportEntity findOne(String pkid);
ReportEntityServiceImpl.java
package skytech.casedemo.
* Created by ht on .
* webservice接口实现
public class ReportEntityServiceImpl implements ReportEntityService {
public ReportEntityServiceImpl() {
System.out.println(&初始化ReportEntityServiceImpl&);
public ReportEntity findOne(String pkid) {
ReportEntity reportEntity = new ReportEntity();
reportEntity.setPkid(pkid);
reportEntity.setEnterpirseName(pkid + &_测试的直报主体&);
reportEntity.setOrgaizationId(&&);
return reportE
5、启动服务
启动ide,配置tomcat等相关参数(例:端口8080,上下文ws)后启动。
使用访问:
接口列表:https://localhost:8080/ws/cxf
wsdl接口描述:https://localhost:8088/ws/cxf/findReportEntity?wsdl
能够访问,则启动成功。webservice学习之使用Apache CXF和spring搭建webservice_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
webservice学习之使用Apache CXF和spring搭建webservice
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 矿产资源开发整合审计 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信