Thanks Willem, I was able to upgrade to 2.12.X branch and I still have the same problem (when a SocketTimeoutException happens, the routing of the message stops as it would have died).
I'm going to upgrade to 2.13.0 now to check it again. I have been testing more and I have found out that if I use exactly the same route but the service to consume is not "httpS", and I make a SocketTimeoutException happen there is no problem. However, when I use a service with SSL there is. (Maybe because of this, the unit test that you updated the other day worked) I'll inform you as soon as I test this with 2.13.0 release. Thanks in advance. KR, Aida. Willem.Jiang wrote > You can register the executeOperationsBatchExecutorService after camel > context is started. > Or you can register a custom ManagementLifecycleStrategy to manage the > lifecycle of your ExecutorService. > > -- > Willem Jiang > > Red Hat, Inc. > Web: http://www.redhat.com > Blog: http://willemjiang.blogspot.com (English) > http://jnn.iteye.com (Chinese) > Twitter: willemjiang > Weibo: 姜宁willem > > > > On April 22, 2014 at 11:11:24 PM, Aida ( > ai.desu@ > ) wrote: >> Hi Willem, >> >> Thank you very much for your response. >> >> I'm trying to * > upgrade my version of Camel to 2.13.0 in order to check if I >> have the same problem in the last release * > , as you told me, but I found an >> obstacle. >> >> From Apache Camel 2.12.0, the ManagementStrategyFactory (that initializes >> the DefaultManagementAgent of the CamelContext) doesn´t initialize the >> ManagementStrategy service. >> >> Before 2.12.0 (line 37 aprox): >> >> ... >> try { >> answer = new ManagedManagementStrategy(context, new >> DefaultManagementAgent(context)); >> // must start it to ensure JMX works and can load needed >> Spring JARs >> ServiceHelper.startService(answer); >> // prefer to have it at first strategy >> context.getLifecycleStrategies().add(0, new >> DefaultManagementLifecycleStrategy(context)); >> log.info("JMX enabled."); >> } catch (Exception e) { >> ... >> >> >> And from 2.12.0 (line 37 aprox): >> .. >> try { >> answer = new ManagedManagementStrategy(context, new >> DefaultManagementAgent(context)); >> >> // must add management lifecycle strategy >> context.getLifecycleStrategies().add(0, new >> DefaultManagementLifecycleStrategy(context)); >> >> } catch (Exception e) { >> ... >> >> >> >> My problem is that I'm registering MBeans on my configureRoute() methods, >> in >> order to register the ExecutorService(s) used in my RouteBuilders: >> >> @Override >> public void configureRoute() { >> //Threadpool executor with the default pool size >> ThreadPoolExecutorWrapper executeOperationsBatchExecutorService = new >> ThreadPoolExecutorWrapper(ROUTE_NAME); >> try { >> >> getContext().getManagementStrategy().getManagementAgent().register(executeOperationsBatchExecutorService, >> >> executeOperationsBatchExecutorService.getMBeanName()); >> } catch (JMException e) { >> throw new RuntimeCamelException("It was impossible to register the MBean >> with name: " + >> executeOperationsBatchExecutorService.getMBeanName().getCanonicalName(), >> e); >> } >> ... >> } >> >> As from 2.12.0 the service is not started, in the DefaultManagementAgent, >> the MBeanServer is null, so a NullpointerException is thrown (and I >> cannot >> test my issue with Apache Camel 2.13.0). >> >> I have tried with the configurations described in [1] (configuring a >> jmxAgent with Spring) to see if this way the initialization happened >> before >> but with no luck. >> >> For JUnit tests (where a nullpointerException is also launched) if i set >> useJmx() returning true and I force the initialization of the agent like >> this: >> >> context.getManagementStrategy().getManagementAgent().start(); >> >> It works fine, but I'm not able to solve it in a "real" environment. >> >> >> Any help with this would be really appreciated, so I can test this >> scenary >> with the last Camel version to see if I can reproduce it. >> >> Thanks in advance, >> >> KR, >> >> Aida. >> >> [1] http://camel.apache.org/camel-jmx.html >> >> >> >> Willem.Jiang wrote >> > I just wrote a simple test[1] in camel trunk(camel-2.14-SNAPSHOT) to >> > reproduce the error. >> > But I cannot reproduce the error. >> > >> > Can you >> * >> > * > try to use last released camel-2.13.0 for verification * >> * >> > ? >> > >> > >> [1]https://git-wip-us.apache.org/repos/asf?p=camel.git;a=commit;h=fdc3b321 >> > >> > -- >> > Willem Jiang >> > >> > Red Hat, Inc. >> > Web: http://www.redhat.com >> > Blog: http://willemjiang.blogspot.com (English) >> > http://jnn.iteye.com (Chinese) >> > Twitter: willemjiang >> > Weibo: 姜宁willem >> > >> > >> > >> > On April 22, 2014 at 12:26:07 AM, Aida ( >> >> > ai.desu@ >> >> > ) wrote: >> >> Hi, >> >> >> >> I'm working with the cxf component in order to consume from JAX-WS >> >> services, >> >> and everything works like a charm, but I'm * > having trouble when a * >> >> * > SocketTimeoutException happens. In this case, I have no Camel Exchange * >> >> * > coming back from the endpoint * > . >> >> >> >> Example: >> >> >> >> from(startEndpoint) >> >> .doTry() >> >> .to(cxfEndpoint) >> >> .doCatch(Throwable.class) >> >> .log("Hey, an exception happened") >> >> .bean(myExceptionHandler) >> >> .end(); >> >> >> >> When a Exception that is not a SocketTimeoutException happens, then >> the >> >> message moves into the "doCatch" block as expected and the message >> >> continues >> >> the routing. Otherwise, when a SocketTimeoutException occurs doesn´t, >> as >> >> if >> >> the Camel Exchange would have disappeared or a thread would have been >> >> killed. >> >> >> >> I have been debugging and when the SocketTimeoutException happens, the >> >> Camel >> >> Exchange is, at first, populated from cxf response: >> >> >> >> ClientOutFaultObserver.onMessage -> CxfClientCallback.handleException >> -> >> >> DefaultCxfBinding.populateExchangeFromCxfResponse >> >> >> >> But despite off my debugging I lose the track and I'm not able to see >> >> where >> >> exactly the message is lost, but I see that the message achieves the >> cxf >> >> component, so I don´t know exactly if it´s a Camel Cxf component >> "issue" >> >> or >> >> a CXF API one. >> >> >> >> I wanted to ask if anyone knows if this is the expected behaviour for >> >> this >> >> kind of exception (maybe for an InterruptedIOException it is), or if I >> >> should expect the message to be retrieved. >> >> >> >> Extra information: >> >> - The SocketTimeoutException happens after establishing the >> connection, >> >> when the socket is ready to read >> >> - If, for example, an UnknownHostException happens, I have a Camel >> >> Exchange >> >> in the "doCatch" block >> >> - The CXF endpoints are configured using Spring and use SSL >> (certificate >> >> authentication) >> >> - Apache Camel version 2.11.2 >> >> >> >> Thanks in advance. >> >> >> >> KR, >> >> >> >> Aida. >> >> >> >> >> >> >> >> -- >> >> View this message in context: >> >> >> http://camel.465427.n5.nabble.com/Camel-Cxf-Camel-Exchange-not-returned-when-SocketTimeoutException-happens-tp5750398.html >> >> >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> >> >> >> >> >> >> -- >> View this message in context: >> http://camel.465427.n5.nabble.com/Camel-Cxf-Camel-Exchange-not-returned-when-SocketTimeoutException-happens-tp5750398p5750438.html >> >> Sent from the Camel - Users mailing list archive at Nabble.com. >> -- View this message in context: http://camel.465427.n5.nabble.com/Camel-Cxf-Camel-Exchange-not-returned-when-SocketTimeoutException-happens-tp5750398p5750506.html Sent from the Camel - Users mailing list archive at Nabble.com.