Hi,
       I am using this JUnit test( example from Apache HTTP Components as 
it is ). I am sending JSON to a Netty server which is able to receive 2 
POSTS
and also send responses. I believe Netty can receive more requests but 
that might be a different issue.

Here even for the 2 POSTS that Netty receives and sends responses the 
callback methods are not called. I was thinking this unit test will 
complete and the JVM will exit. But it doesn't happen.

When does 'future.get' return ? Does it return as soon as it sends and 
receives a response ?

Since I am a new user I could be making some minor mistakes  but the code 
is able to send and the server receives the JSON.

Thanks,
Mohan

        @Test
    public void testAsyncThread() throws InterruptedException {
        // Use pool of two threads
        ExecutorService threadpool = Executors.newFixedThreadPool(2);
        Async async = Async.newInstance().use(threadpool);

 
        Request[] requests = new Request[] {
                        Request.Post("http://localhost:9090/print";
).bodyString(getJSon(), ContentType.APPLICATION_JSON),
                        Request.Post("http://localhost:9090/print";
).bodyString(getJSon(), ContentType.APPLICATION_JSON),
        };


        Queue<Future<Content>> queue = new LinkedList<Future<Content>>();
        // Execute requests asynchronously
        for (final Request request: requests) {

                Future<Content> future = async.execute(request, new 
FutureCallback<Content>() {

                public void failed(final Exception ex) {
                        logger.info(ex.getMessage() + ": " + request);
                }

                public void completed(final Content content) {
                        logger.info("Request completed: " + request);
                }

                public void cancelled() {
                        logger.info("Request cancelled: " + request);
                }

            });
            queue.add(future);
        }

        while(!queue.isEmpty()) {
            Future<Content> future = queue.remove();
            try {
 
                Content c = future.get();
                logger.info( "Response " + c.asString() );
            } catch (ExecutionException ex) {
 
                        logger.info( "ExecutionException [" + 
getExceptionAsString( ex ) + "]" );
            }
        }
        logger.info("Done");
        threadpool.shutdown();
    }


This e-Mail may contain proprietary and confidential information and is sent 
for the intended recipient(s) only.  If by an addressing or transmission error 
this mail has been misdirected to you, you are requested to delete this mail 
immediately. You are also hereby notified that any use, any form of 
reproduction, dissemination, copying, disclosure, modification, distribution 
and/or publication of this e-mail message, contents or its attachment other 
than by its intended recipient/s is strictly prohibited.

Visit us at http://www.polarisFT.com

Reply via email to