根据wsdl 利用axis1.4的WSDL2Java工具生成服务端和客户端代码

时间:2022-12-02 08:35:23


     以前项目上用到webservice都是我们服务端提供wdsl,现在集团统一下发了wdsl。刚接手一时还不知道怎么弄,在网上查了很多资料。

     当然AXis的WSDL2Java在网上有很多资料,但是我看到有些网友说需要JDK1.5,让我迷茫了一些时间(我们项目比较老,用的jdk1.4)。

     慢慢了解了WSDL2Java后,才知道,自己以前对webservice服务有多么陌生,虽然现在也是一知半解,^_^。

      测试环境:

                     jdk1.4、axis1.4

       1,新建web工程 webservice

        2,把axis1.4下的所有jar包导入classpath

        3,把已知的wsdl文件放入工程的web-info/下(目录不是随意)

        4,写一简单的批处理文件wsdl2Java.bat(也可一再dos下进行)

set Axis_Lib=E:/workspace/cattsoft/csm/webservice/WebRoot/WEB-INF/lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% org.apache.axis.wsdl.WSDL2Java
set Output_Path=E:/workspace/cattsoft/csm/cust/src
%Java_Cmd% -o%Output_Path% --server-side GrpAcctInfoSer.wsdl

         双击wsdl2Java.bat文件,会生成服务端和客户端代码

         还会生成部署文件:deploy.wsdd,卸载文件:undeploy.wsdd

       5,从下载的axis1.4的jar包中找到web.xml覆盖工程中的web.xml,相当于配置访问的servlet

       6,部署工程,并启动服务器。把deploy.wsdd复制到部署路劲的web-info下,利用org.apache.axis.client.AdminClient 命令生成server-config.wsdd文件

           cmd到deploy.wsdd的位置:    

java -cp %AXIS_CLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:8080/test/services/MyServer deploy.wsdd

           AXIS_CLASSPATH:在环境变量中配置的类路径,指向axis下的所有jar包

         生成server-config.wsdd文件后,访问:

http://localhost:7001/servlet/AxisServlet

      就会现实服务列表。

     注:我当时做到这一步时,访问wsdl时报错:

                      Fault - makeTypeElement() was told to create a type "{http://ws.chinaunicom.cn/GrpAcctInfoSer/unibssBody/syncGrpAccountInfoReq}>>cust_infos>cust_info", with no containing element      

     困扰我好久,还是google给力,好像是axis的一个bug,虽然用浏览器访问不了wsdl,但是客户端访问是正常的。

     解决方案连接:

                         

http://www.coderanch.com/t/222942/Web-Services/java/Developing-Web-Services-Apache-Axis