package example; import uk.org.ogsadai.client.toolkit.activity.ActivityRequest; import uk.org.ogsadai.client.toolkit.activity.sql.SQLQuery; import uk.org.ogsadai.client.toolkit.ogsi.OGSIServiceFetcher; import uk.org.ogsadai.client.toolkit.service.DataService; import uk.org.ogsadai.client.toolkit.service.ServiceFetcher; /** * This example shows how to use multiple client DataServices to perform * concurrent requests. */ public class ConcurrentQueries { public static void main(String[] args) throws Exception { // the handle for the GDSF String handle = "http://localhost:8080/ogsa/services/ogsadai/" + "GridDataServiceFactory"; // create the correct servce fetcher ServiceFetcher fetcher = OGSIServiceFetcher.getInstance(); // create multiple client data services for performing each request DataService service1 = fetcher.getDataService(handle, null); DataService service2 = fetcher.getDataService(handle, null); // create threads for each concurrent request Thread thread1 = createProcessingThread( service1, "select * from littleblackbook where id=43"); Thread thread2 = createProcessingThread( service1, "select * from littleblackbook where id=76"); // start request threads thread1.start(); thread2.start(); // wait for requests to finish thread1.join(); thread2.join(); // close services service1.close(); service2.close(); } /** * Create and return a Thread to perform an SQL query using * the specified data service. * * @param service * the data service to perform the query * @param sql * the SQL query to perform using the data service * @return a new Thread object, unstarted */ public static Thread createProcessingThread( final DataService service, final String sql) { Runnable r = new Runnable() { public void run() { ActivityRequest request = new ActivityRequest(); SQLQuery query = new SQLQuery(sql); try { service.perform(query); System.out.println("Results from query: "); System.out.println(query.getOutput().getData()); } catch (Exception e) { System.out.println("Error performing query: " + sql); e.printStackTrace(); } } }; return new Thread(r); } }