WebService的初级学习
复习准备
1. Schema约束:
1.1 namespace相当于Schema文件的id;
1.2 targetNamespace属性用来指定schema文件的namespace的值;
1.3 xmlns属性引入一个约束, 它的值是一个schema文件的namespace值;
1.4 schemaLocation属性用来指定引入的schema文件的位置;
schema规范中:
1. 所有标签和属性都需要有schema文件来定义;
2. 所有的schema文件都需要有一个id, 但在这里它叫namespace;
3. namespace的值由什么来指定? 由targetNamespace属性来指定, 它的值是一个url(很有可能不存在)
4. 如何引入一个Schema约束? (例如:xmlns:mvc="http://www.springframework.org/schema/mvc)
属性? : 用xmlns属性
属性值: 对应的schema文件的id(namespace值)
5. 如果引入的schema不是w3c组织定义, 必须指定schema文件的位置
6. schema文件的位置由什么属性来指定?
属性? : schemaLocation
属性值: namespace path
7. 如果引入了N个约束, 需要给n-1个取别名
2. HTTP协议相关知识
2.1 请求的组成:
请求行(请求方式 path
http1.1)
请求头
请求体:
只有post请求有
2.2 响应的组成
响应状态行:
响应头
响应体
: 浏览器解析显示的数据
2.3 请求的过程
浏览器客户端 _http1.1建立连接_> 服务器 -----> 页面文档(文字图片等)
关于WebService的几个问题及常用术语
1. Webservice是什么?
基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据)
一个跨语言、跨平台的规范(抽象)
多个跨平台、跨语言的应用间通信整合的方案(实际)
2. 为什么用使用webService
web service能解决:
跨平台调用
跨语言调用
远程调用
3. webservice相当于HTTP+?+?
Http+xml+schema
4. wsdl是什么?(webService definition language)
webservice定义语言, 对应.wsdl文档, 一个webservice会对应一个唯一的wsdl文档, 定义了客户端与服务端发送请求和响应的数据格式和过程
5. 如何发布一个webservice? (SEI: service endPoint interface 服务终端接口)
定义SEI @webservice @webMethod
定义SEI的实现
发布: Endpoint.publish(url, SEIImplObject)
6.如何请求一个webservice?
根据wsdl文档生成客户端代码 jdk/cxf
根据生成的代码调用webService
WebService发布请求实例
1. service代码(使用JDK开发):
/*定义SEI
*/
package com.webservice.service; import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.WebEndpoint; @WebService//使用webservice接口
public interface HelloWS {
@WebMethod//接口中暴露的方法
public String sayHello(String name);
}
/*SEI的实现
*/
package com.webservice.service; import javax.jws.WebService; @WebService
public class HelloWSImp implements HelloWS { @Override
public String sayHello(String name) {
System.out.println("server: "+"hello "+ name);
return "Client : "+"hello " +name;
} }
/*终端的发布
*/
package com.webservice.test; import javax.xml.ws.Endpoint; import com.webservice.service.HelloWSImp; public class ServerTest {
public static void main(String[] args) {
//终端发布的url,可以自定义但不要和已知的重复
String address = "http://localhost:5766/webservice-test_service/HelloWS";
//发布终端
Endpoint.publish(address, new HelloWSImp());
System.out.println("webservice发布成功!");
}
}
2.Client代码:
在cmd命令行进入client文件包的src文件下,使用jdk自带的wsimport.exe工具生成client代码,输入
wsimport -keep url?wsdl (...?wsdl 可查看其wsdl文件) 完成后会制动生成相应的client代码
(若使用cxf框架开发,加入cxf的jar包即可,service不需要其他改动; Client边在自动生成代码时使用的是cxf的工具
wsdl2java url?wsdl )
自动生成Client代码后直接开始测试
package com.webservice.test; import com.webservice.service.HelloWSImp;
import com.webservice.service.HelloWSImpService; public class ClientTest {
public static void main(String[] args) {
//起点,在其wsdl文件的<wsdl:service>中可以看出这个类似 工厂 的类
HelloWSImpService factory = new HelloWSImpService();
//client对应的SEI实现类
HelloWSImp helloWSImpPort = factory.getHelloWSImpPort();
String sayHello = helloWSImpPort.sayHello("xffgem");
System.out.println(sayHello);
}
}
WebService的初级学习的更多相关文章
- webpack 4.x 初级学习记录
首先声明下,本人不擅长文字表达,文采不行,所以文章中文字较少,请看代码,初级学习,不足之处请多多指教 GitHub链接 看云kancloud [TOC] webpack 4.x 安装 首先需要在全局中 ...
- 学习 WebService 第四步:利用WSDL(URL)生成WebService客户端<初级>
我用的是最简单的方法,利用jdk的命令wsimport -keep -p 包路径 -d 代码存放位置 WSDL网址 蓝色是命令,粉色是存放位置,橘色是URL C:\Program Files\IBM\ ...
- Android 基于ksoap2的webservice请求的学习
[学习阶段] WebService网络请求? 其实我也是第一次遇到,之所以有这个需要是因为一些与 ERP 相关的业务,需要用到这样的一个请求方式. 开始学习WebService ①当然是百度搜索,这里 ...
- Maven初级学习(二)Maven使用入门
序,学习配置pom.xml,利用maven生成eclipes项目. 一.编写POM POM Project Obejct Model,项目对象模型. 编写pom.xml,新建文件夹hello-worl ...
- Maven初级学习(一)手把手教你Maven安装
序:学习安装Maven,在Windows和Unix系统上. 一.Windows系统安装MVN 前提正确安装JDK1.5以上的版本 1 下载最先版Mvn http://maven.opache.org/ ...
- 2015年11月26日 Java基础系列(三)ThreadLocal类初级学习
序,ThreadLocal类是为了解决多线程的安全问题.线程安全的意思也就是说每个线程操作自己的变量,不要对其他线程的值造成影响. 在很多情况下,ThreadLocal比直接使用synchronize ...
- Oracle数据库初级学习
第一天 SQL查询语句 CMD——SQLPLUS----账号 soctt 密码 tiger,输入完成后进入SQL数据库,如图显示即连接成功. 连接成功后 ,我们首先设置一下基本界面, --设置 每列显 ...
- Oracle的登陆问题和初级学习增删改查(省略安装和卸载)
1:学习Oracle首先需要安装Oracle,网上已经有很多很多教程了,这里不做叙述,自己百度即可,这里安装的标准版,个人根据需求安装学习或者企业开发即可.如果安装出错,自己百度Oracle的卸载即可 ...
- TensorFlow MNIST初级学习
MNIST MNIST 是一个入门级计算机视觉数据集,包含了很多手写数字图片,如图所示: 数据集中包含了图片和对应的标注,在 TensorFlow 中提供了这个数据集,我们可以用如下方法进行导入: f ...
随机推荐
- Android开发牛刀小试之“AA算钱软件”开发(一)
事实上想去做android开发已经有非常长一段时间了,可是因为还在上课,加上老板那边的项目接连不断.也一直都没有机会抽出身来做.可是,楼主当然也不会闲着,首先我了解到android开发须要java学习 ...
- alarm 和 sleep
http://blog.sina.com.cn/s/blog_6a1837e90100uhl3.html alarm也称为闹钟函数,alarm()用来设置信号SIGALRM在经过参数seconds指定 ...
- 【Linux】more命令
用途 more主要用于一页一页查看档案 全称 全称即为more 说明 空格键 :代表向下翻一页,也可以使用CTRL+F Enter :代表下翻一行 :f :立刻显示出文件名以及目前显示的行数 ...
- eclipse如何优化构建的速度
eclipse如何优化构建的速度(Building) - AlanLee(Java) - 博客园 http://www.cnblogs.com/AlanLee/p/5383166.html
- Linux-正则表达式的POSIX规范及流派
Linux/Unix工具与正则表达式的POSIX规范 对正则表达式有基本了解的读者,一定不会陌生『\d』.『[a-z]+』之类的表达式,前者匹配一个数字字符,后者匹配一个以上的小写英文字母.但是如果你 ...
- fatal error LNK1123: 转换到 COFF 期间失败:文件无效或损坏
问题出现背景: 原本电脑里是装着VS2015的,其使用的是.NET 4.5,当再安装VS2010之后,不能与当前的.NET平台兼容.卸载VS2015时,不会恢复.NET 4.0. l 当VS2015安 ...
- Android 系统 root 破解原理分析 (续)
上文<Android系统root破解原理分析>介绍了Android系统root破解之后,应用程序获得root权限的原理.有一些网友提出对于root破解过程比较感兴趣,也提出了疑问.本文将会 ...
- DHCP(动态主机配置协议)工作流程
一.DHCP的作用 我们先来看一下什么是DHCP,DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)它可以为客户机自动分配IP地址.子网掩码以及缺省网 ...
- Redis(十五):哨兵Sentinel
Redis哨兵 Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你 ...
- Mybatis(一):MyBatis配置文件config.xml详解
MyBatis 配置文件基本结构 在使用mybatis框架时,首先导入其对应的jar包,并进行相应的配置,所以得对配置文件的每个参数都得了解.一个完全的mybatis配置文件结构如下: <?xm ...