1、先下载axis jar包:axis-bin-1_4.zip。下载地址: http://ws.Apache.org/axis/。
当然这个包其实是不全面的,像activation.jar之类的,完全的Lib会在附件里提供。
2、解压好后,将webapps目录下的axis拷贝到tomcat_home的webapps下面。
3、在myeclipse中新建一个web项目,取名叫testWebservice.并新建一个包名叫webservice.axis.wsdd,
再新建一个class名叫:HelloWorldWSDD。
HelloWorldWSDD源代码如下:
package webservice.axis.wsdd;
public class CopyOfHelloWorldWSDD {
private int requestCount=0;
public String hello(String cardNo){
requestCount++;
System.out.println("requestCount="+requestCount);
System.out.println("Received:"+cardNo);
return "Hello"+cardNo;
}
public float add(float a,float b){
requestCount++;
String result="a="+a+",b"+b;
System.out.println("requestCount"+requestCount);
System.out.println("Received:"+result);
return a+b;
}
}
4、将tomcat_home\webapps\axis\WEB-INF\lib下面所有的jar包拷贝到项目中的Lib中。
5、先部署一下web项目,再运行tomcat,运行http://localhost:8080/axis调试下是否安装成功。然后将tomcat_home\webapps\axis\WEB-INF\lib所有的jar包同时拷贝到tomcat_home\lib下面。此时我们的webservice还不会出现在调试列表里,因为还有很多配置工作没有做。
6、下面将tomcat_home\webapps\testWebservice\WEB-INF\classes\下的webservice文件夹复制到tomcat_home\webapps\axis\WEB-INF\classes下面。这步的目的就是以后客户端访问axis时能看见我们的websevice.
7、在tomcat_home\webapps\axis\WEB-INF下面文件deploy.wsdd,在里面输入:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="HelloWorldWSDD" provider="java:RPC">
<parameter name="className" value="webservice.axis.wsdd.HelloWorldWSDD" />
<parameter name="allowedMethods" value="*" />
<parameter name="scope" value="request" />
</service>
</deployment>
8、运行CMD,进入目录到tomcat_home\webapps\axis\WEB-INF\,输入如下命令:
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient deploy.wsdd
注意:运行此步时要保证tomcat是运行着的,否则会出现connection refuesed的错误。如果运行成功,会提示done processing.而且会生成一个文件server-config.wsdd。
9、此时已经快完成了。可以在浏览器里输入http://localhost:8080/axis/services。看看有没有新增加一个叫HelloWorldWSDD的webservice.如果有,那么就是成功啦。
其他简单测试方法:
1、在浏览器输入http://localhost:8080/axis/services/HelloWorldWSDD
2、在浏览器输入http://localhost:8080/axis/servlet/AxisServlet
2者都可以用来简单测试webservice是否处于可用状态。
10、编写客户端进行测试。在同样的包下建一个class叫Client
客户端的核心就是引用url。
源代码如下:
package webservice.axis.wsdd;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class CopyOfClient {
public static void main(String args[]){
try{
String serviceurl="http://localhost:8080/axis/services/HelloWorldWSDD";
Service service=new Service();
Call call=(Call)service.createCall();
call.setTargetEndpointAddress(serviceurl);
call.setOperationName(new QName(serviceurl,"hello"));
String result=(String)call.invoke(new Object[]{"123456"});
call.setOperationName(new QName(serviceurl,"add"));
Float returnValue=(Float)call.invoke(new Object[]{new Float(3.2),new Float(2.8)});
System.out.println("float return value is:"+returnValue);
if(result!=null){
System.out.println("result="+result);
}else{
System.out.println("result is null");
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
运行结果是:float return value is:6
result is Hello123456,
下面对这两句重要的话进行解释:
- call.setOperationName(new QName(serviceurl,"hello"));
- String result=(String)call.invoke(new Object[]{"123456"});
1、QName里面接的hello是指方法名。
2、invoke里面接的123456是指方法的参数。
参考资料:
2、新浪上的:http://blog.sina.com.cn/s/blog_4b9b442c0100rd87.html
3、ITEYE上的:http://hua04104.iteye.com/blog/850367