001    package com.basilv.examples.rmi;
002    
003    
004    import java.rmi.Naming;
005    
006    public class TaskExecutorClient {
007    
008        public static void main(String[] args) throws Exception {
009    
010            String host = "localhost";
011            int portNumber = 1099;
012            String lookupName = "//" + host + ":" + portNumber + "/" + TaskExecutorServer.REGISTRY_NAME;
013            RemoteTaskExecutor executor = (RemoteTaskExecutor) Naming.lookup(lookupName);
014    
015            long currentTimeMillis = System.currentTimeMillis();
016            System.out.println("Requesting task execution for " + currentTimeMillis);
017            Object result = executor.executeTask(new TestTask(), currentTimeMillis);
018            System.out.println("Task executed for " + result);
019            
020        }
021        
022        public static class TestTask implements Task {
023    
024            public Object execute(Object argument) {
025                System.out.println("Executing task for " + argument +
026                    " thread id = " + Thread.currentThread().getId());
027                try {
028                    Thread.sleep(10000);
029                } catch (InterruptedException e) {
030                    // Do nothing.
031                }
032                System.out.println("Executed task for " + argument);
033                return argument;
034            }
035            
036        }
037    }