一、概述

Apache CXF提供了用于方便地构建和开发WebService的可靠基础架构。它允许创建高性能和可扩展的服务,可以部署在Tomcat和基于Spring的轻量级容器中,也可以部署在更高级的服务器上,例如Jboss、WebSphere或WebLogic。 CXF提供了以下功能:

  • WebService服务标准支持:

Java API for XML Web Services (JAX-WS)
SOAP
WebService描述语言(Web Services Description Language ,WSDL)
消息传输优化机制(Message Transmission Optimization Mechanism,MTOM)
WS-Basic Profile
WS-Addressing
WS-Policy
WS-ReliableMessaging
WS-Security

  • 前端建模:CXF允许使用不同的前端API来创建Service。如CXF允许使用简单的工厂Bean并通过JAX-WS实现来创建WebService,允许创建动态WebService客户端。
  • 工具支持:CXF提供了在Java Bean、WebService和WSDL之间进行转换的工具,提供了对Maven和Ant集成的支持,并无缝地支持Spring集成。
  • RESTful支持:CXF支持Restful,并支持Java平台的JAX-RS实现。
  • 对不同传输和绑定的支持:CXF支持不同数据类型的传输,除了支持SOAP和HTTP协议绑定外,还支持JAXB和AEGIS绑定。
  • 对非XML绑定的支持:CXF支持非XML绑定,如JSON、CORBA、JBI和SCA等。
  • Code First和Xml First:CXF支持使用Code First或者Xml First的方式创建WebService。

二、使用CXF内置jetty发布WebService

maven:

<properties>
<cxf.version>3.1.4</cxf.version>
</properties> <dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
</dependency> <dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
</dependency> <!-- 使用cxf内置的jetty服务器发布WebService -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>${cxf.version}</version>
</dependency>

---

接口:

@WebService
public interface HelloService{ public String helloCxf(); public String hello(String name);public User getUser(int id); public void saveUser(User user); }

实现:

@WebService(serviceName = "helloService",
endpointInterface = "cn.lg.ws.hellocxf.HelloService"
)
public class HelloServiceImpl implements HelloService{ @Override
public String helloCxf(){
return "Hello CXF!";
} @Override
public String hello(String name)
{
return "Hello " + name;
} @Override
public User getUser(int id) {
User u1 = new User();
return u1;
} @Override
public void saveUser(User user) {
System.out.println(user.toString());
} }

发布:

public class PublishService{
/**
* 使用CXF的JaxWsServerFactoryBean发布服务
* @param
*/
public static void main(String[] args) {
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setServiceClass(HelloService.class);
//服务发布地址
factory.setAddress("http://localhost:8088/soap/hello");
factory.setServiceBean(new HelloServiceImpl());
factory.create();
System.out.println("publish success");
}
}

使用浏览器访问 http://localhost:8088/soap/hello?wsdl 可以看到wsdl如下,则说明发布成功

使用CXF在客户端调用WebService:

public class ClientTest{
public static void main(String[] args) {
JaxWsProxyFactoryBean jwpfb = new JaxWsProxyFactoryBean();
jwpfb.setServiceClass(HelloService.class);
jwpfb.setAddress("http://localhost:8088/sop/hello");
HelloService hs = (HelloService) jwpfb.create();
System.out.println(hs.getUser(101));
Q.p(hs.hello("luangeng"));
}
}

---

相关类可通过以下命令产生:

wsimport -p com.ickes.cxf.client -keep http://localhost:8088/sop/hello?wsdl

Apache CXF使用Jetty发布WebService的更多相关文章

  1. 使用CXF框架,发布webservice服务,并使用客户端远程访问webservice

    使用CXF框架,发布webservice服务,并使用客户端远程访问webservice  1. CXF介绍 :soa的框架    * cxf 是 Celtrix (ESB框架)和 XFire(webs ...

  2. CXF整合Spring发布WebService实例

    一.说明: 上一篇简单介绍了CXF以及如何使用CXF来发布一个简单的WebService服务,并且介绍了客户端的调用. 这一篇介绍如何使用CXF与spring在Web项目中来发布WebService服 ...

  3. 利用spring、cxf编写并发布webservice

    配置文件spring-wsServer.xml <?xml version="1.0" encoding="UTF-8"?> <beans x ...

  4. Spring整合CXF之发布WebService服务

    今天我们来讲下如何用Spring来整合CXF,来发布WebService服务: 给下官方文档地址:http://cxf.apache.org/docs/writing-a-service-with-s ...

  5. JAVAEE——BOS物流项目07:WebService入门、apache CXF入门、基于CXF发布CRM服务

    1 学习计划 1.WebService入门 n 什么是WebService n 调用网络上的WebService服务 n SOAP和WSDL概念 n 基于JDK1.7发布一个简单的WebService ...

  6. 使用CXF发布的WebService报错:org.apache.cxf.interceptor.Fault: The given SOAPAction does not match an operation

    场景:JAVA语言使用CXF搭建WebService发布报错 错误信息:org.apache.cxf.interceptor.Fault: The given SOAPAction does not ...

  7. Apache CXF实现WebService发布和调用

    第一种方法:不用导入cxf jars 服务端: 1. 新建Web工程 2.新建接口和实现类.测试类 目录结构图如下: 接口代码: package com.cxf.spring.service; imp ...

  8. 使用CXF发布WebService

    这里普及一下WebService和cxf的知识.关于webservice和cxf:   WebService.各种提供服务的组件     .企业总线.通讯总线(ESB)CXF:是一个SOA框架,Axi ...

  9. Apache CXF实现WebService入门教程(附完整源码)

    Apache CXF实现WebService非常简单实用,只需要几步就可以实现一个简单的web service. 首先我们需要新建一个maven项目,在pom中添加依赖和jetty作为测试的web s ...

随机推荐

  1. 关于Node.js的__dirname,__filename,process.cwd(),./文件路径的一些坑

    探索 计算机不会欺骗人,一切按照规则执行,说找不到这个文件,那肯定就是真的找不到,至于为什么找不到,那就是因为我们理解有偏差,我最初理解的'./'是当前执行js文件所在的文件夹的绝对路径,然后Node ...

  2. Windows 10 操作系统删除Administrator登录选项

    在win10操作系统锁屏界面登录选项中突然出现了两个用户选项,一个是自己微软账户登录的用户,另一个是Administrator登录选项,每次看到好别扭,怎么去掉呢? 一.以管理员身份运行命令提示符(c ...

  3. mysql desc esc 基本命令总结

    asc 按升序排列desc 按降序排列 下列语句部分是Mssql语句,不可以在access中使用. SQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操 ...

  4. 抓jsoup_01_方案代码

    1.方案选择: 1.1.HttpClient库 获取 原始的 json数据 1.2.JSON库 取得 我们需要的HTML内容 1.3.使用 jsoup 解析 我们取得的HTML内容 2.不直接使用 j ...

  5. Java_WebKit

    1. http://tieba.baidu.com/p/2807579276 下载地址: http://qtjambi.org/downloads https://qt.gitorious.org/q ...

  6. DP问题如何确定状态

    DP问题如何确定状态 一.dp实质 动态规划的实质就是通过小规模的同类型的问题来解决题目的问题. 所以有一个dp数组来储存所有小规模问题的解. 所以确定状态也就是缩小问题规模. 我们求解问题的一般规律 ...

  7. 51nod 1009 数位dp入门

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1009 1009 数字1的数量 基准时间限制:1 秒 空间限制:13107 ...

  8. TCP和Http的区别!(转) 真心有帮助!!!

    一.From:http://thisliy.javaeye.com/blog/710122 http://wenku.baidu.com/view/14a30d0102020740be1e9b84.h ...

  9. 【scala】数组和列表

    一.数组Array 1.创建数组 隐式:val greetStrings = new Array[String](3); 显式:val greetStrings : Array[String] = n ...

  10. 【poj2155】Matrix(二维树状数组区间更新+单点查询)

    Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the ...