Hi

Ah yeah I am pretty sure you are not the only one who went down wrong
with var/val/def in Scala.




On Thu, May 16, 2013 at 12:09 AM, Sven Richter <sver...@googlemail.com> wrote:
> Well, like i said i am fairly new, instead of using val for variables
> i used "def", which is a very stupid mistake.
> This code works:
>   val reg = new SimpleRegistry()
>   val connectionBean = new Mongo("localhost", 27017)
>   reg.put("myConnection", connectionBean)
>   val camelContext = new DefaultCamelContext(reg)
>   camelContext.addRoutes(new RssRouteBuilder)
>   camelContext.start
>
> Best Regards,
> Sven
>
> On Mon, May 13, 2013 at 4:40 PM, Sven Richter <sver...@googlemail.com> wrote:
>> Hi,
>>
>> i am fairly new to camel and scala and try to get the hang of it. For
>> this i want to write a small scala application which takes some input
>> and writes it into a mongodb database.
>> Looking at the camel-mongodb documentation i see i have to define a
>> Mongo bean somewhere in my application so that camel can connect to
>> it. This is my code which tries to achieve this:
>> // application
>>   def createDefaultContextJndiRegistry(): DefaultCamelContext = {
>>     def reg = new JndiRegistry(new JndiContext())
>>     def connectionBean = new Mongo("localhost", 27017)
>>     reg.bind("myConnection", connectionBean)
>>     def context = new DefaultCamelContext(reg)
>>
>>     context
>>   }
>>
>>   camelContext.addRoutes(new RssRouteBuilder)
>>   camelContext.start
>>
>> //rssRouteBuilder
>> class RssRouteBuilder() extends RouteBuilder{
>>   def configure(){
>>     
>> from("direct:insert").to("log:de.sveri.talk.rss?level=DEBUG").to("mongodb:myConnection?database=talk&collection=rss&operation=insert")
>>   }
>> }
>>
>> When i execute that code i get an error message [1] saying that it
>> cannot find "myConnection". So i guess i dont use the JndiRegistry in
>> the right way. I also tried to use the SimpleRegistry, but that threw
>> the same error.
>> So my question is basically how to use the Registry and camel-mongodb
>> when i dont use spring.
>>
>> Best Regards,
>> Sven
>>
>> [1]
>> Exception in thread "main"
>> org.apache.camel.FailedToCreateRouteException: Failed to create route
>> route2 at: >>> 
>> To[mongodb:myConnection?database=talk&collection=rss&operation=insert]
>> <<< in route: Route(route2)[[From[direct:insert]] ->
>> [To[log:de.sveri.talk... because of Failed to resolve endpoint:
>> mongodb://myConnection?collection=rss&database=talk&operation=insert
>> due to: No bean could be found in the registry for: myConnection of
>> type: com.mongodb.Mongo
>>     at 
>> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:883)
>>     at 
>> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:176)
>>     at 
>> org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:750)
>>     at 
>> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1829)
>>     at 
>> org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1609)
>>     at 
>> org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1478)
>>     at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
>>     at 
>> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1446)
>>     at de.sveri.talk.Server$delayedInit$body.apply(Server.scala:61)
>>     at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
>>     at 
>> scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
>>     at scala.App$$anonfun$main$1.apply(App.scala:71)
>>     at scala.App$$anonfun$main$1.apply(App.scala:71)
>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>     at 
>> scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)
>>     at scala.App$class.main(App.scala:71)
>>     at de.sveri.talk.Server$.main(Server.scala:11)
>>     at de.sveri.talk.Server.main(Server.scala)
>> Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to
>> resolve endpoint:
>> mongodb://myConnection?collection=rss&database=talk&operation=insert
>> due to: No bean could be found in the registry for: myConnection of
>> type: com.mongodb.Mongo
>>     at 
>> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:508)
>>     at 
>> org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:62)
>>     at 
>> org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:191)
>>     at 
>> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:108)
>>     at 
>> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:114)
>>     at 
>> org.apache.camel.model.SendDefinition.resolveEndpoint(SendDefinition.java:61)
>>     at 
>> org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:55)
>>     at 
>> org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:479)
>>     at 
>> org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:197)
>>     at 
>> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:880)
>>     ... 17 more
>> Caused by: org.apache.camel.NoSuchBeanException: No bean could be
>> found in the registry for: myConnection of type: com.mongodb.Mongo
>>     at 
>> org.apache.camel.util.CamelContextHelper.mandatoryLookup(CamelContextHelper.java:142)
>>     at 
>> org.apache.camel.component.mongodb.MongoDbComponent.createEndpoint(MongoDbComponent.java:43)
>>     at 
>> org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:119)
>>     at 
>> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:488)
>>     ... 26 more



-- 
Claus Ibsen
-----------------
www.camelone.org: The open source integration conference.

Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cib...@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Reply via email to