springboot2.x集成webservice服务

什么是webservice

为了支持跨网络的机器间相互操作交互而设计。Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务

WebService三要素

SOAP (Simple Object Access Protocol):简易对象访问协议,soap用来描述传递信息的格式。
WSDL (WebServices Description Language):Web服务描述语言,用来描述WebService、以及如何访问WebService
UDDI (Universal Description Discovery and Integration):通用描述、发现及整合,用来管理、分发、

springboot中如何集成webservice

服务端

pom.xml
 <dependency>
 	 <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web-services</artifactId>
 </dependency>

 <dependency>
     <groupId>org.apache.cxf</groupId>
     <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
     <version>3.2.4</version>
 </dependency>

 <dependency>
     <groupId>org.hibernate</groupId>
     <artifactId>hibernate-validator</artifactId>
     <version>6.0.18.Final</version>
 </dependency>
接口类
@WebService
public interface WebServiceSay {
    @WebMethod
    public String say(@WebParam(name = "name") String name,@WebParam(name = "value")String value);
}
@WebService(serviceName = "WebServiceSay",//对外发布的服务名
        targetNamespace = "http://service.webservice.example.com/",//指定你想要的名称空间,通常使用使用包名反转
        endpointInterface = "com.example.webservice.service.WebServiceSay")
@Service
public class WebServiceSayImpl implements WebServiceSay {

    @Override
    public String say(String name, String value) {
        return name+" say: "+value;
    }
}
配置类
@Configuration
public class WebServiceConfig {
    @Autowired
    private WebServiceHello webServiceHello;

    @Autowired
    private WebServiceSay webServiceSay;

    /**
     * wsdl访问地址为:http://127.0.0.1:8080/webservice/XXX?wsdl
     * @return
     */
    @Bean(name = "cxfServlet")
    public ServletRegistrationBean cxfServlet() {
        return new ServletRegistrationBean(new CXFServlet(), "/webservice/*");
    }

    @Bean(name = Bus.DEFAULT_BUS_ID)
    public SpringBus springBus() {
        return new SpringBus();
    }

    //如果有其余的服务,继续加
    @Bean(name = "webServiceSayEndPoint")
    public Endpoint webServiceSayEndPoint() {
        EndpointImpl endpoint = new EndpointImpl(springBus(), webServiceSay);
        endpoint.publish("/webServiceSay");
        return endpoint;
    }
}
启动

在这里插入图片描述
访问 http://127.0.0.1:8080/webservice/WebServiceSay?wsdl
在这里插入图片描述

SoapUI测试webservice

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

客户端调用

// 创建动态客户端
 JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
 Client client = dcf.createClient("http://127.0.0.1:8080/webservice/webServiceSay?wsdl");
 try {
     // invoke("方法名",参数1,参数2,参数3....);
     Object[] res = client.invoke("say", "张三","this is val");
     String s = JSON.toJSONString(res[0]);
     System.out.println("返回数据:" + s);
 } catch (java.lang.Exception e) {
     e.printStackTrace();
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值