zoukankan      html  css  js  c++  java
  • WebService -- Java 实现之 CXF ( 添加系统预定义的拦截器)

    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引用

    <dependencies>
        <dependency>
    		<groupId>org.apache.cxf</groupId>
    		<artifactId>cxf-core</artifactId>
    		<version>3.1.5</version>
    	</dependency>
    
      	<dependency>
    		<groupId>org.apache.cxf</groupId>
    		<artifactId>cxf-rt-frontend-jaxws</artifactId>
    		<version>3.1.5</version>
    	</dependency>
    	
    	<dependency>
    		<groupId>org.apache.cxf</groupId>
    		<artifactId>cxf-rt-transports-http-jetty</artifactId>
    		<version>3.1.5</version>
    	</dependency>
      </dependencies>
    

    3.2 使用ClientProxy对象添加拦截器

    HelloWorld helloWorldClient = new HelloWorldService().getHelloWorldPort();
    // add on inteceptors
    org.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: 1
    Address: http://127.0.0.1/helloWorld
    Encoding: UTF-8
    Http-Method: POST
    Content-Type: text/xml
    Headers: {Accept=[*/*], SOAPAction=[""]}
    Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHello xmlns:ns2="http://webservice.tuo.example.com/"><arg0>Tony</arg0></ns2:sayHello></soap:Body></soap:Envelope>
    --------------------------------------
    十二月 30, 2016 11:25:47 下午 org.apache.cxf.services.HelloWorldService.HelloWorldPort.HelloWorld
    信息: Inbound Message
    ----------------------------
    ID: 1
    Response-Code: 200
    Encoding: UTF-8
    Content-Type: text/xml; charset=UTF-8
    Headers: {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: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHelloResponse xmlns:ns2="http://webservice.tuo.example.com/"><return>Hello world,Tony</return></ns2:sayHelloResponse></soap:Body></soap:Envelope>
    --------------------------------------
    Hello world,Tony
    

    --server--

    信息: Inbound Message
    ----------------------------
    ID: 1
    Address: http://127.0.0.1/helloWorld?wsdl
    Http-Method: GET
    Content-Type: text/xml
    Headers: {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: 2
    Address: http://127.0.0.1/helloWorld
    Encoding: UTF-8
    Http-Method: POST
    Content-Type: text/xml; charset=UTF-8
    Headers: {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: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHello xmlns:ns2="http://webservice.tuo.example.com/"><arg0>Tony</arg0></ns2:sayHello></soap:Body></soap:Envelope>
    --------------------------------------
    十二月 30, 2016 11:25:47 下午 org.apache.cxf.services.HelloWorldService.HelloWorldPort.HelloWorld
    信息: Outbound Message
    ---------------------------
    ID: 2
    Response-Code: 200
    Encoding: UTF-8
    Content-Type: text/xml
    Headers: {}
    Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHelloResponse xmlns:ns2="http://webservice.tuo.example.com/"><return>Hello world,Tony</return></ns2:sayHelloResponse></soap:Body></soap:Envelope>
    --------------------------------------
    

      

  • 相关阅读:
    [Mise] Refetch API data when a state value changes with the `$watch` property in Alpine JS
    Android之用自定义的shape去实现shadow效果
    http抓包以及网速限定
    ios成长之每日一遍(day 7)
    ios成长之每日一遍(day 6)
    ios成长之每日一遍(day 5)
    ios成长之每日一遍(day 4)
    ios成长之每日一遍(day 3)
    ios成长之每日一遍(day 2)
    ios成长之每日一遍(day 1)
  • 原文地址:https://www.cnblogs.com/atuotuo/p/6238521.html
Copyright © 2011-2022 走看看