Webservice异步系统

Webservice 基础概念

1.类似天气预报数据 , 就是气象局对外提供的公共服务 .

2.Webservice 就是 异步系统的数据交互 , 数据调用 是跨语言的 , 跨平台的, 如 : java / c# / c++ / php / 手机终端/ 等 , 原因就是它们之间实际使用 xml 的数据格式进行交互 . json 也可以

3.Webservice : 2端的一个概念 : 服务提供端(生产者) 和 调用服务者(消费者) . 如 : 银行, 也不是想象的那么庞大 , 就一个核心系统(钱的存取), 然后又很多的外围系统 (网银系统 / atm系统等) , 外围系统最终都要与核心进行交互 , 这时就用到了 webservice .

4.WebService是 SOA (面向服务架构 ) 实现方案

(将软件业务做成服务, 在进行服务 定制整合 )

5.企业内部经常用 web service 进行分布式系统 整合 (crm客户管理 与 业务 bos 与 财务系统的调用)

6.Webservice 基于 http协议 , http底层基于 socket 协议

7.webservice的基础就是socket式的服务端 和 客户端的数据交换 , 输入流 和 输出流,最底层的处理 , 后面的具体使用 , 都做了封装处理

8.如果涉及到 2 端的交互 , 就会有相关的协议规范 .

9. 概念

l  soa : 面向服务框架

l  xml : extensible markup language 扩展标记语言

u  namespace-命名空间。(域名/项目名称/服务名)

u  xmlns=“http://itcast.cn” 使用默认命名空间。

u  xmlns:itcast=“http://itcast.cn”使用指定名称的命名空间

l  wsdl : webservice descriptionlanguage

非常重要 , 就是调用者 , 要看的 , 买东西 , 去使用看说明书

l  soap : simple object access protocol  文本协议

基于 xml 语言的协议,其实是做了严格的规范 , 不能自定义 ; http基础上 + xml 数据 ,特有的http协议 , 同样有请求响应;

特殊于 http 的地方 :

contentType : text/xml ; charset=utf-8

格式 : 有严格的规范

Envelope (包层)– 必须的部分。以XML的根元素出现。

Headers – 可选的。

Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。

 

 

基础 socket实例

Socket 代码  , webservice 就是基于此实现 , 不过已经做了封装 , webservice的应用写不到这类底层的代码了

服务端 socket

public class MyServer {

 

      public static void main(String[] args) throws Exception {

           ServerSocket ss = new ServerSocket(7788);

           //死循环

           while(true){

               //阻塞

                 Socket s = ss.accept();

                 InputStream inputStream = s.getInputStream();

                

                 BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));

                 String readLine = br.readLine();

                 System.out.println("客户端说:"+ readLine);

                 br.close();

                 s.close();

           }

      }

}

客户端 socket

public class MyClient {

      public static void main(String[] args) throws UnknownHostException, IOException {

           Socket s = new Socket("192.168.1.100",7788);

          

           OutputStream outputStream = s.getOutputStream();

           BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(outputStream));

           bw.write("你好,吃了吗?");

           bw.close();

           s.close();

      }

}

用完流一定要关闭 , 输出流关闭会默认执行flush()刷出

 

网络服务 – wsdl文档应用案例

网站 : www.webxml.com.cn webservice 相关很多的免费服务 诸如 : 航班 / 天气预报 / 手机号归属地 / 电子邮件地址验证 / ip地址来源等

网站 : www.ele.me 饿了么外餐派送网站 , 就有通过 ip 查询你的地址

 

Jdk内置命令 : java / javac / doc

还有 : wsimport 对wsdl 介绍文档 , 解析生成 java 代码(java文件 和 .class 字节码文件) ; 生成命令 : wsimport –s [指定生成jave文件存放目录] –p [包名] url(wsdl文档完整url 地址名,  : http://www.itcast.server.cn/sayHello?wsdl)

 

网络服务 – www.webxml.com.cn 免费服务

直接url地址解析生成 , 就ok

 

Wsimport –s . –pcn.itcast.server.teleSearch http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

解析后 报错(网络服务经常会用的事) ,  是有 未定义的元素 , ‘s :schema’ 15行 / 61行

/ 101行 , 解决办法 , 把此网页 保存下载 , 自定义名称 为 : teleSearch.xml

(可选,可保存默认提供名称) , 删除上面保存几行的代码 ,  执行 :

 

l   Wsimport –s . –p cn.itcast.server.teleSearchteleSearch.xml (注意在当下目录下进行)

l   解析生成 java 文件 , 删除 .class 文件(用作 tomcat 运行用) , 我们这里做测试 , 只需把 java 文件拷到工程包下 ,进行实现 . 如下 java 文件

l   实现完成 , 是否可以删除 teleSearch.xml 文件 ?

不行 , 服务已经依赖这个文件

解决修改 WeatherWs.java 类中 [@WebServiceClient 的属性wsdlLocation = ‘值设为网络url 地址’]

调用服务

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值