Hello:

I'm using Apache CXF 2.7.8 and I've got a questions about asynchronous
invocation:


1) When I use a standalone client with the next code :

//
 Future<?> future = client.sendAsync(request, new EmailAsyncHandler());

 while (!future.isDone())
 {
     System.out.println("Waiting ...");

}
System.out.println("Done");


the JVM process never is finished although "Done" log is printed

About jvisualm , there is a thread running

java.lang.Thread.State: RUNNABLE
at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:273)
at 
sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:255)
at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:136)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
- locked <0x23f296c8> (a sun.nio.ch.Util$2)
- locked <0x23f296d8> (a java.util.Collections$UnmodifiableSet)
- locked <0x23f29650> (a sun.nio.ch.WindowsSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
at 
org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:366)
at 
org.apache.cxf.transport.http.asyncclient.AsyncHTTPConduitFactory$1.run(AsyncHTTPConduitFactory.java:340)
at java.lang.Thread.run(Thread.java:662)

I know that I can do System.exit(0) , but I wonder why if Future
object is done , Thread is not finished. What is the reason ? How I
can finish this thread ? Could be a problem if asynchronous client is
executed in a web container ?



2) I'm using @UseAsyncMethod annotation in synchronous method signature like

@UseAsyncMethod
public EmailResponse send(EmailRequest emailRequest)

but asynchronous implementation like

public Future<?> sendAsync(EmailRequest emailRequest,
AsyncHandler<EmailResponseWrapper> sendHandler)

is never invoked , did I forget something ?

I using cxf-rt-transports-http-hc module


Thanks and regards

Reply via email to