cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel Kulp (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-6354) NullPointer exception in cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:719)
Date Mon, 27 Mar 2017 18:49:42 GMT

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

Daniel Kulp commented on CXF-6354:
----------------------------------

We need a test case for this.

In general, the beans shouldn't be used until the spring context is completely up and running.
   Not sure what you are doing that is causing that to not be the case.

> NullPointer exception in cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:719)
> -------------------------------------------------------------------------------
>
>                 Key: CXF-6354
>                 URL: https://issues.apache.org/jira/browse/CXF-6354
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime
>    Affects Versions: 2.7.2
>            Reporter: Sanjeet Karamchandani
>            Priority: Critical
>             Fix For: NeedMoreInfo
>
>
> Updated: Please see the comments. This is caused due to a deadlock.
> Overall since DefaultSingletonBeanRegistry is being called from main thread and CXF tries
to use it in a seperate thread, it causes deadlock.
> See the comments:
> https://jira.spring.io/browse/SPR-8471
> --------------------
> I have a requirement where I need to move a webservice call to a seperate thread so that
I could retry if it doesn't complete within a time limit. To achieve I moved my webservice
call to a futuretask and in my main thread I am doing a task.get(timeout). A webservice call
that is normally completed in few miliseconds doesn't complete even after 10 mins if I move
it into a seperate thread.
> Is there a problem with CXF. I am getting a NullPointer exception around the cxf.endpoint.ClientImpl.onMessage()
call. Stacktrace at the end.
> Please help as I am stuck with no clues.
> I am including the code thats causing problems only when I move the call in a seperate
thread.
> {code:java}
> @Override
> 	public IRuleSet loadRuleSet(String ruleSetName) throws RulesEngineException {
> 		IRuleSet ruleSet=null;
> 		ExecutorService executor = Executors.newFixedThreadPool(1);
> 		
> 		for (IRuleSetLoader ruleSetLoader : loaders) {
> 			try {
> 				FutureTask<IRuleSet> task = new FutureTask<IRuleSet>(new LoaderTask(ruleSetLoader,
ruleSetName));
> 				executor.submit(task);
> 				
> 				long timeout=30;
> 				try{			
> 					ruleSet = task.get(timeout, TimeUnit.SECONDS);
> 				}catch(Exception e) {
> 					LOGGER.info("202::Exception", e);
> 				}
>                                 // if  I uncomment the below call and comment the above
task submit it works perfectly fine.
> 				//ruleSet = ruleSetLoader.loadRuleSet(ruleSetName);
> 				if (ruleSet != null){
> 					return ruleSet;
> 				}else {
> 					ruleSet = ruleSetLoader.loadRuleSet(ruleSetName);
> 				}
> 			} catch (Exception e) {
> 				LOGGER.info("Failed to load rule set " + ruleSetName + " using ruleSetLoader:" +
ruleSetLoader.getClass(), e);
> 			}
> 		}
> 		throw new RulesEngineException("Unable to load RuleSet " + ruleSetName);
> 	}
> private final static class LoaderTask implements Callable<IRuleSet> {
> 		private final IRuleSetLoader ruleSetLoader;
> 		private final String ruleSetName;
> 		private LoaderTask(IRuleSetLoader ruleSetLoader, String ruleSetName) {
> 			this.ruleSetLoader = ruleSetLoader;
> 			this.ruleSetName = ruleSetName;
> 		}
> 		@Override
> 		public IRuleSet call() throws Exception {
> 			LOGGER.info("Starting task.");
> 			IRuleSet ruleSet=null;
> 			
> 			try {
>                                 //webservice call
> 				ruleSet = ruleSetLoader.loadRuleSet(ruleSetName);
> 				
> 			} catch (Exception e) {
> 				LOGGER.info("101::Exception encountered", e);				
> 			}			
> 			
> 			return ruleSet;
> 		}		
> 		
> 	}
> {code}
> {code}
> // stacktrace
> 17:41:50.940 [pool-3-thread-1] WARN  o.a.c.p.PhaseInterceptorChain - Interceptor for
{http://readonly.webservice.rulesengine.tbea.jpm.com/}IRulesEngineReadOnlyWebServiceService#{http://readonly.webservice.rulesengine.tbea.jpm.com/}getRuleSet
has thrown exception, unwinding now
> java.lang.NullPointerException: NullPointerException invoking http://psie0p111.svr.emea.jpmchase.net:17190/rules-engine-web/5/rulesEngineReadOnlyWebService:
null
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.7.0_67]
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
~[na:1.7.0_67]
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
~[na:1.7.0_67]
> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_67]
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1336)
~[cxf-rt-transports-http-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1325)
~[cxf-rt-transports-http-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.io.AbstractWrappedOutputStream.close(AbstractWrappedOutputStream.java:77)
~[cxf-api-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.io.AbstractThresholdOutputStream.close(AbstractThresholdOutputStream.java:102)
~[cxf-api-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:50)
~[cxf-api-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:229) ~[cxf-api-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) ~[cxf-api-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:622) ~[cxf-rt-transports-http-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
~[cxf-api-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
~[cxf-api-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530) [cxf-api-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463) [cxf-api-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366) [cxf-api-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319) [cxf-api-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96) [cxf-rt-frontend-simple-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:133) [cxf-rt-frontend-jaxws-2.7.2.jar:2.7.2]
> 	at com.sun.proxy.$Proxy75.getRuleSet(Unknown Source) [na:na]
> 	at com.jpm.tbea.rulesengine.core.load.impl.WebServiceRuleSetLoader.loadRuleSet(WebServiceRuleSetLoader.java:35)
[classes/:na]
> 	at com.jpm.tbea.rulesengine.core.load.impl.JanusAuthenticatedWebServiceRuleSetLoader.loadRuleSet(JanusAuthenticatedWebServiceRuleSetLoader.java:67)
[classes/:na]
> 	at com.jpm.tbea.rulesengine.core.load.impl.FailoverRuleSetLoader$LoaderTask.call(FailoverRuleSetLoader.java:124)
[classes/:na]
> 	at com.jpm.tbea.rulesengine.core.load.impl.FailoverRuleSetLoader$LoaderTask.call(FailoverRuleSetLoader.java:1)
[classes/:na]
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_67]
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_67]
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_67]
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_67]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_67]
> 	at java.lang.Thread.run(Thread.java:745) [na:1.7.0_67]
> Caused by: java.lang.NullPointerException: null
> 	at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:719) [cxf-api-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1590)
~[cxf-rt-transports-http-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1488)
~[cxf-rt-transports-http-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1307)
~[cxf-rt-transports-http-2.7.2.jar:2.7.2]
> 	... 25 common frames omitted
> 17:41:50.941 [pool-3-thread-1] INFO  c.j.t.r.c.l.i.FailoverRuleSetLoader - 101::Exception
encountered
> java.lang.NullPointerException: null
> 	at org.apache.cxf.jaxws.JaxWsClientProxy.addressChanged(JaxWsClientProxy.java:248) ~[cxf-rt-frontend-jaxws-2.7.2.jar:2.7.2]
> 	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:166) ~[cxf-rt-frontend-jaxws-2.7.2.jar:2.7.2]
> 	at com.sun.proxy.$Proxy75.getRuleSet(Unknown Source) ~[na:na]
> 	at com.jpm.tbea.rulesengine.core.load.impl.WebServiceRuleSetLoader.loadRuleSet(WebServiceRuleSetLoader.java:35)
~[classes/:na]
> 	at com.jpm.tbea.rulesengine.core.load.impl.JanusAuthenticatedWebServiceRuleSetLoader.loadRuleSet(JanusAuthenticatedWebServiceRuleSetLoader.java:67)
~[classes/:na]
> 	at com.jpm.tbea.rulesengine.core.load.impl.FailoverRuleSetLoader$LoaderTask.call(FailoverRuleSetLoader.java:124)
[classes/:na]
> 	at com.jpm.tbea.rulesengine.core.load.impl.FailoverRuleSetLoader$LoaderTask.call(FailoverRuleSetLoader.java:1)
[classes/:na]
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_67]
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_67]
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_67]
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_67]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_67]
> 	at java.lang.Thread.run(Thread.java:745) [na:1.7.0_67]
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message