JAVA处理含有DataSet的web services
?????? 本篇文章将讲述如何通过axis取得.net发布的Web services,并处理返回含有DataSet的处理结果,展现在页面上。
涉及到的知识有:
AXIS
??????? SAXBuilder
??????? xml
??????? 步骤如下:
1)、生成client stub文件。
必备条件axis开源包。JDK
A)、比如AXIS包放在你的C盘,则需要在环境变量当中设定的东东有:
?????????????????????????? AXIS_HOME=C:\AXIS
???????????????????????????AXIS_CLASSPATH=.;%AXIS_HOME%\lib\axis.jar;%AXIS_HOME%\lib\axis-ant.jar;%AXIS_HOME%\lib\commons-discovery-0.2.jar;%AXIS_HOME%\lib\commons-logging-1.0.4.jar;%AXIS_HOME%\lib\jaxrpc.jar;%AXIS_HOME%\lib\saaj.jar;%AXIS_HOME%\lib\wsdl4j-1.5.1.jar;%AXIS_HOME%\lib\log4j-1.2.8.jar;%AXIS_HOME%\lib\activation.jar;%AXIS_HOME%\lib\mail.jar
?????????????????????????? 然后加入到PATH当中:.;%?AXIS_CLASSPATH%?? (加入就可以了)
????????????????????????? 注意:很多人因为以上的配置不对,导致对AXIS学习的信心下降,其实,仔细一点就会发现在CLASSPATH当中找一找有没有版本区别。也就是每一个JAR包是不是真的存在就可以了。(哈哈,我曾为之付出了两天的时间娞!)
???????????????? B)、进入DOS模式,转到D盘,执行如下代码:
java org.apache.axis.wsdl.WSDL2Java -p?<名称,最好是包名> http://10.2.10.80/FocService/FocService.asmx?wsdl,看到了吧。对.net发布为asmx的文件后面加入?wsdl就可以解决了。
然后就会在这个<名称,最好是包名>下就会有一堆的JAVA文件,一般的话会有:
?????????????????????? xxxx.java
?????????????????????? xxxxLocator.java
???????????????????????xxxxSoap.java
????????????????????? xxxxSoapStub.java
??????????????????????其次还有以下划线_xxxx????.java的文件都是序列化的对象,也就是返回的结果对应元素。可以暂时不理它。下面就以作者生成的示例做一个引用webservice的操作。作者得到的文件如下:
?????????????????????? SearchFlightInfo.java
?????????????????????? SearchFlightInfoLocator.java
?????????????????????? SearchFlightInfoSoap.java
????????????????????? SearchFlightInfoSoapStub.java
?????????????????????? -----------------------------------
?????????????????????? _GetFlightInfoResponse_GetFlightInfoResult.java
????????????????????? _GetstrFlightInfo.java
???????????????????? _GetstrFlightInfoResponse.java
??????????????????? C)、引用方法:
???????????????????????????????基本思想是从得到web services后取得他的主体信息(返回的数据信息),然后生成XML文件,然后再把XML文件转换成一个JAVA序列化对象就可以了。
如下是序列化对象的代码。
?????????????????????
?????????????????????????????? 如下是解析XML文件变换成一个序列化的对象的JAVA代码:(其中Vecto就相关于安全的LIST了)
??????????还有一个代码如下:
???????????
???????????以上所述是作者调试通过。使用STRUTS做为前台,然后输出就可以了。本文章只讨论技术问题,示例当中的代码
只做为研究学习使用,并无它意。
另外个人意见:我在外包公司工作,很累。几乎没有学习新东西的时间,希望有远大志向的人或者想追赶技术潮流的人不要应聘这类公司。
1 楼 xly_971223 2006-12-14 国内公司都差不多,非外包公司也不一定能学到东西 2 楼 liusu 2006-12-30 我按照你的方法成功实现了调用,万分感谢! 3 楼 ray_linn 2006-12-30 娞 这个字强~ 看了半天不知道怎么打出来的 4 楼 kiss.988 2007-03-11 好方法,值得我去认真思考一番。