CXF框架完成webService服务的发布

  1. CXF介绍 :属于soa的框架
    • cxf 是 Celtrix (ESB框架)和 XFire(webserivice) 合并而成,并且捐给了apache
    • CxF的核心是org.apache.cxf.Bus(总线),类似于Spring的 ApplicationContext
    • CXF默认是依赖于Spring的
    • Apache CXF 发行包中的jar,如果全部放到lib中,需要 JDK1.6 及以上,否则会报JAX-WS版本不一致的问题
    • CXF 内置了Jetty服务器 ,它是servlet容器,好比tomcat
      2.CXF特点
    1. 与Spring、Servlet做了无缝对接,cxf框架里面集成了Servlet容器Jetty
    2. 支持注解的方式来发布webservice
    3. 能够显示一个webservice的服务列表
    4. 能够添加拦截器:输入拦截器、输出拦截器 :
      输入日志信息拦截器、输出日志拦截器、用户权限认证的拦截器
      【以下是实现步骤】
      【1:创建服务接口】
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

@WebService(serviceName="languageManager")
public interface LanguageService {
    public @WebResult(partName="language")String getLanguage(@WebParam(name = "position")int position);
}

【2 :接口实现】

import org.apache.cxf.frontend.ServerFactoryBean;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

public class LanguageServiceImpl implements LanguageService {

    String language = null;
    
    public String getLanguage(int position) {
        switch(position){
            case 1:language="java";break;
            case 2:language="C";break;
            case 3:language="PHP";break;
            case 4:language="C#";break;
            case 5:language="an";break;
            default:break;
        }
        return language;
    }
    
    /**
     * 使用ServerFactoryBean方式
     * 使用JaxWsServerFactoryBean方式(推荐使用)
     * 两种方式的对比:
     * 1 : ServerFactoryBean
     *      - 不设置注解也可以发布webservice服务,不支持注解
     *      - 不支持拦截器的添加
     * 2 : JaxWsServerFactoryBean
     *      - 支持注释
     *      - 可以添加拦截器
     * 3 : webservice访问步骤:
     *      1.检测本地代理描述的wsdl是否与服务端的wsdl一直,俗称握手
     * @param args
     */
    public static void main(String[] args) {
        LanguageService service =  new LanguageServiceImpl();
        
        //ServerFactoryBean bean = new ServerFactoryBean();
        JaxWsServerFactoryBean bean = new JaxWsServerFactoryBean();     
        
        bean.setAddress("http://192.168.1.120:9999/ws/cxf/languageService");
        bean.setServiceClass(LanguageService.class);
        bean.setServiceBean(service);
        
        //添加输入拦截器:输入显示日志信息的拦截器
        bean.getInFaultInterceptors().add(new LoggingInInterceptor());
        //添加输出拦截器:输出显示日志信息的拦截器
        bean.getOutFaultInterceptors().add(new LoggingOutInterceptor());//拦截器可以不加
        
        bean.create();
        System.out.println("WSDL地址: "+bean.getAddress()+"?WSDL");
    }
}

【3 :发布服务】
运行实现类所写的main方法,并复制链接查看服务

2016-09-02_162935.png

查看服务:

2016-09-02_163129.png

【4 :利用wsimport生成class文件,并将其打jar包】
命令: wsimport 服务地址

2016-09-02_163346.png

打jar命令:jar cvf langueService.jar ./cn

2016-09-02_163836.png

【5 : 导入生成的jar,写测试demo】

2016-09-02_164236.png

注意:这里在调用测试服务的时候,要将服务打开测试
(服务部打开会造成不能访问)

2016-09-02_164435.png

这里发布服务的方式有两种
1:ServerFactoryBean方式
2:JaxWsServerFactoryBean方式(推荐使用)

    /**
 * 使用ServerFactoryBean方式
 * 使用JaxWsServerFactoryBean方式(推荐使用)
 * 两种方式的对比:
 * 1 : ServerFactoryBean
 *      - 不设置注解也可以发布webservice服务,不支持注解
 *      - 不支持拦截器的添加
 * 2 : JaxWsServerFactoryBean
 *      - 支持注释
 *      - 可以添加拦截器
 * 3 : webservice访问步骤:
 *      1.检测本地代理描述的wsdl是否与服务端的wsdl一直,俗称握手
 * @param args
 */
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容

  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,748评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,599评论 18 139
  • WebService学习笔记 友情提示,本文档的图床使用极简图床进行图片存储,默认存储到七牛云空间 本学习贴是根据...
    Mr_魏阅读 1,082评论 0 5
  • spring官方文档:http://docs.spring.io/spring/docs/current/spri...
    牛马风情阅读 1,648评论 0 3
  • 作者:董国宾 那年我10岁,年幼的我无知轻狂,凡事不知轻重,但嘴却厉害,话一出口,准让人大惊。无论在学校,还是村口...
    北方农村阅读 5,248评论 0 0