Web Service开发&调试轻松搞定

2009-02-17 | By Jinyang | Filed in: 技术相关.

Web Service早已经不是一个新东西了,并且其在我们日常的开发工作中越来越常见。对于Web Service的开发,有很多的解决方案框架、教程帮我们更轻松快捷的完成开发任务。以下就实际开发中遇到的问题略做总结:

1.  配置axis环境变量 使用WSDL2Java自动生成客户端代码
       axis针对客户端开发来进行WSDL2Java代码的生成还是很实用的,下载放置解压好axis后设置如下环境变量:  
我的电脑->属性->高级->环境变量:

set AXIS_HOME=D:\java\axis
set AXIS_LIB=%AXIS_HOME%\WEB-INF\lib
set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;%AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\activation.jar;%AXIS_LIB%\mail.jar;%AXIS_LIB%\wsdl4j-1.5.1.jar;%AXIS_LIB%\axis-ant.jar;%AXIS_LIB%\xmlsec.jar
最重要的是添加CLASSPATH:.;%AXIS_LIB%\axis.jar;%AXIS_LIB%\activation.jar;%AXIS_LIB%\axis-ant.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\mail.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\wsdl4j-1.5.1.jar;%AXIS_LIB%\xmlsec-1.4.0.jar;%AXIS_LIB%\dom4j-1.6.1.jar;

我是在用户变量里添加了以上,然后系统变量里添加了classpath:D:\java\axis-1_4\lib;和path:D:\java\axis-1_4\lib
其实实际上应该是不需要添加这么多的,具体那些是多余的我也没测试,^-^

此时你就可以使用WSDL2Java的方法了(这里默认您是已经安装并设置好了java的环境变量的(安装过JDK的话就自动设置好了))

java org.apache.axis.wsdl.WSDL2Java –p client http://localhost:8080/axis/services/stubs?wsdl

-p参数用来指定程序的包目录,更多参数请 –help  ,wsdl地址也可以是一个文件路径,代码文件生成在当前目录下,这时基本可以说是完成了客户端开发的一半工作。

2. 调用WS
    WAccessNumberServiceServiceLocator locator=new WAccessNumberServiceServiceLocator();//实例化服务客户端
theResult=locator.getAccessNumberService().queryAccessNumbers(params);//调用服务查询返回结果
   够简单吧?(这里默认服务的endpoint在Stub文件中已正确的被生成)

3. 调试
    关于Web Service的调试,网上说的最多的方法是基于axis的tcpmon ,不过我是没用起来,因为不熟悉Linux下的配置,另外也感觉这个方法比较麻烦 。
     还有网友建议使用浏览器的HTTP数据包查看工具来做调试,也是一个好的方法。
    所谓的调试,无非是获取完整的输入输出,这里我个人推荐的是在服务器端(这的服务器端是相对浏览器来说的,可以是WS的客户端或服务器端)使用linux下的tcpdump 抓包的方式方式 (默认都有装这个方法的) 
    示例命令:
       tcpdump host *.*.9.40 and *.*.10.26 -Xls 0 -w wsdubug0214010.cap
    说明:
          设置过滤Web Service两端的数据通讯;-Xls 0 作为用保存完整的数据包(好像默认只保存包的前60字节)  ;-w 为保存的文件名(保存在当前目录下);
 

执行命令->调用服务操作->Ctrl+c 停止监听数据包->查看分析文件(直接用文本查看工具打开即可)

   另一个基础的问题是可能服务的双方机器是否可见,可以简单的使用wget来做测试。
   示例命令:
      wget http://*.192.10.*:5555/*/services/A**Service?wsdl

如上所述,只要有详细的数据包文件可供分析,服务两端就可以很方便的沟通,自然就能迅速的搞定。

以上仅就个人开发过程的一些为问题点稍做总结,欢迎大家指正交流。


Tags:

One comment on “Web Service开发&调试轻松搞定

  1. jiuzhe说道:

    不轻松到轻松的过程就是工作经验的积累和个人提升的过程

发表评论

电子邮件地址不会被公开。 必填项已用*标注