转载

13年前
第二种:Stubs 开发方式(stubs 故名思意,存根的方式)
  Stubs 方式相对要复杂一点.不过如果学会了这种方式,嘿嘿,那你开发的时候
 就会明显比第一种方式快了,接下来,跟我一起学吧.
 步骤1:
创建环境变量,设置AXIS的环境变量.
这种方式的编码,先要设置一下命令行的环境.右键我的电脑――>属性――>
选择高级选项卡――>新建用户变量――>输入用户变量如下:
  变量名:AXIS_LIB
   变量值: E:\tomcat5.28\Tomcat 5.0\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.0.jar;
%AXIS_LIB%\dom4j-1.6.1.jar;
    变量名:AXIS_HOME
    变量值:E:\tomcat5.28\Tomcat 5.0\webapps\axis
  新建好上述的三个变量后.确定退出.
步骤2:
 编码开始!这里要稍讲得详细并复杂一点了,我们上面看到了,只设置了一个普通
 的参数,这里我就写一下自定义数据类型参数的传递.网上很多文章只讲到了
普通数据类型做参数传递.
 服务器端的编写,代码与注释如下:
  首先定义自定义参数类(第一个类)
    package com.web.test;
 
publicclass UserBean {//自定义数据类型.
     //很简单,只有一个String int
    private String name="";
    privateint age ;
    publicint getAge() {
       returnage;
    }
 
    publicvoid setAge(int age) {
       this.age = age;
    }
 
    public String getName() {
       returnname;
    }
 
    publicvoid setName(String name) {
       this.name = name;
    }
   
}
 其次编写第二个类Webservice服务器端类
package com.web.test;
 
publicclass Server {//服务器端
    //服务端,传递的是一个自定义的数据类型. UserBean
    public String getBeanStr(UserBean bean){
       return"You Name:"+bean.getName() +
              " , You Age:" + bean.getAge();
    }
}
    最后编写一个deploywsdd文件如下:
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
           xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<!—这里的stubswsdd描述符中的ServiceNamespace à
<service name="stubs" provider="java:RPC">
<!—这里的ClassName就是我的服务类了,这个服务主要功能就是传递一个自定义的对象 à
<parameter name="className" value="com.web.test.Server"/>
<!—这里描术的意思是,此服务类中的方法全部享出来.value值为*号 如果你只想让你的
客户端只能调用其中一个方法时,value值改为方法名就可以了.à
<parameter name="allowedMethods" value="*"/>
<!—这个typeMapping 是类型映射,使传递的参数序列化用反序列化,一个自定义类型
在要网络上传递,那就一定得让他序列化. -->
 <typeMapping
     <!—下面是反序列化类配置à
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
        encodingStyle=http://schemas.xmlsoap.org/soap/encoding/
       <!—这是Qname名称的定义.à
        qname="ns1:user"
   <!――序列化类配置――>
       serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
     <!—我的数据参数类型类路径à
        type="java:com.web.test.UserBean"
      <!—Qname对映的keyà
        xmlns:ns1="urn:BeanService"
 />
</service>
</deployment>