史上最全springboot整合webservice例⼦,没有之⼀。
什么是 Web Services 呢?
`
Web Services实际上是⼀种平台,提供了⼀套标准的类型系统,⽤于沟通不同平台、编程语⾔和组件模型中的不同类`型系统。Web Services 拥有三种基本的元素:
它们是:SOAP、WSDL 以及 UDDI。
什么是 SOAP?()
基本的 Web services 平台是 XML + HTTP。
SOAP 指简易对象访问协议
SOAP 是⼀种通信协议
SOAP ⽤于应⽤程序之间的通信
SOAP 是⼀种⽤于发送消息的格式
SOAP 被设计⽤来通过因特⽹进⾏通信
SOAP 独⽴于平台
SOAP 独⽴于语⾔
SOAP 基于 XML
SOAP 很简单并可扩展
SOAP 允许您绕过防⽕墙
SOAP 将作为 W3C 标准来发展
什么是 WSDL?()
WSDL 是基于 XML 的⽤于描述 Web Services 以及如何访问 Web Services 的语⾔。
WSDL 指⽹络服务描述语⾔
WSDL 使⽤ XML 编写
WSDL 是⼀种 XML ⽂档
WSDL ⽤于描述⽹络服务
WSDL也可⽤于定位⽹络服务
WSDL 还不是 W3C 标准
什么是UDDI?
UDDI 是⼀种⽬录服务,通过它,企业可注册并搜索 Web services。
UDDI 指通⽤的描述、发现以及整合(Universal Description, Discovery and Integration)。
UDDI 是⼀种⽤于存储有关 web services 的信息的⽬录。
UDDI 是⼀种由 WSDL 描述的⽹络服务接⼝⽬录。
UDDI 经由 SOAP 进⾏通迅。
UDDI 被构建于 Microsoft .NET 平台之中。
Web Services能⼲什么
⽬的:解决跨系统、跨平台、跨服务器之间的通信问题。
实例1:腾讯QQ界⾯每天展⽰天⽓的状态接⼝。毫⽆疑问。这是腾讯通过跨系统跨服务器⼜可能跨平台调取⽓象台数据的接⼝。
实例2: 京东物流 ,显⽰中通,圆通顺丰快递快递员的名字电话。实时监控商品信息。实际上也是调⽤第三⽅物流的接⼝。
那么如何创建及使⽤WebService?
1:搭建web services服务端,发布服务,实现接⼝ ;
在这⾥,我采⽤的是IDEA2018.03.04版本。
⾸先,搭建springboot项⽬。file -----》new-----》project
⼀直next,⾄此,springboot项⽬创建完毕。
2. 准备⼯作,加⼊整合所需依赖,l⽂件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /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.2.1.RELEASE</version>
<relativePath/><!-- lookup parent from repository -->
</parent>
<groupId&le</groupId>
<artifactId>web-cxf</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>web-cxf</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-web</artifactId>
</dependency>
<dependency>
<groupId>f</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>f</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
整合所需依赖关键:
<dependency>
<groupId>f</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>f</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.2.0</version>
</dependency>
3,接下来。写接⼝-》发布接⼝-》测试。
3.1
ample.webcxf.service;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public interface UserService {
String sayHello(@WebParam(name ="userId") String userId ,@WebParam(name ="userName") String userName);
}
这个接⼝,类似于普通接⼝,只是接⼝上⽅使⽤的是webservice注解。参数标记由:@param变为@WebParam注解。
3.2 实现类。
ample.webcxf.service.impl;
ample.webcxf.service.UserService;
import org.springframework.stereotype.Component;
import javax.jws.WebService;
@Component
@WebService(targetNamespace="ample/",endpointInterface ="ample.webcxf.service.UserService") public class UserServiceImpl implements UserService {
@Override
public String sayHello(String userId, String userName){
return"say hello || userId = "+ userId +"|| userName = "+ userName;
}
}
targetNamespace:⽬标命名控件,⼀般由接⼝所在包路径命名,不过是由⾥往外写:⽐如:我接⼝所在路径为:ample.webcxf.service.
写为:ample/
3.3. 创建webservice配置类,使其在项⽬启动的时候,就发布接⼝。
ample.fig;
ample.webcxf.service.UserService;
import f.Bus;
import f.bus.spring.SpringBus;
import f.jaxws.EndpointImpl;
import f.transport.servlet.CXFServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import t.annotation.Bean;
import t.annotation.Configuration;
webservice用户名密码调用l.ws.Endpoint;
@Configuration
public class StartClas {
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus(){
return new SpringBus();
}
@Bean(name ="wbsBean")
public ServletRegistrationBean dispatcherServlet(){
ServletRegistrationBean wbsServlet =new ServletRegistrationBean(new CXFServlet(),"/wbs/*");
return wbsServlet;
}
@Bean
public Endpoint endpointPurchase(SpringBus springBus, UserService userService){
EndpointImpl endpoint =new EndpointImpl(springBus, userService);
endpoint.publish("/user-server");
System.out.println("服务发布成功!地址为:localhost:8080/wbs/user-server");
return endpoint;
}
}
启动项⽬,浏览器地址栏⾥⾯输⼊:localhost:8080/wbs/user-server?wsdl 即可看到接⼝发布成功。
⾃此 。服务端创建完毕。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论