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<Exchange, BatchFile>() { > @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/