首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

异步子用webservice (小例子)

2012-08-28 
异步调用webservice (小例子)1、新建webservice服务类,AsyncService.javapublic class AsyncService {publi

异步调用webservice (小例子)

1、新建webservice服务类,AsyncService.java

public class AsyncService {public static String getServerTime() throws InterruptedException{Thread.sleep(5000);return "测试";}}

?

2、将AsyncService编译后的clas文件放到 axis2\WEB-INF\pojo 目录下。

?

3、新建客户端类 AsyncServiceClient.java

package client;import java.io.IOException;import java.util.Calendar;import javax.xml.namespace.QName;import org.apache.axis2.addressing.EndpointReference;import org.apache.axis2.client.Options;import org.apache.axis2.client.async.AxisCallback;import org.apache.axis2.context.MessageContext;import org.apache.axis2.rpc.client.RPCServiceClient;public class AsyncServiceClient {public static void main(String[] args) throws IOException, InterruptedException {RPCServiceClient client = new RPCServiceClient();//设置webservice服务地址Options options = client.getOptions();EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/AsyncService");    options.setTo(targetEPR);        //设置要调用的方法名、命名空间        QName qName = new QName("http://ws.apache.org/axis2","getServerTime");                //设置入参        Object[] inParams = new Object[]{};                //开始异步调用        client.invokeNonBlocking(qName, inParams, new AxisCallback(){public void onComplete() {}public void onError(Exception arg0) {}public void onFault(MessageContext arg0) {}public void onMessage(MessageContext mc) { System.out.println(Thread.currentThread().getName() +"线程接收到返回值时间:"+getClientTime()); // 输出返回值 System.out.println("服务器端返回信息:"+mc.getEnvelope());}        });     System.out.println(Thread.currentThread().getName()     +"线程执行完毕时间:"+getClientTime());         System.out.println(Thread.currentThread().getName()+"开始休眠");          //使主线程休眠20s,以等待异步调用结束。     Thread.sleep(20000);     System.out.println(Thread.currentThread().getName()+"结束休眠");}/* * 获取当前系统时间 */public static String getClientTime(){Calendar calen = Calendar.getInstance();int year = calen.get(Calendar.YEAR);int month = calen.get(Calendar.MONTH)+1;//需加一int day = calen.get(Calendar.DAY_OF_MONTH);int hour = calen.get(Calendar.HOUR_OF_DAY);int minute = calen.get(Calendar.MINUTE);int seconds = calen.get(Calendar.SECOND);int weekday = calen.get(Calendar.DAY_OF_WEEK)-1;//需减一return year+"年"+month+"月"+day+"日"+hour+"时"+minute+"分"+seconds+"秒,礼拜"+weekday;}}

?

?

4、执行客户端类,输出结果如下:

?

main线程执行完毕时间:2012年3月16日16时37分56秒,礼拜5
main开始休眠
Axis2 Task线程接收到返回值时间:2012年3月16日16时38分1秒,礼拜5
服务器端返回信息:<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns:getServerTimeResponse xmlns:ns="http://ws.apache.org/axis2"><return>测试</return></ns:getServerTimeResponse></soapenv:Body></soapenv:Envelope>
main结束休眠

?

返回的xml格式化后如下:

异步子用webservice (小例子)
?

?

http://huangqiqing123.iteye.com/blog/1455417

?

热点排行