转载
第二种: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(); } } 最后编写一个deploy.wsdd文件如下: <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <!—这里的stubs为wsdd描述符中的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" <!—这是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> |