Michele, have you checked with a SOAP monitor if the message you are waiting for has been sent from the server? Then you know if it is a server or a client problem.
If it is a client problem you can try to make your thread pool have a size of 1 to see if there still is some kind of dead lock. I have checked the source code for the org.apache.commons.httpclient classes and found that it would take a while for me to find bugs there. But if you have a lot of time I guess it is a way. /Pär > From: [EMAIL PROTECTED] > Subject: Re: [axis2] ServiceClient.sendReceive blocks application forever > Date: Wed, 23 Jan 2008 10:48:02 +0000 > To: [email protected] > > Pär, > > what you said makes me think that maybe the cause is that the system > "blocks" when all connections are busy. Does it make any sense? > > > Michele > > On 23 Jan 2008, at 10:19, Pär Malmqvist wrote: > > > Hi Michele! > > > > I have seen the same the same thing with a simple client when an > > exception is thrown from the server. > > I posted the issue here on the axis list ago. > > > > I found that when using configurationContext.setProperty > > (HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE); > > the client hangs. When FALSE it works fine. > > > > Can you try to use use HTTPConstants.REUSE_HTTP_CLIENT = > > Boolean.FALSE and se what happens? > > It would be interesting to know. > > > > /Pär > > > > > > > > > > > > > > > Subject: [axis2] ServiceClient.sendReceive blocks application > > forever > > > From: [EMAIL PROTECTED] > > > To: [email protected] > > > Date: Tue, 22 Jan 2008 17:14:12 +0000 > > > > > > Hi all, > > > > > > after some calls to ServiceClient.sendReceive() my client app. > > blocks > > > forever. On the server side there are no error messages, the same > > on the > > > client. > > > By using jstack I've found out that my client blocks on > > sendReceive(), > > > however the target operation is very fast > > > > > > Here is the output of jstack > > > > > > Full thread dump Java HotSpot(TM) Server VM (1.6.0_03-b05 mixed > > mode): > > > > > > "Attach Listener" daemon prio=10 tid=0x08790800 nid=0x32bf runnable > > > [0x00000000..0x00000000] > > > java.lang.Thread.State: RUNNABLE > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "Axis2 Task" daemon prio=10 tid=0x08762800 nid=0x3261 in > > Object.wait() > > > [0x8240d000..0x8240e030] > > > java.lang.Thread.State: WAITING (on object monitor) > > > at java.lang.Object.wait(Native Method) > > > - waiting on <0x85b10070> (a > > > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager > > > $ConnectionPool) > > > at > > > > > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.doGet > > Connection(MultiThreadedHttpConnectionManager.java:509) > > > - locked <0x85b10070> (a > > > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager > > > $ConnectionPool) > > > at > > > > > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.getCo > > nnectionWithTimeout(MultiThreadedHttpConnectionManager.java:394) > > > at > > > org.apache.commons.httpclient.HttpMethodDirector.executeMethod > > (HttpMethodDirector.java:152) > > > at > > > org.apache.commons.httpclient.HttpClient.executeMethod > > (HttpClient.java:396) > > > at > > > org.apache.commons.httpclient.HttpClient.executeMethod > > (HttpClient.java:346) > > > at > > > org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod > > (AbstractHTTPSender.java:520) > > > at > > > org.apache.axis2.transport.http.HTTPSender.sendViaPost > > (HTTPSender.java:191) > > > at > > > org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:77) > > > at > > > > > org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessag > > eWithCommons(CommonsHTTPTransportSender.java:327) > > > at > > > org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke > > (CommonsHTTPTransportSender.java:206) > > > at org.apache.axis2.engine.AxisEngine > > > $TransportNonBlockingInvocationWorker.run(AxisEngine.java:516) > > > at > > > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor > > > $Worker.runTask(ThreadPoolExecutor.java:665) > > > at > > > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor > > > $Worker.run(ThreadPoolExecutor.java:690) > > > at java.lang.Thread.run(Thread.java:619) > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "HttpListener-11000-1" prio=10 tid=0x08761c00 nid=0x3260 runnable > > > [0x8245e000..0x8245efb0] > > > java.lang.Thread.State: RUNNABLE > > > at java.net.PlainSocketImpl.socketAccept(Native Method) > > > at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) > > > - locked <0x85b10430> (a java.net.SocksSocketImpl) > > > at java.net.ServerSocket.implAccept(ServerSocket.java:453) > > > at java.net.ServerSocket.accept(ServerSocket.java:421) > > > at > > > > > org.apache.axis2.transport.http.server.DefaultConnectionListener.run > > (DefaultConnectionListener.java:79) > > > at > > > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor > > > $Worker.runTask(ThreadPoolExecutor.java:665) > > > at > > > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor > > > $Worker.run(ThreadPoolExecutor.java:690) > > > at java.lang.Thread.run(Thread.java:619) > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "MultiThreadedHttpConnectionManager cleanup" daemon prio=10 > > > tid=0x08758000 nid=0x325f in Object.wait() [0x824af000..0x824b0130] > > > java.lang.Thread.State: TIMED_WAITING (on object monitor) > > > at java.lang.Object.wait(Native Method) > > > - waiting on <0x85b10610> (a java.lang.ref.ReferenceQueue$Lock) > > > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116) > > > - locked <0x85b10610> (a java.lang.ref.ReferenceQueue$Lock) > > > at > > > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager > > > $ReferenceQueueThread.run(MultiThreadedHttpConnectionManager.java: > > 1082) > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "DestroyJavaVM" prio=10 tid=0x0805a800 nid=0x3251 waiting on > > condition > > > [0x00000000..0xb7e3b080] > > > java.lang.Thread.State: RUNNABLE > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "pool-1-thread-1" prio=10 tid=0x0863cc00 nid=0x325e in Object.wait() > > > [0x82500000..0x825010b0] > > > java.lang.Thread.State: WAITING (on object monitor) > > > at java.lang.Object.wait(Native Method) > > > - waiting on <0x85b10070> (a > > > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager > > > $ConnectionPool) > > > at > > > > > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.doGet > > Connection(MultiThreadedHttpConnectionManager.java:509) > > > - locked <0x85b10070> (a > > > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager > > > $ConnectionPool) > > > at > > > > > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.getCo > > nnectionWithTimeout(MultiThreadedHttpConnectionManager.java:394) > > > at > > > org.apache.commons.httpclient.HttpMethodDirector.executeMethod > > (HttpMethodDirector.java:152) > > > at > > > org.apache.commons.httpclient.HttpClient.executeMethod > > (HttpClient.java:396) > > > at > > > org.apache.commons.httpclient.HttpClient.executeMethod > > (HttpClient.java:346) > > > at > > > org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod > > (AbstractHTTPSender.java:520) > > > at > > > org.apache.axis2.transport.http.HTTPSender.sendViaPost > > (HTTPSender.java:191) > > > at > > > org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:77) > > > at > > > > > org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessag > > eWithCommons(CommonsHTTPTransportSender.java:327) > > > at > > > org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke > > (CommonsHTTPTransportSender.java:206) > > > at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:396) > > > at > > > org.apache.axis2.description.OutInAxisOperationClient.send > > (OutInAxisOperation.java:374) > > > at > > > org.apache.axis2.description.OutInAxisOperationClient.executeImpl > > (OutInAxisOperation.java:211) > > > at > > > org.apache.axis2.client.OperationClient.execute > > (OperationClient.java:163) > > > at > > > org.apache.axis2.client.ServiceClient.sendReceive > > (ServiceClient.java:528) > > > at > > > org.apache.axis2.client.ServiceClient.sendReceive > > (ServiceClient.java:508) > > > at > > > ncl.qosp.test.client.streams.delayed.Sender.sendAddStreamMsg > > (Sender.java:215) > > > at > > > ncl.qosp.test.client.streams.delayed.Sender.init(Sender.java:157) > > > at > > > ncl.qosp.test.client.streams.delayed.QueueController.addStream > > (QueueController.java:262) > > > at > > > ncl.qosp.test.client.streams.delayed.QueueController.execute > > (QueueController.java:151) > > > at > > > ncl.qosp.test.client.streams.delayed.QueueController.run > > (QueueController.java:182) > > > at java.util.concurrent.ThreadPoolExecutor > > > $Worker.runTask(ThreadPoolExecutor.java:885) > > > at java.util.concurrent.ThreadPoolExecutor > > > $Worker.run(ThreadPoolExecutor.java:907) > > > at java.lang.Thread.run(Thread.java:619) > > > > > > Locked ownable synchronizers: > > > - <0x85b215a0> (a java.util.concurrent.locks.ReentrantLock > > > $NonfairSync) > > > > > > "Timer-1" daemon prio=10 tid=0x08566800 nid=0x325d in Object.wait() > > > [0x8255b000..0x8255be30] > > > java.lang.Thread.State: TIMED_WAITING (on object monitor) > > > at java.lang.Object.wait(Native Method) > > > - waiting on <0x85b10950> (a java.util.TaskQueue) > > > at java.util.TimerThread.mainLoop(Timer.java:509) > > > - locked <0x85b10950> (a java.util.TaskQueue) > > > at java.util.TimerThread.run(Timer.java:462) > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "Timer-0" daemon prio=10 tid=0x086bb000 nid=0x325c in Object.wait() > > > [0x825ad000..0x825addb0] > > > java.lang.Thread.State: TIMED_WAITING (on object monitor) > > > at java.lang.Object.wait(Native Method) > > > - waiting on <0x85cb1348> (a java.util.TaskQueue) > > > at java.util.TimerThread.mainLoop(Timer.java:509) > > > - locked <0x85cb1348> (a java.util.TaskQueue) > > > at java.util.TimerThread.run(Timer.java:462) > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "Low Memory Detector" daemon prio=10 tid=0x08115c00 nid=0x325a > > runnable > > > [0x00000000..0x00000000] > > > java.lang.Thread.State: RUNNABLE > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "CompilerThread1" daemon prio=10 tid=0x08114400 nid=0x3259 > > waiting on > > > condition [0x00000000..0x8291d5c8] > > > java.lang.Thread.State: RUNNABLE > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "CompilerThread0" daemon prio=10 tid=0x08112c00 nid=0x3258 > > waiting on > > > condition [0x00000000..0x8299e548] > > > java.lang.Thread.State: RUNNABLE > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "Signal Dispatcher" daemon prio=10 tid=0x08111800 nid=0x3257 > > runnable > > > [0x00000000..0x829efe10] > > > java.lang.Thread.State: RUNNABLE > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "Surrogate Locker Thread (CMS)" daemon prio=10 tid=0x08110800 > > nid=0x3256 > > > waiting on condition [0x00000000..0x82a4129c] > > > java.lang.Thread.State: RUNNABLE > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "Finalizer" daemon prio=10 tid=0x080fcc00 nid=0x3255 in > > Object.wait() > > > [0x82ad3000..0x82ad3e30] > > > java.lang.Thread.State: WAITING (on object monitor) > > > at java.lang.Object.wait(Native Method) > > > - waiting on <0x85cb1328> (a java.lang.ref.ReferenceQueue$Lock) > > > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116) > > > - locked <0x85cb1328> (a java.lang.ref.ReferenceQueue$Lock) > > > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132) > > > at java.lang.ref.Finalizer > > > $FinalizerThread.run(Finalizer.java:159) > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "Reference Handler" daemon prio=10 tid=0x080fc400 nid=0x3254 in > > > Object.wait() [0x82b24000..0x82b24db0] > > > java.lang.Thread.State: WAITING (on object monitor) > > > at java.lang.Object.wait(Native Method) > > > - waiting on <0x85cb13d8> (a java.lang.ref.Reference$Lock) > > > at java.lang.Object.wait(Object.java:485) > > > at java.lang.ref.Reference > > > $ReferenceHandler.run(Reference.java:116) > > > - locked <0x85cb13d8> (a java.lang.ref.Reference$Lock) > > > > > > Locked ownable synchronizers: > > > - None > > > > > > "VM Thread" prio=10 tid=0x080f9800 nid=0x3253 runnable > > > > > > "Concurrent Mark-Sweep GC Thread" prio=10 tid=0x0806cc00 nid=0x3252 > > > runnable > > > "VM Periodic Task Thread" prio=10 tid=0x08117400 nid=0x325b > > waiting on > > > condition > > > > > > JNI global references: 771 > > > > > > > > > > > > This is the sendAddStreamMsg > > > > > > /** > > > * Sends the specified addStream message. > > > * > > > * @return The cookie. > > > * @throws AxisFault If an error occurs or if the stream was not > > > accepted. > > > */ > > > private final long sendAddStreamMsg(OMElement payload) throws > > > AxisFault { > > > Options options = new Options(); > > > options.setTransportInProtocol(Constants.TRANSPORT_HTTP); > > > options.setCallTransportCleanup(true); > > > options.setTo(StreamClient.getRouterEpr()); > > > options.setAction(TestConstants.ADD_STREAM_SOAP_ACTION); > > > > > > options.setSoapVersionURI > > (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI); > > > options.setProperty(HTTPConstants.CHUNKED, Boolean.FALSE); > > > > > > this.sender.setOptions(options); > > > OMElement result = sender.sendReceive(payload); // line 215 > > > > > > final long cookie = Long.valueOf(result.getText()); > > > if (log.isDebugEnabled()) { > > > StringBuilder sb = new StringBuilder("Worker "); > > > sb.append(getService()); > > > sb.append(", worker "); > > > sb.append(this.id); > > > sb.append(" received cookie "); > > > sb.append(cookie); > > > log.debug(sb.toString()); > > > } > > > return cookie; > > > } > > > > > > > > > The sender field is a global variable (it's used to accomplish > > > asynchronous operations as well) which is initialized inside the > > > constructor with > > > > > > sender = new ServiceClient(getParams().configurationContext, null); > > > synchronized (ENGAGE_MODULE_LOCK) { > > > sender.engageModule(Constants.MODULE_ADDRESSING); > > > } > > > > > > Finally, the custom configuration context is the following: > > > > > > configurationContext = ConfigurationContextFactory > > > .createConfigurationContextFromFileSystem(axis2Home > > > .concat("/repository"), "bin/ncl/qosp/test/client/axis2.xml"); > > > > > > > > > connectionManager = new MultiThreadedHttpConnectionManager(); > > > HttpConnectionManagerParams connectionManagerParams = new > > > HttpConnectionManagerParams(); > > > // 10 seconds > > > connectionManagerParams.setConnectionTimeout(10000); > > > connectionManagerParams.setMaxConnectionsPerHost( > > > HostConfiguration.ANY_HOST_CONFIGURATION, 5); > > > connectionManagerParams.setDefaultMaxConnectionsPerHost(3); > > > connectionManagerParams.setMaxTotalConnections(100); > > > connectionManagerParams.setTcpNoDelay(true); > > > connectionManagerParams.setStaleCheckingEnabled(true); > > > connectionManagerParams.setLinger(-1); > > > > > > HttpClient httpClient = new HttpClient(connectionManager); > > > > > > try { > > > configurationContext.setThreadPool(new ThreadPool(1, 5)); > > > } catch (AxisFault e) { > > > System.err.println("Unable to set the thread pool"); > > > } > > > > > > configurationContext.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, > > > Boolean.TRUE); > > > configurationContext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, > > > httpClient); > > > > > > > > > I attach the axis2.xml. > > > > > > > > > > > > Does anybody know what's going on? > > > > > > > > > Thanks in advance, > > > Michele > > > > Express yourself instantly with MSN Messenger! MSN Messenger > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
