江湖失传已久的功夫,确定不来看一下吗?spring boot整合webservice,实现webservice客户端

自话自说

挤地铁、上班、吃饭、打球。基本上现在的生活每天都是这样,少了些激情,多了些安稳。
生活可以平平淡淡,但是不可以乱七八糟。

Spring Boot整合webservice实现客户端远程调用

其实我自己也没有接触过webservice开发,可能是技术太早了吧。但是项目里面避免不了远程调用,而对于那些有些年头的系统来说,他们就是开发的webservice服务。所以还是避免不了去学习一下这门技术。

根据wsdl生成客户端代码

生成方式有好多种,本文就介绍用jdk生成的方法,其他的请各位看官自行百度即可。

wsimport -keep -d D:\webserviceClient\d -s D:\webserviceClient\s -p com.map -verbose http://你的wsdl地址

参数说明:

  • -keep:是否生成java源文件
  • -d:指定.class文件的输出目录
  • -s:指定.java文件的输出目录
  • -p:定义生成类的包名,不定义的话有默认包名
  • -verbose:在控制台显示输出信息
  • -b:指定jaxws/jaxb绑定文件或额外的schemas
  • -extension:使用扩展来支持SOAP1.2

执行以上代码会将用到的客户端代码生成出来,每个wsdl生成的都是不一样的。

引入jar包

maven引入如下:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

Spring Boot配置客户端

配置如下:

@Configuration
public class WSClient {

    @Bean
    public Jaxb2Marshaller marshaller() {
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setContextPath("com.cebpubservice.receiveservice");
        return marshaller;
    }

    @Bean
    public ReceiveClient countryClient(Jaxb2Marshaller marshaller) {
        ReceiveClient client = new ReceiveClient();
        client.setDefaultUri("http://ip:port/xxxxxService");
        client.setMarshaller(marshaller);
        client.setUnmarshaller(marshaller);
        return client;
    }
}

客户端代码如下:

public class ReceiveClient extends WebServiceGatewaySupport {


    public ReceiveResponse getResponse() throws DatatypeConfigurationException {
        Receive receive = new Receive(); // 这个就是请求参数
        ReceiveResponse response = (ReceiveResponse) getWebServiceTemplate()
                .marshalSendAndReceive(receive, (message) -> {
                    // 设置请求头
                    Token token = new Token();
                    ObjectFactory factory = new ObjectFactory();
                    SoapHeaderElement tokenElement = ((SoapMessage)message).getSoapHeader().addHeaderElement(factory.createToken(token).getName());                   				  tokenElement.setText("234234234234");
                    message.writeTo(System.out);
                });
        return response;
    }
}

测试例子如下:

@RestController
@RequestMapping("/test")
public class TestController {

    @Autowired
    ReceiveClient receiveClient;

    @GetMapping("/receive")
    public void receice() throws DatatypeConfigurationException {
        receiveClient.getResponse();
    }
}

以上就是整个对接webservice的流程,希望对大伙有帮助!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值