06-11-2:
第四章 apache soap quick start
今天终于把apache soap给配置好了,简直是可以写成一部历险记了。原来apache soap的安装非常的简单。下载apache soap bin安装包,直接解压,把/webapp下的soap文件夹直接拷贝到tomcat的webapp的root下,然后基本上你可以访问到了soap的首页,但是,当你无论点击左边的哪个按钮,都会出现错误。找了好久的原因,终于偶然看到一篇网上的配置,说要把一些jar拷贝到tomcat的common/lib下,于是我尝试把所有需要的jar拷贝到lib下,然后一一进行排除,结果发现,需要把javamail的mail.jar拷贝出来,放到lib下,最后重启tomcat,搞定。
1.Apache soap客户端,产生一个soap请求,并通过HTTP post发送这个请求。
2.jakarta tomcat服务接收这个请求,发送给apache rpcrouter servlet。
3.rpcrouter查找这个请求,实例化一个对象,调用它的方法。
4.rpcrouter捕获这个返回结果,打包成soap响应,返回给客户端
4.2.1service code
这段代码与一般的java类没有什么不同。没有必要导入任何的apache soap库,或者实现任何soap接口。
4.2.2客户端代码
与服务代码不同,客户端的代码需要接口连接soap api。不管有多复杂,客户端的代码必须经过下面大概5个步骤:
1.创建一个rpc Call对象,Call对象封装了所有的细节来调用一个远程的soap服务。比如,包括了soap服务名和调用的方法。
2.构建一个参数列表传递给远程服务。apache soap包含了内置的支持大量的数据类型。同样也支持传递javaBeans和字面上的XML文档。
3.调用远程方法。客户端把相关的数据打包到soap请求中,发送给soap服务,接收和解包soap响应。
4.检查错误
5.分离返回的值。
注意:创建参数时,参数的顺序是至关重要的。当接收到你的方法调用的时候,rpcrouter将会解包每个参数,顺序的匹配每个方法签名。
soap服务的分布式计算天生就很脆弱,特别是:
1.soap服务可能不能处理大量的事务;
2.soap服务可能不能完成请求服务;
3.soap客户端可能不能打开网络连接;
4.soap客户端可能与soap服务器不兼容。
4.3设置soap服务
有2种方式来设置web服务:web-based administrator和命令行工具。
4.3.1web-based administrator
06-11-6:
(太兴奋了,今天终于在命令行下把我的web service给配置调试好,且成功运行了本书的例子程序,期间发生了许多的问题,通过看这些开源的Doc文档,问题被一个个的解决了,我太高兴了,困扰了我一个周的事情了。关于soap,网上关于搭建免费的web service服务器很少有帖子进行完整的讲解,因为关于怎样用java进行web service的开发的分类本来就很多。实现web service的project也很多,所以,开始走了不少的弯路,现在都凌晨2:20了,睡觉了,明天继续进行总结)
如果HelloService.class放在classpath指定的目录下,比如Tomcat 5.5/common/classes里面(目前我还不晓得为什么要这样子,因为关于tomcat,我还不清楚里面的机制,暂时这样理解,反正一句话要让系统找得到web service的这个类,能够new一个实例),然后把soap.jar;mail.jar;activation.jar;加入到classpath中。不然会出现许多的错误。这些细节是很重要的.开始我不晓得怎样把这些编译好的class文件放在哪里,在哪里,soap就可以找到我的HelloService,在网上也查了好多的资料,大同小异,没有类似FAQ的错误.查了soap的Doc渐渐的懂到一些了。
关于在tomcat下面安装soap的服务部分:把soap/webapps/soap.war拖到tomcat的webapps目录下面。这样子的确工作了,但是具体是怎样工作的我还不清楚。
第五章 Apache soap编程
终于在开始soap之路上,大大地前进了一步,进入了第五章的学习了。但是可能要告一个段落了,因为一个星期都把时间花在了web service上,使得我其他方面的进展不大,所以,每天都只有平均分配时间了。