1 16 package test.client; 17 18 import junit.framework.Test; 19 import junit.framework.TestCase; 20 import junit.framework.TestSuite; 21 import org.apache.axis.client.Call; 22 import org.apache.axis.client.async.AsyncCall; 23 import org.apache.axis.client.async.IAsyncCallback; 24 import org.apache.axis.client.async.IAsyncResult; 25 import org.apache.axis.client.async.Status; 26 27 import java.net.MalformedURLException ; 28 import java.net.URL ; 29 30 public class TestAsyncCall extends TestCase { 31 public TestAsyncCall(String name) { 32 super(name); 33 } 34 35 public static Test suite() { 36 return new TestSuite(TestAsyncCall.class); 37 } 38 39 protected void setup() { 40 } 41 42 public void testAsyncPollWeatherService() throws MalformedURLException , InterruptedException { 43 Call call = new Call(new URL ("http://live.capescience.com:80/ccx/GlobalWeather")); 44 call.setUseSOAPAction(true); 45 call.setSOAPActionURI("capeconnect:GlobalWeather:StationInfo#listCountries"); 46 call.setTimeout(new Integer (15 * 1000)); 47 call.setOperationName(new javax.xml.namespace.QName ("capeconnect:GlobalWeather:StationInfo", "listCountries")); 48 AsyncCall ac = new AsyncCall(call); 49 IAsyncResult result = ac.invoke(new Object []{}); 50 System.out.println("STARTED"); 51 Status status = null; 52 while ((status = result.getStatus()) == Status.NONE) { 53 System.out.print('.'); 54 Thread.sleep(50); 55 } 56 System.out.println("FINISHED"); 57 if (status == Status.COMPLETED) { 58 String [] c = (String []) result.getResponse(); 59 System.out.println(c.length); 60 for (int i = 0; i < c.length; i++) { 61 System.out.println(c[i]); 62 } 63 } else if (status == Status.EXCEPTION) { 64 result.getException().printStackTrace(); 65 } 66 } 67 68 public void testAsyncCallbackWeatherService() throws MalformedURLException , InterruptedException { 69 final Call call = new Call(new URL ("http://live.capescience.com:80/ccx/GlobalWeather")); 70 call.setUseSOAPAction(true); 71 call.setSOAPActionURI("capeconnect:GlobalWeather:StationInfo#listCountries"); 72 call.setTimeout(new Integer (15 * 1000)); 73 call.setOperationName(new javax.xml.namespace.QName ("capeconnect:GlobalWeather:StationInfo", "listCountries")); 74 final AsyncCall ac = new AsyncCall(call, new IAsyncCallback() { 75 public void onCompletion(IAsyncResult result) { 76 Status status = result.getStatus(); 77 System.out.println(".....FINISHED"); 78 if (status == Status.COMPLETED) { 79 String [] c = (String []) result.getResponse(); 80 System.out.println(c.length); 81 for (int i = 0; i < c.length; i++) { 82 System.out.println(c[i]); 83 } 84 } else if (status == Status.EXCEPTION) { 85 result.getException().printStackTrace(); 86 } 87 synchronized (call) { 88 call.notifyAll(); 89 } 90 } 91 }); 92 IAsyncResult result = ac.invoke(new Object []{}); 93 System.out.println("STARTED...."); 94 synchronized (call) { 95 call.wait(0); 96 } 97 } 98 } 99 | Popular Tags |