axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michele Mazzucco <Michele.Mazzu...@ncl.ac.uk>
Subject Re: [Axis2] ServiceClient error
Date Tue, 22 Aug 2006 12:23:06 GMT
Jira AXIS2-1061 created.

Regards,
Michele


On 18 Aug 2006, at 17:33, Deepal Jayasinghe wrote:

> please create a JIRA.
>
> Thanks
> Deepal
>
> Michele Mazzucco wrote:
>
>> Hi all,
>>
>> I've got some more details: the error happens because the second  
>> message
>> is sent with an empty body. The workaround is to make the thread  
>> sleep
>> for (at least) 600 ms (unfortunately this is too much for my  
>> needs). Is
>> there any reason or is it a bug? If it is not a bug, why it is not
>> documented anywhere, since the tutorial for dual channel-non blocking
>> clients [1] does not use any sleep call?
>>
>>
>> Thanks,
>> Michele
>>
>> [1] http://ws.apache.org/axis2/1_0/ 
>> userguide3.html#EchoNonBlockingDualClient
>>
>> Michele Mazzucco wrote:
>>
>>
>>> Hi all,
>>>
>>> I get a very strange error (on the client side) when I try to send
>>> multiple (equals, in my case: the submitted requests are the same  
>>> of the
>>> "echo" sample) requests to my service. The error happens *only* when
>>> multiple requests are submitted, i.e., if the program sends only 1
>>> requests no errors happen.
>>>
>>>
>>>
>>> INFO  StreamRequestMyServiceClient:main - Sending [2] requests
>>> INFO  StreamRequestMyServiceClient:send - Sent [2] requests
>>> INFO  StreamRequestMyServiceClient$QospCallback:onComplete -  
>>> Received
>>> respose [1/2]
>>> INFO  StreamRequestMyServiceClient$QospCallback:onComplete -
>>> <soapenv:Body
>>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/ 
>>> envelope/"><client:echo
>>> xmlns:client="http://org.ncl.ac.uk/qosp/clients/codestore"
>>> xmlns:tns="http://ws.apache.org/axis2"><client:Text>QoSP Echo
>>> String</client:Text></client:echo></soapenv:Body>
>>> INFO  StreamRequestMyServiceClient$QospCallback:onComplete - 1  
>>> are missing
>>> ERROR StreamRequestMyServiceClient:logException - ERROR!:
>>> ERROR StreamRequestMyServiceClient:logException -
>>> org.apache.axis2.AxisFault: unknown
>>> 	at org.apache.axis2.util.CallbackReceiver.receive 
>>> (CallbackReceiver.java:65)
>>> 	at org.apache.axis2.engine.AxisEngine.receiveFault 
>>> (AxisEngine.java:599)
>>> 	at
>>> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRe 
>>> quest(HTTPTransportUtils.java:282)
>>> 	at org.apache.axis2.transport.http.HTTPWorker.service 
>>> (HTTPWorker.java:238)
>>> 	at
>>> org.apache.axis2.transport.http.server.DefaultHttpServiceProcessor.d 
>>> oService(DefaultHttpServiceProcessor.java:177)
>>> 	at org.apache.http.protocol.HttpService.handleRequest 
>>> (HttpService.java:123)
>>> 	at
>>> org.apache.axis2.transport.http.server.DefaultHttpServiceProcessor.r 
>>> un(DefaultHttpServiceProcessor.java:236)
>>> 	at
>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor 
>>> $Worker.runTask(ThreadPoolExecutor.java:650)
>>> 	at
>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor 
>>> $Worker.run(ThreadPoolExecutor.java:675)
>>> 	at java.lang.Thread.run(Thread.java:595)
>>> Caused by: java.lang.Exception: org.apache.axis2.AxisFault
>>> 	at
>>> org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver.invokeBusines 
>>> sLogic(RawXMLINOnlyMessageReceiver.java:104)
>>> 	at
>>> org.apache.axis2.receivers.AbstractInMessageReceiver.receive 
>>> (AbstractInMessageReceiver.java:34)
>>> 	at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:503)
>>> 	at
>>> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRe 
>>> quest(HTTPTransportUtils.java:284)
>>> 	at org.apache.axis2.transport.http.AxisServlet.doPost 
>>> (AxisServlet.java:144)
>>> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
>>> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>> 	at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
>>> (ApplicationFilterChain.java:252)
>>> 	at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter 
>>> (ApplicationFilterChain.java:173)
>>> 	at
>>> org.apache.catalina.core.StandardWrapperValve.invoke 
>>> (StandardWrapperValve.java:213)
>>> 	at
>>> org.apache.catalina.core.StandardContextValve.invoke 
>>> (StandardContextValve.java:178)
>>> 	at
>>> org.apache.catalina.core.StandardHostValve.invoke 
>>> (StandardHostValve.java:126)
>>> 	at
>>> org.apache.catalina.valves.ErrorReportValve.invoke 
>>> (ErrorReportValve.java:105)
>>> 	at
>>> org.apache.catalina.core.StandardEngineValve.invoke 
>>> (StandardEngineValve.java:107)
>>> 	at
>>> org.apache.catalina.connector.CoyoteAdapter.service 
>>> (CoyoteAdapter.java:148)
>>> 	at
>>> org.apache.coyote.http11.Http11Processor.process 
>>> (Http11Processor.java:869)
>>> 	at
>>> org.apache.coyote.http11.Http11BaseProtocol 
>>> $Http11ConnectionHandler.processConnection 
>>> (Http11BaseProtocol.java:667)
>>> 	at
>>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket 
>>> (PoolTcpEndpoint.java:527)
>>> 	at
>>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt 
>>> (LeaderFollowerWorkerThread.java:80)
>>> 	at
>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run 
>>> (ThreadPool.java:684)
>>> 	at java.lang.Thread.run(Thread.java:595)
>>>
>>> 	at org.apache.axis2.AxisFault.<init>(AxisFault.java:159)
>>> 	... 10 more
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> The following chunk of code submits the requests:
>>>
>>> /**
>>> * Sends {@link #requests} requests to the cluster manager.
>>> */
>>> private final void send()  {
>>> 	final OMElement payload = ClientUtils.getEchoOMElement();
>>>
>>> 	// Creates and sets the options
>>> 	Options options = new Options();
>>>
>>> 	String routerEPR = System.getProperty("qosp.manager.epr");
>>> 	if (routerEPR == null) {
>>> 		throw new RuntimeException("Unable to get the router EPR");
>>> 	}
>>> 	routerEPR = routerEPR.concat("MyService");
>>> 	options.setTo(new EndpointReference(routerEPR));
>>>
>>>
>>> 	options.setAction("urn:echo");
>>> 	// The boolean flag informs the axis2 engine to use two separate
>>> 	// transport connection to retrieve the response.
>>> 			options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
>>> 		options.setUseSeparateListener(true);
>>> 		options.setSoapVersionURI 
>>> (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
>>>
>>> 	ServiceClient sender = null;
>>> 	try {
>>> 		sender = new ServiceClient();
>>> 				sender.engageModule(RoutingConstants.MODULE_ADDRESSING);
>>> 			sender.setOptions(options);
>>>
>>> 		QospCallback callback = new QospCallback();
>>> 		for (int i = 0; i < this.requests.get(); i++) {
>>> 			sender.sendReceiveNonBlocking(payload, callback);
>>> 		}
>>>
>>> 		if (log.isInfoEnabled()) {
>>> 			log.info("Sent [" + this.requests.get() + "] requests");
>>> 			}
>>>
>>> 		// Wait till the callback receives the response.
>>> 		while (!callback.isComplete()) {
>>> 			try {
>>> 				Thread.sleep(1000);
>>> 			} catch (InterruptedException e) {
>>> 				//
>>> 			}
>>> 		}
>>>
>>> 		} catch (AxisFault e) {
>>> 			if (log.isEnabledFor(Level.ERROR)) {
>>> 				logException(e);
>>> 			}
>>> 		} finally{
>>> 			try {
>>> 				if (sender != null)
>>> 					sender.finalizeInvoke();
>>> 			} catch (AxisFault axisFault) {
>>> 				//
>>> 			}
>>> 		}
>>>
>>> 	}	//-- send()
>>>
>>> while this is the callback object used to retrieve asynchronous  
>>> responses:
>>>
>>>
>>>
>>> /**
>>> * Sets the completion status.
>>> *
>>> * @param complete	The completion status.
>>> */
>>> @Override
>>> public void setComplete(boolean complete) {
>>> 	super.setComplete((requests.decrementAndGet() == 0));
>>> }	//-- setComplete()
>>>
>>>
>>> /**
>>> * Gets the completion status.
>>> *
>>> * @return	The completion status.
>>> */
>>> @Override
>>> public boolean isComplete() {
>>> 	return (requests.get() == 0);
>>> }	//-- isComplete()
>>>
>>> /**
>>> * Handles asynchronous results.
>>> *
>>> * @param result The asynchronous result.
>>> */
>>> @Override
>>> public void onComplete(AsyncResult result) {
>>> 	this.setComplete(true);
>>> 	if (log.isInfoEnabled()) {
>>> 		log.info("Received respose [" + (++ this.success)
>>> 		+ "/" + this.toReceive + "]");
>>> 				log.info(result.getResponseEnvelope().getBody().toString());
>>> 	}
>>> 	if (this.isComplete()) {
>>> 		log.info("All requests are complete");
>>> 	} else {
>>> 		log.info(requests.get() + " are missing");
>>> 	}			
>>> }	//-- onComplete()
>>>
>>> /**
>>> * Handles asynchronous errors.
>>> *
>>> * @param e	The exception.
>>> */
>>> @Override
>>> public void onError(Exception e) {
>>> 	if (log.isEnabledFor(Level.ERROR)) {
>>> 		logException(e);
>>> 	}
>>> }	//-- onError()
>>>
>>>
>>>
>>>
>>> Any idea?
>>>
>>> Thanks in advance,
>>> Michele
>>>
>>> -------------------------------------------------------------------- 
>>> -
>>> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>>> For additional commands, e-mail: axis-user-help@ws.apache.org
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-user-help@ws.apache.org
>>
>>
>>
>>
>>
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Mime
View raw message