注:红色部分为我添加的。
axis 支持三种 web service 的部署和开发,分别为:
1.Dynamic Invocation Interface ( DII)
2.Stubs
方式

使用dii的方式

1. 编写服务端程序HelloService
public class HelloService{
public String getName(String name)
{
return "Welcome to Axis, "+name;
}
}

2.
将源码拷贝到AXIS_HOME 下,重命名为 HelloService.jws
3.
访问连接http://localhost:8080/axis/HelloService.jws?wsdl ,页面显示axis 自动生成的wsdl( 并且在axis\WEB-INF\jwsClasses 生成HelloService.class 类文件)
4.
编写访问服务的客户端 HelloClient.java, 编译, 执行, 在命令提示行下会看到 "return value is Welcome to Axis ,fengshan"
public class HelloClient {
   public static void main(String[] args) {
     try {
      String endpoint = "http://localhost:8080/axis/HelloService.jws";
      Service service = new Service();
      Call call = null;
      call = (Call) service.createCall();
      call.setOperationName(new QName(
          "http://localhost:8080/axis/HelloService.jws", "getName"));
      call.setTargetEndpointAddress(new java.net.URL(endpoint));
      String ret = (String) call.invoke(new Object[] { "fengshan" });
      System.out.println("return value is " + ret);
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}
总结:dii方式比较简单,服务器端暴露一个类,客户端通过固定的方式(套路来访问服务器提供的服务)
服务器:写一个类,里面有一个业务方法,然后将后缀名字从java改成jws
客户端:1.构造连接地址:http://localhost:8080/axis/HelloService.jws (ip+路径+类名.jws)
      2.构造vservice对象,掉用service对象的createCall()方法返回call对象
      3.调用call对象的etOperationName()方法设置访问webservice资源的参数
      4.调用call对象的invoke()方法,并且传递对象数组,字符串类型,(通过wsdl可以观察出requestresponse的参数,根据这些表述,来设置请求参数和接受返回数据)
 
 

使用Stubs方式

1.服务器端仍然使用HelloService.java,编译后将他放在axis\WEB-INF\classes
2.编写deploy.wsdd文件,声明服务器端需要发布的webservice的名字,和她的方法(放在web-inf目录下)
deploy.wsdd 内容 :
< deployment xmlns ="http://xml.apache.org/axis/wsdd/"
         xmlns:java ="http://xml.apache.org/axis/wsdd/providers/java" >
< service name ="HelloService" provider ="java:RPC" >
     < parameter name ="className"    
             value ="HelloService" />
     < parameter name ="allowedMethods" value ="*" />