Ask the computer :)

For reloading .class files I guess you need something like JRebel or
the likes that support hot-reloading of .class files.



On Tue, Jun 28, 2011 at 5:15 PM, fachhoch <fachh...@gmail.com> wrote:
> I saw the code fo DefaultCamelContext and I think I can use the method
>
>
>    public synchronized void addRouteDefinitions(Collection<RouteDefinition>
> routeDefinitions) throws Exception {
>        for (RouteDefinition routeDefinition : routeDefinitions) {
>            removeRouteDefinition(routeDefinition);
>        }
>        this.routeDefinitions.addAll(routeDefinitions);
>        if (shouldStartRoutes()) {
>            startRouteDefinitions(routeDefinitions);
>        }
>    }
>
>
>
> My   RouteBuilder  will be a spring-groovy  file  , once I change the file
> spring will reload .   I will use a servlet to update  the camel context by
> calling addRouteDefinitions to which I will pass
> SpringApplicationContext.getBean("myrouteBuilder). getRouteCollection().
>
> what happens to the processor My routebuilder is   this
>
> public class NearBatchFilesRouteBuilder extends RouteBuilder {
>
>
>    public void configure() {
>        from("file:///u01/oracle/artms-near/NEW?delay=60000&move=../PROCESSED")
>                        .convertBodyTo(String.class)
>
> .aggregate(constant(true)).completionSize(10).completionTimeout(10000L).groupExchanges()
>                        .process(new 
> FileProcessor()).to("jms:queue:gov.hhs.newBatch.queue");
>    }
>
>    public static class FileProcessor implements  Processor {
>                @Override
>                public void process(Exchange exchange) throws Exception {
>                        List<BatchFile>  batchFiles=
> Lists.newArrayList(Iterables.transform(exchange.getProperty(Exchange.GROUPED_EXCHANGE,
> ArrayList.class), new Function&lt;Exchange, BatchFile&gt;() {
>                                @Override
>                                public BatchFile apply(Exchange input) {
>                                        BatchFile  batchFile= new BatchFile();
>                                        String 
> filename=(String)input.getIn().getHeader(Exchange.FILE_NAME);
>                                        
> batchFile.setFileName(FilenameUtils.getName(filename));
>                                        
> batchFile.setFiledata(input.getIn().getBody(String.class).getBytes());
>                                        
> batchFile.setFileType(StringUtils.contains(filename,
> "tblACFReportInfo")? BatchFile.FileType.AUDIT:BatchFile.FileType.FINDING);
>                                        return batchFile;
>                                }
>                        }));
>                        Batch
> batch=((BatchService)SpringApplicationContext.getBean("batchService")).createNewBatch(batchFiles);
>                        exchange.getIn().setBody(batch.getSysBatchId());
>                }
>    }
> }
>
>
>
> above  class is a groovy file and I load this using   <lang:groovy....../>
> at runtime  I change   the FileProcessor code    and   spring will reload
> this class, now I will access aservlet in the servlet I call
> camelContext.addRouteDefinitions(SpringApplicationContext.getBean("myrouteBuilder).
> getRouteCollection())
> this will reload the rootdefinitions   but what happens  to processor ?  are
> they   also get  updated ?
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/reload-routebuilder-at-runtime-tp4521292p4532138.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: cib...@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/

Reply via email to