Hi 

I am getting this weird error stating that Bean can't be found in registry.
Looks like the mongodb endpoint is being created before  beans are
registered. I can run it perfectly on IDE and experienced the same issues on
my local ServiceMix but it seems to have gone away now. But the still
failing on test environment. so this is clearly a random loading orders
issue. How do I force the beans are registered first before endpoints are
being created?

I have tried to add: DependsOn() annotation on the Router but stil the issue
persist. 

See details of my set up below. Your help is very much appreciated.

*ROUTER*

@DependsOn("mongoBean")
public class ArchivaQARouter extends ArchivaBaseRouter {


    /*
     * (non-Javadoc)
     *
     * @see org.apache.camel.builder.RouteBuilder#configure()
     */
    @Override
    public void configure() throws Exception {

        // Initialise all the properties and set the error handler.
        super.configure();

        /**
         *   FTP endpoint
         */
        from("{{jetty.qa.endPoint}}").routeId("qa endpoint")//
                .process(new Processor() {
                    @Override
                    public void process(Exchange exchange) throws Exception
{
                        String body = "{ \"doi\": \"" +
exchange.getIn().getHeader(Constants.DOI) + "\" }";
                        exchange.setProperty(Constants.QAReport,
exchange.getIn().getBody());
                        exchange.getOut().setBody(body);
                    }
                })

                //.setBody().constant("{ \"doi\": \"" +
simple("${in.header.doi}") + "\" }")
                .to("{{mongodb.endpoint}}") //
mongodb.endpoint=mongodb:mongoBean?database=archiva&collection=submission&operation=findOneByQuery

                .beanRef("ftpHandler", "handleQAReport")
                .to("{{ftp.qa.endpoint}}").id("qa.ftp.endpoint");

    }
}

*CAMEL CONTEXT
*

<context:component-scan
base-package="com.nature.archiva.service.configuration" />

        <context:property-placeholder
location="file:${karaf.home}/etc/archiva.properties" />


        
        <camel:camelContext id="camel">
                <camel:template id="template" />
                <camel:routeBuilder ref="archivaRouter" />
                <camel:routeBuilder ref="archivaBaseRouter" />
                <camel:routeBuilder ref="archivaStatusRouter"/>
        <camel:routeBuilder ref="archivaQARouter"/>
        <camel:routeBuilder ref="deadLetterChannel" />
        </camel:camelContext>

( I tried to define the template in camel-context, but didn't help)

@Configuration
public class ApplicationContextConfiguration {

        private final Logger log = Logger.getLogger(this.getClass());

        @Bean(name = "marshaller")
        public Jaxb2Marshaller getMarshaller() {
                final Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
                marshaller.setClassesToBeBound(Response.class, Reports.class,
                                Articles.class);
                return marshaller;
        }

/**
     *
     * @return
     * @throws UnknownHostException
     */
    @Bean(name = "mongoBean")
    public Mongo getMongoInstance(@Value("${db.host}") String host) throws
UnknownHostException {
        return new Mongo(host);
    }
}


Stacktrace:

at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create
route qa endpoint at: >>>
To[mongodb:mongoBean?database=archiva&collection=submission&operation=findOneByQuery]
<<< in route: Route[[From[{{jetty.qa.endPoint}}]] ->
[process[com.nature.a... because of Failed to resolve endpoint:
mongodb://mongoBean?collection=submission&database=archiva&operation=findOneByQuery
due to: No bean could be found in the registry for: mongoBean of type:
com.mongodb.Mongo



--
View this message in context: 
http://camel.465427.n5.nabble.com/MongoDB-endpoint-created-before-beans-are-being-registered-when-deployed-on-ServiceMix-tp5735128.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to