53. 现在来讲web service.通过其他的示例来讲。
在上海,有一台机器,有一个java虚拟机,那里面有一个对象,我现在就有我这里调他,这不两个java虚拟机吗?两个 java虚拟机他是两个进程的,他的地址空间自己是自己的,不能说你new 一下就调了,调不了,
54. 上午说了这个事,jndi这块代码,放到jsp里我new 一下,就能从jndi服务上查到,因为jsp和我们的jndi服务是在同一个进程里,所以我可以new ,,不在同一个进程里你不能new ,,那个就在那个进程里,就像在那个屋里一样,你能拿到吗?那层资源你拿得到吗?你还穿墙啊,
55. 你把jndi那块代码你放到一个main方法里,你也拿不到,main里面也是一个进程 ,他和tomcat的进程是不同的。main在java虚拟机里。
56. 你想我现在要和上海的进程要通信啊,我new 不了的话,你要把那个对象给我传过来,这个传过来,你不能随便传过来,你得序列化变成二进制,一传,传,传,传到我的jvm里, 我的Jvm认识了,把你这个对象一转换,
57. 还记得序列化吧,你存到文件里一样,存成二进制,然后一转 转成java对象。他那边传过来也是一样的。每次传输都要进行序列化,都要进行压包和解包的过程,所以他的效率是慢的。那这些过程谁做了,他们之前还得遵循一个协议 ,,你这么 传,我就这么 解,这就是一种协议。
58. 所以我调上海 那个东西,我要调他的方法,他要通过一个Stub(存根) 存根的概念,这是分布式通讯里面的,大同小异他们都是这样的,
59. 存根这个是什么,是一个非常典型的代理模式,他是远端对象在客户端的代理。代理嘛,跟目标对象接口一模一样的。所以我就直接就调Stub,,他就会在代理
里来封装访问细节,怎么把你这个压缩了,压包了,编码了,通过相应的协议 传 传 传,假设我们现在要讲的webservice他就通过 soap 如果你是ejb他会采用
rmi-iiop 如果你基于corba这种架构他是iiop
传到skeleton骨架,他会解析,就解成java对象了,所以java就看见了,然后,你把信息得到之后,他返回了,返回了他由这个骨架压缩编码,编码再通过相应的协议传过去。
60.
客户端 远程对象
Stub(存根) SKeleton(骨架)
61. 其实 分布式 程序就是存根 和骨架之间的通讯。分布式通讯都类似,差不多是这样的。
62. Stub这个代理也分静态的和动态的,静态的就是确确实实有,你看到了Stub这个代理类了,
63. 其实在以前这个ejb开发 的时候,很久以前了02年之前,02年 ejb2.x刚出来,在他1.x的时候,他有些服务器的支持还不行,你写一个ejb至少要写3个类,一编译后5,6个类出来了。后来就改了,开发jboss 的ejb容器的这个人,在java上,技术上是非常厉害的一个人,他引入了jdk的动态代理来完成jdk的存根的自动生成,所以ejb的开发就简单一些,就写大类就行了。存根在运行的 时候生成,
64. 他说现在他用两种语言来实现分布式通讯。
65. Web Services 这个东西,你有时候可能看到有很多人写 这个名词都不带s, 这个不标准,不带s指的是单独的服务,带s指的是整个技术架构。
66. 他说什么axis-bin是他的一个引擎。
67. 刚才就说了,咱们这种分布式的东西,就是说我这边一个Jvm你寻那边一个jvm,那这怎么传啊,假设现在上海 有一个服务器,有一个服务,我现在要用java来调他,而上海 那个不是用Java写的,上面 举的例子是上海那边是用java写的,
68. 像我们之前讲的javascript跟java打交道,这就是两种语言啊,你不能随便传,说把那个java对象给传过来,javascript他不认识的。所以我们要转换成文本传过来,后来我们转成了一个xml文件来传。这就是异构语言的一个交互。xml就是文本文件啊。
69. 假设在上海 有一个服务,假设那个服务就叫取得天气预报吧,我现在就写一 main方法,用java写去调他,那个服务不是用java写的,不知道他怎么写的,我也不知道,所以他就得把文本给我传过来,web services这套技术的话,他传的是xml文件,他这个协议叫soap 简单对象访问协议 就是http+xml 他通过http协议传xml文件,
70. 以前通过httplook看到,他访问 的时候,他是把那个html传过来 了,而这里是xml给传过来 了。
71. 其实通讯就是这样的,我去请求上海那边的天气预报,我这么 一请求过去,上海那边,他形成xml文件给我,传过来,我们这边就负责把xml文件,转换成java对象,然后我再调把java对象转换成xml文件,传,传,传,又传到上海去,Skeleton他负责把xml文件 转换成相应语言的对象,假设就c++.
72. 所以webservices能做什么事,异构语言通信,可以做异构系统整合,现在有一定的应用,就要用在异构系统的整合,你这个都是java开发 的,你用webservices干什么,都是java开发的,他的访问效率也快啊,他的传输是以二进制进行传输啊,你用webservices他传的是xml大文本。
73. 除非你的系统是多元开发,你可以考虑使用webservices,这种技术构架来解决,或者你这个系统做得通用一些,你可以开放一些webservices这种方法,因为未来别人可能调我,省得我还再做。
74. 就是说没有这种webservices技术,我们怎么通讯 啊,其实方式有很多,你 天气预报的那边我管你用什么语言写,你把数据库表开放,我用jdbc去操作你不就实现了,这不一样调吗?只是开放表结构不太好,安全性也不太好,因为有些数据不是通过单独一张表就能出来的,有些数据是通过一定的算法才出来的,这样也不标准,开放表结构。
75. 还有别的,不这样通讯 行不行啊,你可以把天气预报信息定时地上报到某一个服务器上去,假设一个Ftp Server 比如明天的天气预报你晚上12点之前,我这个java程序,第二天早上去取去,这不也行吗?这只是不及时罢了,这有多种,只不过以前这些做法也不规范。
76. 还有我可以发消息,我可以发一个消息给c#那边写的天气预报,你发个消息给他,你说我要天气预报,
他发消息给你,这样可以吧,所以进程间通信我们可以发消息。
77. 方式有很多种,另外还有,我们这个说的是webservices难道没有别的技术标准吗?有啊,假设现在两边都是java做的,是Java的话,就有多种方式了,
天气预报那边你可以用 Java EJB
我这边用java通过 rmi-iiop去。这也可以啊,
78. 假设现在那边又是c#了,注意了,这个ejb他不能使用其他语言来写,他只能用java来写,但是这个ejb呢?他可以使用corba来调用。
java和c#之间的通讯 我就可以用另一套技术架构corba来调用 了。
79. 所以corba和webservices都能解决异构的问题,现在用webservices稍多一些,因为他走http协议啊,他天生就能穿越80端口啊,他能穿越防火墙啊。但是他有问题,他慢,他基于http协议传大文本,而corba不是,他传二进制。
80. 所以在一些行业里,他也有大量使用corba的,这基本上属于一个国际的标准。
81. 我们先建一个java项目,通过java调用 一下。名字叫,我们给大家演示动态调用 和 静态调用。
82. 首先你要调用 的话,你得保证你的tomcat是开启的,这样的话,通过http能访问过去。
83. 拿到这个地址 的连接,
84. java这一块你得使用asix delphi你也得用asix,server这里你也得使用asix.
85. 注意了,你把代码拷过去,你导包别导错了,你得导asix的包啊,
86. 你看他的异常啊,还有一个RemoteException 远程异常。
87. 他说什么他那个httplook有一点问题,上次就出了几次问题,硬解都 不彻底。
88. 其他的语言通信和这个一样都使用这个这个通信,他这了一个Project.exe 他说这个是他使用另一种语言写的。太牛了,
89. 我用他的东西都不能运行,不知道,他总报错,说什么我没有发布wsdl.
90. 他说以前他们公司用java做的,要和另一个公司做集成 ,那个公司就是用delphi开发的,为了通信,就开发了这么一个接口。
91. 我们公司用java写的,另一个公司界面用delphi写的,服务平台用c++写的。
92. 其实一个大型项目,都是用多种语言混合起来做的,一种语言是解决不了问题的。语言你不能讨论好坏,我在网上看到有些人对语言批判好坏特别严重,其实这就不太对,在某种场景下,你可能用c++就不合适。比如做这种web应用,你用c++合适吗?他也能做,各个方面太慢了,用java一天做完了,用c++做,一星期,半个月才能做完。
93. 我们以前,主板蕊片上要放程序,怎么放啊,那都汇编写了放上去,你能说汇编没用吗? 你说vb淘汰了吗?.
94. 注意一下,语言的事,不要特别去抨击语言的好坏。
95. 你不要把这个xml文件搞得太大了,假如我要查询一万个学生的信息,你把这一万个搞出来,你这个文件得多大。我发一个消息给你,你生成相应的文件 传到FTP Server,生成好了,你告诉我你说你生成好了,我就到FTP Server上去取。我就用程序自动去访问,这样肯定很快。你还可以先把xml压缩一下,再放上去,
96. 95说的意思就是不要用soap传大量数据,传大量数据肯定是不合适的,所以你可以使用后面的解决方案,把他先传到FTP Server上去。
97. 你先了解一下就够了,以后实在要开发的话,你好入门。
98. 现在演示,静态调用,生成客户端存根方式,
99. 存根代表什么,远程对象的代理,我访问这个存根,那他就控制远程了,去调用远程对象了,他会起到一个编码和解码的作用。
100. 没有存根就是动态调用,有了的话就是动态调用了,搞的一个工程命名都错了,搞得我运行他的都 运行不出来。
分享到:
相关推荐
Web Services 教程Web Services 教程Web Services 教程Web Services 教程
web services web services web services web services web services
在java开发services中,会用到: 1.webservices-api.jar 2.webservices-extra.jar 3.webservices-rt.jar 4.webservices-tools.jar 5.webservices-extra-api.jar 此压缩文件里就是这五个jar文件。
Web ServicesWeb ServicesWeb Services
WEB SERVICES原理与研发实践
Exchange Web Services 2.2
本书的内容涵盖了Web Services的各种关键技术、Web Services的整体体系架构和应用体系架构,以及Web Services应用的设计和开发。本书以Web Services技术系列为主线,逐一详细分析解释包括Web Services的各种核心技术...
Oracle Web Services Manager_ Securing your Web Services
Flask Building Python Web Services 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
简单易懂,学习的好资料,Creating Web Services and hosting them (Using C#).zip,创建和个web服务工程和发布这个工程,Creating Web Services and hosting them (Using C#).zip,创建和个web服务工程和发布这个...
webservices-api webservices-extra webservices-extra-api webservices-rt webservices-tools
RESTful Java Web Services, Master core REST concepts and create RESTful web services in Java, Jose Sandoval, Copyright 2009 Packt Publishing
Web Services平台架构,java平台上开发web services
webservices-api,webservices-extra,webservices-extra-api,webservices-rt,webservices-tools
Web Services资料大全,Web Services Axis CFX Soap 等资料。。。
webservices的简单示例,webservices钟的配置
web services web services web services web services web services web services web services web services web services
RESTful Java Web Services (2009).pdf This book is for developers who want to code RESTful web services using the Java technology stack together with any of the frameworks Jersey's JAX-RS, Restlet's ...
Web Services with Java 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
RESTful Web Services 中文版 高清 PDF 电子书