2.2.开发前准备:
- 安装Eclipse-jee;
- 下载最新版本的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 {
@Override
public void sendSms(String tel, String content) {
System.out.println("调用WebService发送成功!号码是:"+tel+", 内容是:"+content+"。");
}
}
(3)在"WebService"项目上new --> other,找到"Web Services"下面的"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 block
e.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();
}
}
结果如下: