I just checked the camel-script code, it will bind the camel context within the 
script context.
But it should be more easy to write a custom bean[1] and inject the camel 
context to it, then you can get full control of it.  


[1]http://camel.apache.org/bean.html
--  
Willem Jiang

Red Hat, Inc.
FuseSource is now part of Red Hat
Web: http://www.fusesource.com | http://www.redhat.com
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) 
(English)
          http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem





On Thursday, January 10, 2013 at 1:00 AM, Zemin Hu wrote:

> Willem,
> Thanks, I read some of your posts in the past, they were very helpful. I
> appreciate your advice.
> My currently situation is: I used beans for complicated business logic, to
> send different requests to different resources and to aggregate the results
> in the past. But now our company is moving to cloud computing environment,
> our platform (modified/enhanced camel environment) moved to cloud
> environment. So Bean implementation is strongly discouraged since
> (auto/versioned) bean deployment could be very complicated in the
> environment.
>  
> I am moving to write all the code in groovy within the route instead of bean
> as best practice in our group. ProducerTemplate could be good solution if
> bean implementation is allowed. I tried a simple test by sending single
> request in groovy(I need to aggregate the final response as part of
> requirement, also I used setBody tag to cheat route to send request which
> may not be best practice):
> <setBody>
> <groovy>
> import org.apache.camel.ProducerTemplate
> import org.apache.camel.impl.DefaultProducerTemplate
>  
> def template = context.createProducerTemplate()
> def endpoint = "myendpoint"
> def body = ${header.REST_REQUEST_BODY}
> def headers = ["Content-Type":"application/json", CamelHttpMethod:"POST"]
> def response = template.requestBodyAndHeader(endpoint, body, headers,
> java.lang.String.class)
> return response
> </groovy>
> </setBody>
> I got expected exception: context is missing since context is NOT default
> build-in variable. How do I get context in "simple" DSL, or how do I get a
> producerTemplate without using context?
> If not, is there other solutions/patterns that I can use for this situation
> without using beans?
> I am looking at [splitter][broadcast] pattern, but have not found way to
> resolve it. Maybe this is too demanding for Camel without bean: dynamic URI
> list, dynamic HTTP method(optional), dynamic request body(optional), and
> aggregate all responses. I am using Spring DSL plus groovy only, java DSL is
> not allowed.
>  
>  
>  
>  
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/recipientList-with-POST-and-request-body-tp5725142p5725192.html
> Sent from the Camel - Users mailing list archive at Nabble.com 
> (http://Nabble.com).



Reply via email to