eclipse的webservice调用实例

来源:互联网 发布:东风41导弹车数据 编辑:程序博客网 时间:2024/05/19 09:18

2.2.开发前准备:

  1. 安装Eclipse-jee;
  2. 下载最新版本的Axis2,网址http://axis.apache.org/axis2/java/core/download.cgi ,选择Standard Binary Distribution的zip包,解压缩得到的目录名axis2-1.4.1,目录内的文件结构如下:


2.3.开发前配置:

在Eclipse的菜单栏中,Window --> Preferences --> Web Service --> Axis2 Perferences,在Axis2 runtime location中选择Axis2解压缩包的位置,设置好后,点"OK"即行。(如图

2.4.开发Web Service:

(1)新建一个Java Project,命名为"WebService"
(2)新建一个接口包com.yangjf.service,命名为"MessageService"

(3)新建一个实现类包com.yangjf.serviceImpl,命名为"MessageServiceImpl",代码如下:

package com.yangjf.serviceImpl;import com.yangjf.service.MessageService;public class MessageServiceImpl implements MessageService {@Overridepublic void sendSms(String tel, String content) {System.out.println("调用WebService发送成功!号码是:"+tel+", 内容是:"+content+"。");}}
(3)在"WebService"项目上new --> other,找到"Web Services"下面的"Web Service";

(4)下一步(next),在出现的Web Services对象框,在Service implementation中点击"Browse",进入Browse Classes对象框,查找到我们刚才写的写的MessageServiceImpl类。。点击"ok",则回到Web Service话框。

(5)在Web Service对话框中,将Web Service type中的滑块,调到"start service“的位置,将Client type中的滑块调到"Test client"的位置(若不需要自动创建测试客户端就不调)。

(6)一直点next就可以了。

(7)可以在测试客户端获取到wsdlUrl。

2.5 写测试客户端

(1)导入需要用到的jar包


(2)测试类代码如下:

package com.yangjf.test;import javax.xml.namespace.QName;import org.apache.axis2.AxisFault;import org.apache.axis2.addressing.EndpointReference;import org.apache.axis2.client.Options;import org.apache.axis2.rpc.client.RPCServiceClient;public class sendSms {public static int TIMEOUT = 100000;public static void send(){String wsdlUrl = "http://localhost:8080/WebService/services/MessageServiceImpl"; String tel = "15626961234";String content = "我是短信测试内容!";Object[] rx;try {rx = invokeWebService(wsdlUrl, "http://service.yangjf.com","sendSms", new Object[]{tel,content}, new Class[]{});//System.out.println("返回结果:"+rx[0].toString());} catch (AxisFault e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static Object[] invokeWebService( String url, String nameSpace, String method, Object[] args, Class[] returnTypes ) throws AxisFault {  RPCServiceClient serviceClient = new RPCServiceClient();  Options options = serviceClient.getOptions();  EndpointReference targetEPR = new EndpointReference( url );  options.setTo( targetEPR );  options.setTimeOutInMilliSeconds( TIMEOUT );  QName opName = new QName( nameSpace, method );  Object[] results = serviceClient.invokeBlocking( opName, args, returnTypes );  return results; }public static void main(String[] args) {sendSms.send();}}

结果如下:


1 0