一、webservice三要素:
WSDL(web服务描述语言)、SOAP(简单对象访问协议)、UDDI(目录服务)
二、实现原理:
webservice定义:
webservice一种使用http传输SOAP协议数据的远程调用技术
WSDL作用:
webservice服务端的使用说明书
SOAP作用:
约束XML标签
UDDI作用:
提供webservice服务端的搜索和注册功能
三、webservice常用开发框架CXF
服务端开发步骤:
1,创建接口,定义方法
2,创建实现类(在实现类上添加@webservice注解,该注解表示要将该实现类中的public方法发布成服务)
3,发布服务
发布的类是Endpoint
发布的方法是:publish
发布的参数:参数1-服务地址;参数2-实现类的实例
4,测试服务是否发布成功,通过阅读WSDL使用说明书,确定其中的类、方法、参数和返回值存在,说明服务发布成功
WSDL地址规则:服务地址+?wsdl
WSDL阅读规则:从下往上
(找到service标签,找到binding属性,通过binding属性,找到binding标签,找到type属性,通过type属性找到portType标签,其中就有实现类、方法、参数和返回值)
四、命令介绍
1,命令wsimport介绍
    命令wsimport是有jdk提供的根据WSDL(说明书)生成客户端代码的工具
    命令wsimport常用参数:
           -s:生成*.java文件
          -d:生成*.class文件,默认参数
          -p:指定生成代码的包名,如果不指定,默认值是wsdl中命名空间的倒序
五、CXF整合spring开发webservice应用
服务端
1、创建web项目,引入相关jar包
2、创建接口(将@Webservice注解加入到接口上)
3、创建实现类
4、配置web.xml文件
配置spring监听器
<!-- 监听器 -->
  <listener>
   <listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
  </listener>
配置spring容器位置
<!-- 配置读取文件地址 -->
  <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
配置CXF的Servlet,接收客户端发给服务端的请求
<!-- 配置CXF的servlet -->
  <servlet>
   <servlet-name>cxf</servlet-name>
   <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>cxf</servlet-name>
   <url-pattern>/ws/*</url-pattern>
  </servlet-mapping>
5、配置spring容器(applicationContext.xml)
<jaxws:server>发布服务
address:服务地址
serviceClass:服务接口
serviceBean:服务实现类
<!-- <jaxws:server>发布服务的标签
1,address:服务地址 ,服务名称
2,serviceClass:服务接口,要发布的服务接口的全路径
3,serviceBean:服务实现类实例,服务实现类对应的bean标签
 -->
 <jaxws:server address="/weather" 
  serviceClass="cn.itheima.ws.service.WeatherInterface">
  <jaxws:serviceBean>
  <ref bean="weatherInterface" ></ref>
  </jaxws:serviceBean>
 </jaxws:server>

<!-- 服务实现类的Bean -->
<bean id="weatherInterface"   class="cn.itheima.ws.service.WeatherInterFaceImpl" ></bean>
客户端
1、创建java项目,引入jar包
2、wsimport生成客户端代码
作用:帮助开发人员发请求、封装数据、接收响应、解析数据
3、配置spring容器(applicationContext.xml)
<jaxws:client> 获取接口的实例
id:获取接口的一个实例
address:服务地址,完整的服务地址,不是WSDL地址
serviceClass:服务接口
<!-- <jaxws:client>开发客户端
id:帮我们获取接口的一个实例
address:完整的服务地址,http://ip:端口号/项目名/servlet映射路径/服务名称
serviceClass:服务接口,生成代码中服务接口的类
 -->
 <jaxws:client id="weatherInterface" 
  address="http://localhost:8080/ws_cxf_server/ws/weather"
  serviceClass="cn.itcast.ws.cxf.service.WeatherInterface"/>
4、使用spring的工厂类加载spring容器
ClassPathXmlApplicationContext:从classpath下加载容classpath:applicationContext.xml
FileSystemXmlApplicationContext:从文件系统加载容器,E:/applicationContext.xml
       5、从容器中获取接口实例(getBean方法)
6、调用查询方法