/** * Initialize it with assigning it a new ControlContext and a defaultMethod with serviceType as * "sorcer.core.provider.jobber.ServiceJobber" name as "service" and providerName "*" * * @throws sorcer.service.SignatureException */ private void init() { NetSignature s = new NetSignature("service", Jobber.class); // Needs to be RemoteJobber for Cataloger to find it // s.setServiceType(Jobber.class.getName()); s.setProviderName(null); s.setType(Signature.Type.SRV); signatures.add(s); // Add the signature }
// Made private so that other classes just calls execExertion and not // execTask private void execTask(NetTask task) throws ExertionException, SignatureException { logger.log(Level.INFO, "start executing task"); try { Service provider = ProviderAccessor.getProvider( task.getProcessSignature().getProviderName(), task.getServiceType()); logger.log(Level.INFO, "got a provider:" + provider); if (provider == null) { String msg = null; // get the PROCESS Method and grab provider name + interface NetSignature method = (NetSignature) task.getProcessSignature(); msg = "No Provider available. Provider Name: " + method.getProviderName() + " Provider interface: " + method.getServiceType(); System.err.println(msg); throw new ExertionException(msg, task); } else { // setTaskProvider(task, provider.getProviderName()); logger.log(Level.INFO, "Servicing task now .............."); MonitoringSession session = (MonitoringSession) (task.getMonitorSession()); session.init((Monitorable) provider, LEASE_RENEWAL_PERIOD, DEFAULT_TIMEOUT_PERIOD); lrm.renewUntil(session.getLease(), Lease.ANY, null); task.setService(provider); provider.service(task, null); } } catch (RemoteException re) { re.printStackTrace(); logger.log(Level.SEVERE, "dispatcher execution failed for task: " + task); throw new ExertionException("Remote Exception while executing task"); } catch (MonitorException mse) { mse.printStackTrace(); logger.log(Level.SEVERE, "dispatcher execution failed for task: " + task); throw new ExertionException("Remote Exception while executing task"); } catch (TransactionException te) { te.printStackTrace(); logger.log(Level.SEVERE, "dispatcher execution failed for task: " + task); throw new ExertionException("Remote Exception while executing task"); } }