spring boot 整合webservice客户端

小编是一个比较喜欢研究的人,这段时间有人问我spring boot 整合webservice客户端所以小编自己静下心来研究了一下,特此记录一下成功,并和各位分享一下。

项目结构:spring boot+maven+swagger2+webservice
项目结构:
在这里插入图片描述
pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>webservicecliet</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>webservicecliet</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-ws</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

        <!--swagger开始-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
        </dependency>

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.6</version>
        </dependency>
        <!--swagger结束-->

        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.jvnet.jaxb2.maven2</groupId>
                <artifactId>maven-jaxb2-plugin</artifactId>
                <version>0.12.3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <schemaLanguage>WSDL</schemaLanguage>
                    <generatePackage>com.dexcoder.ws</generatePackage>
                    <generateDirectory>${basedir}/src/main/java</generateDirectory>
                    <schemas>
                        <schema>
                            <fileset>
                                <!-- Defaults to schemaDirectory. -->
                                <directory>${basedir}/src/main/resources/schemas</directory>
                                <!-- Defaults to schemaIncludes. -->
                                <includes>
                                    <include>*.wsdl</include>
                                </includes>
                                <!-- Defaults to schemaIncludes -->
                                <!--<excludes>-->
                                <!--<exclude>*.xs</exclude>-->
                                <!--</excludes>-->
                            </fileset>
                            <!--<url>http://localhost:8080/ws/countries.wsdl</url>-->
                        </schema>
                    </schemas>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

WSConfig文件:

 package com.dexcoder.ws;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
/**
 * @version V1.0    
 * @Date 2019-03-26  21:54
 * @description
 ***/
@Configuration
public class WSConfig {
          @Bean
  public Jaxb2Marshaller marshaller() {
              Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
                marshaller.setContextPath("com.dexcoder.ws");
              return marshaller;
           }
        @Bean
   public WsClient wsClient(Jaxb2Marshaller marshaller) {
               WsClient client = new WsClient();
                client.setDefaultUri("http://localhost:8081/wsServeice?wsdl");
               client.setMarshaller(marshaller);
                client.setUnmarshaller(marshaller);
              return client;
           }
}

WsClient文件

package com.dexcoder.ws;
import org.springframework.ws.client.core.support.WebServiceGatewaySupport;
import javax.xml.bind.JAXBElement;

/**
 * @version V1.0
 * @Author *****
 * @Mail ********@boco.com.cn
 * @Date 2019-03-26  21:41
 * @description
 ***/
public class WsClient extends WebServiceGatewaySupport {

    public SayMyHelloResponse getCountry(String name) {
        SayMyHello request = new SayMyHello();  //服务端的方法
        request.setArg0("00");  //设置服务端的方法
        JAXBElement<SayMyHelloResponse> jxbElem = (JAXBElement<SayMyHelloResponse>) getWebServiceTemplate().marshalSendAndReceive("http://localhost:8081/wsServeice?wsdl", request);
        return jxbElem.getValue();
    }
}

swager-ui的配置

  package com.dexcoder.controller;
   import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    /**
     * @Configuration 表示配置类
     * @EnableSwagger2 是swagger2的配置
     */
        /**
     * @author:柳牧之
     * 创建日期:2018-08- 11  11:08
     * 项目名称:frame
     * 邮箱:979040676@qq.com
     */
    @EnableSwagger2
    @Configuration
    public class Swagger2 {
        /**swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等*/
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
    //                .apis(RequestHandlerSelectors.any())// 对所有api进行监控
    //                //扫描的包路径
    //               .apis(RequestHandlerSelectors.basePackage("com.dexcoder"))
                    .paths(PathSelectors.any())
                    .build();
        }    
        /**构建 api文档的详细信息函数,注意这里的注解引用的是哪个*/
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    //页面标题
                    .title("搭建微服务的开发框架")
                    //创建人
                    .contact(new Contact("****", "http://www.baidu.com", "9***P**@qq.com"))
                    //版本号
                    .version("1.0")
                    //描述
                    .description("个人框架项目")
                    .build();
        }
    }

项目启动类:

@SpringBootApplication(scanBasePackages = "com.dexcoder")
public class WebserviceclietApplication {
    public static void main(String[] args) {
        SpringApplication.run(WebserviceclietApplication.class, args);
    }
}

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值