博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebService -- Java 实现之 CXF ( 添加系统预定义的拦截器)
阅读量:5323 次
发布时间:2019-06-14

本文共 3924 字,大约阅读时间需要 13 分钟。

1. 概述

CXF允许我们在webservice的in/out位置添加拦截器。拦截器有两大分类,一类是系统预定义的;另一类是自定义拦截器。

2. 在server端添加拦截器。

     JaxWsServerFactoryBean wsSvrFactoryBean = new JaxWsServerFactoryBean();        String address = "http://127.0.0.1/helloWorld";        wsSvrFactoryBean.setAddress(address);        wsSvrFactoryBean.setServiceClass(HelloWorld.class);        HelloWorld implementor = new HelloWorldImpl();        wsSvrFactoryBean.setServiceBean(implementor);        // add in out logging Interceptors        wsSvrFactoryBean.getInInterceptors().add(new LoggingInInterceptor());        wsSvrFactoryBean.getOutInterceptors().add(new LoggingOutInterceptor());        wsSvrFactoryBean.create();

3. 在client端添加拦截器。

3.1 在client项目中添加CXF引用

org.apache.cxf
cxf-core
3.1.5
org.apache.cxf
cxf-rt-frontend-jaxws
3.1.5
org.apache.cxf
cxf-rt-transports-http-jetty
3.1.5

3.2 使用ClientProxy对象添加拦截器

HelloWorld helloWorldClient = new HelloWorldService().getHelloWorldPort();// add on inteceptorsorg.apache.cxf.endpoint.Client client = ClientProxy.getClient(helloWorldClient);client.getInInterceptors().add(new LoggingInInterceptor());client.getOutInterceptors().add(new LoggingOutInterceptor());

4. client/server output information

--client--

十二月 30, 2016 11:25:45 下午 org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL信息: Creating Service {http://webservice.tuo.example.com/}HelloWorldService from WSDL: http://127.0.0.1/helloWorld?wsdl十二月 30, 2016 11:25:46 下午 org.apache.cxf.services.HelloWorldService.HelloWorldPort.HelloWorld信息: Outbound Message---------------------------ID: 1Address: http://127.0.0.1/helloWorldEncoding: UTF-8Http-Method: POSTContent-Type: text/xmlHeaders: {Accept=[*/*], SOAPAction=[""]}Payload: 
Tony
--------------------------------------十二月 30, 2016 11:25:47 下午 org.apache.cxf.services.HelloWorldService.HelloWorldPort.HelloWorld信息: Inbound Message----------------------------ID: 1Response-Code: 200Encoding: UTF-8Content-Type: text/xml; charset=UTF-8Headers: {content-type=[text/xml; charset=UTF-8], Date=[Fri, 30 Dec 2016 15:25:46 GMT], Server=[Jetty(9.2.11.v20150529)], transfer-encoding=[chunked]}Payload:
Hello world,Tony
--------------------------------------Hello world,Tony

--server--

信息: Inbound Message----------------------------ID: 1Address: http://127.0.0.1/helloWorld?wsdlHttp-Method: GETContent-Type: text/xmlHeaders: {Accept=[*/*], Cache-Control=[no-cache], connection=[keep-alive], content-type=[text/xml], Host=[127.0.0.1], Pragma=[no-cache], User-Agent=[Apache CXF 3.1.5]}--------------------------------------十二月 30, 2016 11:25:46 下午 org.apache.cxf.services.HelloWorldService.HelloWorldPort.HelloWorld信息: Inbound Message----------------------------ID: 2Address: http://127.0.0.1/helloWorldEncoding: UTF-8Http-Method: POSTContent-Type: text/xml; charset=UTF-8Headers: {Accept=[*/*], Cache-Control=[no-cache], connection=[keep-alive], Content-Length=[202], content-type=[text/xml; charset=UTF-8], Host=[127.0.0.1], Pragma=[no-cache], SOAPAction=[""], User-Agent=[Apache CXF 3.1.5]}Payload: 
Tony
--------------------------------------十二月 30, 2016 11:25:47 下午 org.apache.cxf.services.HelloWorldService.HelloWorldPort.HelloWorld信息: Outbound Message---------------------------ID: 2Response-Code: 200Encoding: UTF-8Content-Type: text/xmlHeaders: {}Payload:
Hello world,Tony
--------------------------------------

  

 

转载于:https://www.cnblogs.com/atuotuo/p/6238521.html

你可能感兴趣的文章
前端之CSS
查看>>
List注意点【修改】
查看>>
sqoop导入导出对mysql再带数据库test能跑通用户自己建立的数据库则不行
查看>>
拓扑排序的原理及其实现
查看>>
对StageWebView捕获位图时空白
查看>>
Provison Profile管理及存放路径
查看>>
shop--8.店铺列表展示--前端开发
查看>>
转:Can not issue data manipulation statements with executeQuery()错误解决
查看>>
详解C#委托,事件与回调函数(转)
查看>>
744. Find Smallest Letter Greater Than Target
查看>>
java实现二维码的生成.
查看>>
Android 发展思路
查看>>
Pythonic
查看>>
contentprovider的学习实例总结
查看>>
Sharepoint 自定义字段
查看>>
TQ2440之中断
查看>>
MySQL 触发器简单实例
查看>>
codeforces 712A. Memory and Crow
查看>>
Latex Undefined control sequence. ...\bm
查看>>
MySQL------报错Access denied for user 'root'@'localhost' (using password:NO)解决方法
查看>>