Axis的Stubs方式开发web Service

来源:互联网 发布:mac看视频发热严重 编辑:程序博客网 时间:2024/05/16 01:37

最近在总结如何开发一个web Service,在网上也搜了一些例子,结合自己知道的一些,下面想跟大家分享下开发心得。

开发环境MyEclipse6.0、eclipse3.2 、tomcat6.0.26 、jdk1.5 、axis_1.4

 

首先,创建axis环境。
1. 下载axis1.4最新版本http://labs.renren.com/apache-mirror/ws/axis/1_4/
2. 将解压后的axis-1_4文件下的webapps目录下的axis目录考到%TOMCAT_HOME%Webapps/目录下
3. 启动tomcat的.输入路径http://localhost:8080/axis  打开axis主界面
4. 点击页面上的Validation ->查看一下你的axis相关jar文件是否添加完整了。若添加完整了正常情况下Validation页面中就不会有Error与Warning。

必须的jar文件有:


Stubs 开发方式(stubs 故名思意,存根的方式)

步骤1:
设置AXIS的环境变量.创建系统变量
右键我的电脑――>属性――>选择高级选项卡――>新建用户变量――>输入用户变量如下:
   变量名:AXIS_LIB
   变量值:D:/java/apache-tomcat-6.0.26/webapps/axis/WEB-INF/lib
   变量名: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.3.jar;
       %AXIS_LIB%/jdom.jar
    变量名:AXIS_HOME
    变量值:D:/java/apache-tomcat-6.0.26/webapps/axis
步骤2:
  首先编写Webservice服务器端类
   package com.web.test;


publicclass ServerImp {

    //服务端,传递的是字符串数据类型

    public String getUserInfo(String loginName){
       return loginName;
    }
}
然后编写一个deploy.wsdd文件

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

<!—ServerImp为wsdd描述符中的ServiceNamespace—>

<service name="ServerImp" provider="java:RPC">

<!—这里的ClassName指的就是服务类了,主要功能传递一个字符串参数—>

 <parameter name="className" value="com.web.test.ServerImp"/>

<!—value值为*号,代表客户端可以调用服务的多个方法—>
 <parameter name="allowedMethods" value="*"/>
</service>
</deployment>

 最后将写好的类的.class文件复制到/axis/web-inf/class目录下,需要把整个包复制下来。然后在把deploy.wsdd文件复制到/axis/web-inf/目录下.
打开控制台进入你的axis目录:
   >cd D:/java/apache-tomcat-6.0.26/webapps/axis/WEB-INF
   >java org.apache.axis.client.AdminClient -lhttp://localhost:8089/axis/services/ServerImp deploy.wsdd
发布成功后,你的axis/web-inf/目录下会多了一个server-config.wsdd文件,控制台下显示为:
Processing file deploy.wsdd
<Admin>Done processing</Admin>
步骤3:
键入命令生成一个客户端
 >cd D:/java/apache-tomcat-6.0.26/webapps/axis/WEB-INF
 >java org.apache.axis.wsdl.WSDL2Java -p client http://localhost:8089/axis/services/ServerImp?wsdl
打开axis/web-inf/目录下可以看到生成了一个client目录,复制client目录到项目中.这个client就是我们的客户端代码.

下面编写一个调用测试类:
package com.web.test;

import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;


public class Test {
 
 public static void main(String []args) throws Exception {
  
  Service   service   =   new   Service();  
  Call call = null;
  try{
   call = (Call) service.createCall();
   //设置服务的绝对路径
   call.setTargetEndpointAddress("http://localhost:8089/axis/services/ServerImp?wsdl");
   //设置调用方法名
   call.setOperationName("getUserInfo");  
   //设置服务返回类型
   call.setReturnType(XMLType.XSD_STRING);
   //设置传递参数
   call.addParameter("loginName",XMLType.XSD_STRING, ParameterMode.IN);
   Object[] parAry=new Object[]{"yingwen"};
   String result=(String)call.invoke(parAry);
   System.out.println("result: "+result);
   //控制台打印出的结果为:
   //result: 用户名:yingwen
   }
   catch (ServiceException e) {
   e.printStackTrace();
   }     
     }
}

一个stubs的方式,开发web Service就OL了。 

原创粉丝点击