1.使用elicpse工具,建立一个MyWebService项目:
创建包package pack.java.web.service , 创建类WebServiceWSDD,
package pack.java.web.service;
public class WebServiceWSDD {
private int result;
private String name;
public String hello(String a,int b){
System.out.println("this is my hello method.");
System.out.println("a="+a);
System.out.println("b="+b);
result = b++;
System.out.println("result="+this.result);
return a+b;
}
public int add(int a,int b){
System.out.println("this is my add method.");
return a+b;
}
}
把这个包和类生成的.class文件 拷贝到F:\apache-tomcat-6.0.20\webapps\axis\WEB-INF \Classes\目录中.
2.编辑webservice deploy.wsdd文件,然后拷贝到F:\apache-tomcat-6.0.20\webapps\axis\WEB-INF ,
deploye.wsdd 的文件内容如下:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="WebServiceWSDD" provider="java:RPC"> <parameter name="className" value="pack.java.web.service.WebServiceWSDD" /> <parameter name="allowedMethods" value="*"/> <parameter name="scope" value="request"/> </service> </deployment>
<service name="WebServiceWSDD" provider="java:RPC">
简要说明以下的作用,name 是web service的名称. java:PRC,则是指定的是服务的类型. 主要包括4中服务类型,PRC,Document,Message,Wrapped.几种.
<parameter name="className" value="pack.java.web.service.WebServiceWSDD" />
这个很好理解,就是 包和类的名称.
<parameter name="allowedMethods" value="*"/>
name所有方法名,也可以指定某一个方法, 当前的配置,允许调用所有public的方法,. value 当然也可以自己指定,
<parameter name="scope" value="request"/>
请求范围: request,session,application。
运行cmd命令 在dos窗口中输入:
F:\apache-tomcat-6.0.20\webapps\axis\WEB-INF>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -l http://localhost:9999/axis/services/WebServiceWSDD deploy.wsdd
1.首先进入到你的F:\apache-tomcat-6.0.20\webapps\axis\WEB-INF 目录,
2.输入 java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -l http://localhost:9999/axis/services/WebServiceWSDD 命令,
注意的地方是,在运行命令之前,确保tomcat服务正常启动成功.
运行结果:表示发布成功.
Processing file deploy.wsdd
<Admin>Done processing</Admin>
3.编辑客户端Client代码:
package pack.java.web.service.client;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class MyWebServiceClient {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String url="http://localhost:9999/axis/services/WebServiceWSDD";
Service service=new Service();
try {
Call call=(Call) service.createCall();
call.setTargetEndpointAddress(url);
//调用hello 方法;
//call.setOperationName(new QName(url,"hello"));
//调用add 方法;
call.setOperationName(new QName(url,"add"));
try {
//调用web Service上面的hello方法,并且传递两个参数,返回其结果.
//String result=(String) call.invoke(new Object[]{"my webService",123});
//System.out.println(result);
//调用add 方法,并且传递参数,返回结果.
int num =(int)(Integer)call.invoke(new Object[]{1,2});
System.out.println("add :"+num);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果:
add :3.