网站建设创业经历,嘉瑞建设集团有限公司网站,黄山建设网站公司,seo有哪些作用因为做的项目中用到了webservice,所以在此总结一下。 一、webservice简介 Web Service也叫XML Web Service, WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求#xff0c;轻量级的独立的通讯技术。是通过SOAP在Web上提供的软件服务#xff0c;使… 因为做的项目中用到了webservice,所以在此总结一下。 一、webservice简介 Web Service也叫XML Web Service, WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求轻量级的独立的通讯技术。是通过SOAP在Web上提供的软件服务使用WSDL文件进行说明并通过UDDI进行注册。WebService是一种跨编程语言和跨操作系统平台的远程调用技术。 还可以从多个角度来理解WebService从表面看WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端而把提供这个WebService的应用程序叫做服务端。从深层次看WebService是建立可互操作的分布式应用程序的新平台是一个平台是一套标准。它定义了应用程序如何在Web上实现互操作性你可以用任何你喜欢的语言在任何你喜欢的平台上写Web service 只要我们可以通过Web service标准对这些服务进行查询和访问。 二、webservice三要素 SOAP、WSDL、UDDIUniversalDescriptionDiscovery andIntegration三者构成了WebService的三要素。下面详细阐述这三大技术
SOAP
WebService通过HTTP协议发送请求和接收结果时发送的请求内容和结果内容都采用XML格式封装并增加了一些特定的HTTP消息头以说明HTTP消息的内容格式这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC(远程调用技术)方法来调用Web Service。
SOAP协议组成
SOAP协议 HTTP协议 XML数据格式
SOAP协议定义了SOAP消息的格式SOAP协议是基于HTTP协议的SOAP也是基于XML的XML是SOAP的数据编码方式。 WSDL
好比我们去商店买东西首先要知道商店里有什么东西可买然后再来购买商家的做法就是张贴广告海报。 WebService也一样WebService客户端要调用一个WebService服务首先要有知道这个服务的地址在哪以及这个服务里有什么方法可以调用所以WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用服务是什么服务中有哪些方法方法接受的参数是什么返回值是什么服务的网络地址用哪个url地址表示服务通过什么方式来调用。
WSDL(Web Services Description Language)就是这样一个基于XML的语言用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都能理解的标准格式。因为是基于XML的所以WSDL既是机器可阅读的又是人可阅读的这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档又能导入WSDL文档生成调用相应WebService的代理类代码。 UDDI
uddi是一个跨产业跨平台的开放性架构可以帮助 Web 服务提供商在互联网上发布 Web 服务的信息。UDDI 是一种目录服务企业可以通过 UDDI 来注册和搜索 Web 服务。简单来说UDDI 就是一个目录只不过在这个目录中存放的是一些关于 Web 服务的信息而已。 也就是说 soap就是在与webservice通信时规定好的协议 wsdl就是webservice中的食谱你可以找到webservice中有哪些材料方法怎去做这道菜入参、方法、返回值等 uddiwsdl是食谱的话uddi就是菜单可以用来注册和搜索web服务。 三、为什么要使用WebService
跨平台调用跨语言调用远程调用 四、springboot简单调用案例
1、引入依赖
!-- CXF webservice --
dependencygroupIdorg.apache.cxf/groupIdartifactIdcxf-spring-boot-starter-jaxws/artifactIdversion3.4.5/version
/dependency
2、创建实体类
Data
Builder
public class UserDto {private Long id;private String name;private Integer age;private String address;
}
3、创建WebService接口
public interface IUserServer {UserDto getUser(Long str)
}
4、创建WebService接口的实现类
Service
WebService
public class UserServerImpl implements IUserServer {Overridepublic UserDto getUser(Long id) {return UserDto.builder().id(id).address(上海市浦东新区).age(25).name(laJi).build();}
} 这里用到了注解WebService我这就只在实现类上使用了。这里介绍一下先来看下它的定义
Retention(RetentionPolicy.RUNTIME)
Target({ElementType.TYPE})
public interface WebService {String name() default ;String targetNamespace() default ;String serviceName() default ;String portName() default ;String wsdlLocation() default ;String endpointInterface() default ;
} name: 对应wsdl:portType标签默认值为Java类或接口的名称 targetNamespace: 命名空间一般写为接口的包名倒序默认值也是接口的包名倒序。对应wsd:definitions:targetNamespace 标签 serviceName: WebService的服务名称对应wsdl:service默认值为WebService接口实现类的名称“Service”示例UserServiceImplServicce portName: 对应wsdl:port标签默认值为:WebService接口实现类的名称“Port”示例UserServiceImplPort wsdlLocation: 指定用于定义WebService的WSDL文档的地址 endpoointInterfacce: WebService接口全路径 5、创建WebService配置类
Configuration
RequiredArgsConstructor
public class CxfConfig {private final IUserServer userServer;/*** 注入Servlet注意beanName不能为dispatcherServlet* author Fang Ruichuan* date 2022/11/14 19:16*/Beanpublic ServletRegistrationBean cxfServlet() {return new ServletRegistrationBean(new CXFServlet(), /webservice/*);}Bean(name Bus.DEFAULT_BUS_ID)public SpringBus springBus() {return new SpringBus();}Beanpublic Endpoint endpoint() {EndpointImpl endpoint new EndpointImpl(springBus(), userServer);endpoint.publish(/api);return endpoint;}
}
进行访问http://localhost:8080/webservice 然后点击url
客户端
public class WebserviceClient {public static void main(String[] args) {JaxWsDynamicClientFactory dcf JaxWsDynamicClientFactory.newInstance();Client client dcf.createClient(http://localhost:8080/webservice/api?wsdl);final ObjectMapper mapper new ObjectMapper();try {Object[] objects client.invoke(getUser, 99L);System.out.println(mapper.writeValueAsString(objects[0]));} catch (Exception e) {e.printStackTrace();;}}
}
显示
{address:上海市浦东新区,age:25,id:99,name:laJi} 五、简单总结 webservice的服务端是以远程接口为主的在java实现的webService主要是依靠的是CXF开发框架而这个CXF框架可以直接将接口发布成webservice同时还要考虑到整个项目之中的安全性问题。