cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jorge Vaquero (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-4149) org.apache.cxf.endpoint.ClientImpl raises
Date Fri, 02 Mar 2012 06:51:00 GMT

    [ https://issues.apache.org/jira/browse/CXF-4149?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13220736#comment-13220736
] 

Jorge Vaquero commented on CXF-4149:
------------------------------------

Thank you for your support Daniel. I think that your are right I'm getting the Proxy to set
the timeout and after the execution of the method is not used anymore.

This is the code of the invocation, there are two different more like this:

	private static Response<org.ensure.configLayer.service.cost.jaxws.GetGlobalPreservationPlanEvaluationResponse>
 invokeCostModule(DataHandler globalPreservationPlan, RequirementSet requirementSet) {	
		
		QName serviceName = new QName("http://cost.servicequalityfigLayer.ensure.org/", "CostEngineImplService");
		QName portName = new QName("http://cost.service.configLayer.ensure.org/", "CostEngineImplPort");

		Service service = Service.create(serviceName);
		service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING,
				"http://" + costEngineWSHost + ":" + costEngineWSPort + "/CostEngineWS/services/CostEngineWSImplPort");

		org.ensure.configLayer.service.cost.CostEngineWS client = service.getPort(portName,  org.ensure.configLayer.service.cost.CostEngineWS.class);

		org.apache.cxf.endpoint.Client clientProxy = ClientProxy.getClient(client);
	
		// Enabling MTOM on client
		ServiceUtil.setMTOMEnabled(((BindingProvider)client));
		
		// Setting a wider connection timeout for asynchronous communications
		ServiceUtil.setHTTPAsyncTimeout((HTTPConduit) clientProxy.getConduit());

		System.out.println("Invoking getGlobalPreservationPlanEvaluationAsync using polling...");
   
		
		Response<org.ensure.configLayer.service.cost.jaxws.GetGlobalPreservationPlanEvaluationResponse>
response;
		
		try{
			response = client.getGlobalPreservationPlanEvaluationAsync(globalPreservationPlan, requirementSet);
		}catch (Exception e) {
			e.printStackTrace();
			LogUtils.printStackTrace(log, e);
			return null;
		}
		
		return response;
	}

And this is the invocation to the three operations in parallel with polling (I have tried
doing the three invocations sequentially and it happens but with far less frequency). The
method below is executed N times:

		Response<org.ensure.configLayer.service.cost.jaxws.GetGlobalPreservationPlanEvaluationResponse>
costEvaluationReply= null;			
		Response<org.ensure.configLayer.service.quality.jaxws.GetGlobalPreservationPlanEvaluationResponse>
qualityEvaluationReply = null;			
		Response<org.ensure.configLayer.service.economicPerformance.jaxws.GetGlobalPreservationPlanEvaluationResponse>
 economicPerformanceReply = null;
		
		org.ensure.configLayer.service.cost.jaxws.GetGlobalPreservationPlanEvaluationResponse costEvaluationReplyRes
= null;			
		org.ensure.configLayer.service.quality.jaxws.GetGlobalPreservationPlanEvaluationResponse
qualityEvaluationReplyRes = null;			
		org.ensure.configLayer.service.economicPerformance.jaxws.GetGlobalPreservationPlanEvaluationResponse
economicPerformanceReplyRes = null;


--------------


				costEvaluationReply = 		invokeCostModule(globalPreservationPlanDataHandler, requirementSet);
				qualityEvaluationReply = 	invokeQualityModule(globalPreservationPlanDataHandler, requirementSet);
				economicPerformanceReply = 	invokeEconomicPerformanceModule(globalPreservationPlanDataHandler,
requirementSet);
			}catch (Exception e) {
				e.printStackTrace();
				LogUtils.printStackTrace(log, e);
				return EError.getUnknownError(InternalModule.PRESERVATION_PLAN_OPTIMIZER);
			}
			
			// Polling method
			if (costEvaluationReply != null && qualityEvaluationReply != null && economicPerformanceReply!=
null){
				int i = 0;
				while (	!costEvaluationReply.isDone()|| !qualityEvaluationReply.isDone() || !economicPerformanceReply.isDone())
{
					try {
						Thread.sleep(Constants.POLLING_INTERVAL);
					} catch (InterruptedException e) {
						e.printStackTrace();
						LogUtils.printStackTrace(log, e);
					}
					i+= Constants.POLLING_INTERVAL/1000;
					System.out.println("Waiting..." + i + " seconds");
				}
			}else{
				log.error("invokeAnalysisModules => Error invoking WSs");
				return EError.getUnknownError(InternalModule.PRESERVATION_PLAN_OPTIMIZER);
			}
				
			try {

			
				costEvaluationReplyRes = costEvaluationReply.get();
				qualityEvaluationReplyRes = qualityEvaluationReply.get();
				economicPerformanceReplyRes = economicPerformanceReply.get();


This code is executed iteratively, it some iterations it works in others raised the exception.

Kind regards,

Jorge.
                
> org.apache.cxf.endpoint.ClientImpl raises 
> ------------------------------------------
>
>                 Key: CXF-4149
>                 URL: https://issues.apache.org/jira/browse/CXF-4149
>             Project: CXF
>          Issue Type: Bug
>          Components: Bus
>    Affects Versions: 2.4.4, 2.4.6, 2.5.2
>         Environment: Eclipse Helios, Tomcat 6, JDK 1.6, Windows 7
>            Reporter: Jorge Vaquero
>            Assignee: Daniel Kulp
>            Priority: Critical
>
> When invoking several different web services asynchronously a NullPointerException is
raised. The web services were invoked firstly in parallel later sequentially. The issue occurs
more frequently when the web services are executed in parallel.
> Apparently the issue is at ClientImpl line 715 in version 2.4.4. I've debugged the issue
and in some executions bus is null on method onMessage:
>     public void onMessage(Message message) {
>         Endpoint endpoint = message.getExchange().getEndpoint();
>         if (endpoint == null) {
>             // in this case correlation will occur outside the transport,
>             // however there's a possibility that the endpoint may have been
>             // rebased in the meantime, so that the response will be mediated
>             // via a set of in interceptors provided by a *different* endpoint
>             //
>             endpoint = getConduitSelector().getEndpoint();
>             message.getExchange().put(Endpoint.class, endpoint);
>         }
>         message = endpoint.getBinding().createMessage(message);
>         message.getExchange().setInMessage(message);
>         message.put(Message.REQUESTOR_ROLE, Boolean.TRUE);
>         message.put(Message.INBOUND_MESSAGE, Boolean.TRUE);
> ===>    PhaseManager pm = bus.getExtension(PhaseManager.class);
> This is the exception raised:
> GRAVE: ExecutionException
> java.util.concurrent.ExecutionException: java.lang.NullPointerException
> 	at org.apache.cxf.endpoint.ClientCallback.get(ClientCallback.java:147)
> 	at org.apache.cxf.jaxws.JaxwsResponseCallback.get(JaxwsResponseCallback.java:49)
> 	at org.ensure.configLayer.planningLayer.services.PreservationPlanOptimizer.PreservationPlanOptimizer.invokeAnalysisModules(PreservationPlanOptimizer.java:382)
> 	at org.ensure.configLayer.planningLayer.services.PreservationPlanOptimizer.PreservationPlanOptimizer.getOptimizedGlobalPreservationPlans(PreservationPlanOptimizer.java:166)
> 	at org.ensure.configLayer.test.planningLayer.PreservationPlanOptimizer.tester.Tester.main(Tester.java:37)
> Caused by: java.lang.NullPointerException
> 	at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:715)
> 	at org.apache.cxf.endpoint.ClientImpl$1.onMessage(ClientImpl.java:890)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1626)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:1498)
> 	at java.lang.Thread.run(Unknown Source)
> Kind regards,
> Jorge.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message