使用Axis在Tomcat下发布Webservice操作指南

http://blog.youkuaiyun.com/zhangzhaokun/archive/2009/09/24/4582977.aspx

 

验证没通过!

___________________________________________________________________________

 

最近在工作过程中总是需要向其它项目组提供Webservice的接口,由于开始需求不是很明确,接口的定义经常需要变更,每一次下来都需要将Java到 wsdl,从wsdl到Java,再根据wsdd文件在tomcat上deploy服务这个过程重复一遍.在这个过程中经常出现一些问题,尤其是长期不用 axis之后再突然这么用上一用的时候,总是有或多或少的问题存在,遂经上述过程的一些详细操作步骤整理了一些,供参考.

      使用Axis在Tomcat下发布Webservice有如下几个步骤:

      (1)用JavaBean写好要发布的服务的定义

      (2)使用Java2WSDL命令,根据JavaBean生成WSDL文件

      (3)使用Wsdl2Java命令,根据WSDL文件生成服务端源代码,以及deploy.wsdd文件

      (4)根据deploy.wsdd文件在tomcat下发布Webservice服务           

    (1)用JavaBean写好要发布的服务的定义

     以用户注册为例,需要提供如下样式的用户注册服务,输入参数为 com.huawei.mtv.commons.services.schemas.UserRegisterEvt,输出参数为 com.huawei.mtv.commons.services.schemas.UserRegisterResp.   

      UserManage接口文件定义: 

 

  1. package  com.huawei.mtv.commons.services;  
  2. import  com.huawei.mtv.commons.services.schemas.UserRegisterEvt;  
  3. import  com.huawei.mtv.commons.services.schemas.UserRegisterResp;  
  4. public   class  UserManage  
  5. {  
  6.     public  UserRegisterResp register(UserRegisterEvt evt)  
  7.     {  
  8.         return   null ;  
  9.     }  
  10. }  

          输入参数UserRegisterEvt源代码: 

 

  1. package com.huawei.mtv.commons.services.schemas;  
  2. public   class  UserRegisterEvt  implements java.io.Serializable {  
  3.         private   int  accessCode;     
  4.     private  java.lang.String level;  
  5.         private  java.lang.String userId;  
  6.         public  UserRegisterEvt(){  
  7.         }  
  8.       
  9.         public   int  getAccessCode(){  
  10.         return  accessCode;  
  11.     }  
  12.   
  13.     public   void  setAccessCode( int  accessCode){  
  14.         this .accessCode = accessCode;  
  15.     }  
  16.   
  17.     public  java.lang.String getLevel(){  
  18.         return  level;  
  19.     }  
  20.   
  21.     public   void  setLevel(java.lang.String level){  
  22.         this .level = level;  
  23.     }  
  24.   
  25.     public  java.lang.String getUserId(){  
  26.         return  userId;  
  27.     }  
  28.   
  29.     public   void  setUserId(java.lang.String userId){  
  30.         this .userId = userId;  
  31.     }  
  32. }  

 

         输出参数UserRegisterResp源代码: 

 

  1. package com.huawei.mtv.commons.services.schemas;  
  2. public   class  UserRegisterResp  implements java.io.Serializable {  
  3.         private  java.lang.String description;  
  4.     private  java.lang.String returnCode;  
  5.         public  java.lang.String getDescription(){  
  6.         return  description;  
  7.     }  
  8.   
  9.     public   void  setDescription(java.lang.String description){  
  10.         this .description = description;  
  11.     }  
  12.   
  13.     public  java.lang.String getReturnCode() {  
  14.         return  returnCode;  
  15.     }  
  16.   
  17.     public   void  setReturnCode(java.lang.String returnCode){  
  18.         this .returnCode = returnCode;  
  19.     }  
  20. }  

       在Eclipse环境下将上述定义文件导出为mtv-common.jar包.至此第一步算是完成了. 

  (2)使用Java2WSDL命令,根据JavaBean生成WSDL文件

      这里我使用的是axis-1_4版本,具体使用到的jar包(只使用了axis-1_4中lib目录中自带的jar包)和命令参见如下代码。

      java2wsdl.bat批处理文件 :

 

  1. set  axis_home=D:/software/axis2/axis-1_4/lib  
  2.   
  3. set  axis_path=%axis_home%/axis-ant.jar  
  4. set  axis_path=%axis_path%;%axis_home%/axis.jar  
  5. set  axis_path=%axis_path%;%axis_home%/commons-discovery-0.2.jar  
  6. set  axis_path=%axis_path%;%axis_home%/commons-logging-1.0.4.jar  
  7. set  axis_path=%axis_path%;%axis_home%/jaxrpc.jar;  
  8. set  axis_path=%axis_path%;%axis_home%/log4j-1.2.8.jar  
  9. set  axis_path=%axis_path%;%axis_home%/mtv-common.jar  
  10. set  axis_path=%axis_path%;%axis_home%/saaj.jar  
  11. set  axis_path=%axis_path%;%axis_home%/wsdl4j-1.5.1.jar  
  12.   
  13. set  CLASSPATH=%CLASSPAHT%;%axis_path%  
  14. java org.apache.axis.wsdl.Java2WSDL -n "urn:UserManage"   -p "com.huawei.mtv.commons.services"   "urn:UserManage"  -o  "UserManage.wsdl"  -l  "http://localhost:8080/axis/services/UserManage"    com.huawei.mtv.commons.services.UserManage  

    执行上述批处理文件之后就生成了UserManage.wsdl文件了. 

    Java2WSDL命令的个参数含义如下: 

 

  1. -o:指定输出的WSDL文件的文件名。      
  2.   
  3. -l:指定服务的位置。  
  4.           
  5. -n:WSDL文件的目标名字空间。  
  6.           
  7. -p:指定从package到名字空间的映射,这里可以有多个映射。  

 

  要注意如下几点:

  -o -l -n -p这些选项最好与后面选项对应的值之间没有空格,尤其是-p参数,有空格的话在生成WSDL文件的时候会报错.    

  (3)使用Wsdl2Java命令,根据WSDL文件生成服务端源代码,以及deploy.wsdd文件

     使用如下wsdl2java.bat批处理文件来生成Webservice服务端和客户端源代码.

 

  1. set  axis_home=D:/software/axis2/axis-1_4/lib  
  2.   
  3. set  axis_path=%axis_home%/axis-ant.jar  
  4. set  axis_path=%axis_path%;%axis_home%/axis.jar  
  5. set  axis_path=%axis_path%;%axis_home%/commons-discovery-0.2.jar  
  6. set  axis_path=%axis_path%;%axis_home%/commons-logging-1.0.4.jar  
  7. set  axis_path=%axis_path%;%axis_home%/jaxrpc.jar;  
  8. set  axis_path=%axis_path%;%axis_home%/log4j-1.2.8.jar  
  9. set  axis_path=%axis_path%;%axis_home%/mtv-common.jar  
  10. set  axis_path=%axis_path%;%axis_home%/saaj.jar  
  11. set  axis_path=%axis_path%;%axis_home%/wsdl4j-1.5.1.jar  
  12.   
  13. java org.apache.axis.wsdl.WSDL2Java --server-side --skeletonDeploy true  UserManage.wsdl  

    执行上述批处理文件之后会生成源代码的目录与结构如下:

   UserManage_pkg包下生成文件如下:

 

  1. deploy.wsdd  
  2. undeploy.wsdd  
  3. UserManage.java  
  4. UserManageService.java  
  5. UserManageServiceLocator.java  
  6. UserManageSoapBindingImpl.java  
  7. UserManageSoapBindingSkeleton.java  
  8. UserManageSoapBindingStub.java  

  

  另外也生成了com包,该包下的java文件与我们最初在第一步定义的文件基本相同. 

  利用Eclipse将上述生成的Java代码进行编译,导出为mtv-service.jar 

     (4)根据deploy.wsdd文件在tomcat下发布Webservice服务  

     将axis-1_4/webapps目录下的axis直接拷贝到tomcat/webapps目录下,再将mtv-service.jar包放到 tomcat/webapps/axis/WEB-INFO/lib目录下,将tomcat启动,执行如下deploy.bat批处理命令即可发布 UserManage服务了. 

     deploy.bat批处理文件如下:    

 

  1. set  axis_home=D:/software/axis2/axis-1_4/lib  
  2.   
  3. set  axis_path=%axis_home%/axis-ant.jar  
  4. set  axis_path=%axis_path%;%axis_home%/axis.jar  
  5. set  axis_path=%axis_path%;%axis_home%/commons-discovery-0.2.jar  
  6. set  axis_path=%axis_path%;%axis_home%/commons-logging-1.0.4.jar  
  7. set  axis_path=%axis_path%;%axis_home%/jaxrpc.jar;  
  8. set  axis_path=%axis_path%;%axis_home%/log4j-1.2.8.jar  
  9. set  axis_path=%axis_path%;%axis_home%/saaj.jar  
  10. set  axis_path=%axis_path%;%axis_home%/wsdl4j-1.5.1.jar  
  11.   
  12. java org.apache.axis.client.AdminClient -l"http://localhost:9000/axis/services/UserManage"  deploy.wsdd  

 

    经过上述4大步骤,我们的UserManage服务就顺利发布了.

    通过http://localhost:9000/axis/servlet/AxisServlet 即可查看到刚才发布UserManage服务了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值