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,
下面对这两句重要的话进行解释:
1、QName里面接的hello是指方法名。
2、invoke里面接的123456是指方法的参数。
参考资料:
2、新浪上的:http://blog.sina.com.cn/s/blog_4b9b442c0100rd87.html
3、ITEYE上的:http://hua04104.iteye.com/blog/850367