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/

Reply via email to