Apologies, perhaps it wasn't clear - the component is specifically defined
for REST: 

<bean id=&quot;&lt;b>restservlet*"
class="org.apache.camel...ServletComponent">

In fact, in my XML config and the DSL, the ServletComponent bean ID is not
"servlet". I just changed it in the email to avoid confusion, but I am
assuming if no other ServletComponent-s are defined the ID string is
irrelevant as long as properly referenced. 


Claus Ibsen-2 wrote
> Just define a new component for rest.
> <bean id="restservlet" class="org.apache.camel...ServletComponent">
> 
> On Mon, Nov 24, 2014 at 10:26 AM, Pavel Lechev &lt;

> p.lechev@

> &gt; wrote:
>> Hi Claus,
>> Thanks for your response.
>> Am I to understand that the REST DSL in combination with the `servlet`
>> consumer does not allow setting a custom HttpBinding? If so, I believe
>> this
>> is a huge limitation given that these two are very commonly used
>> together.
>> It is also not very clear from the documentation that Servlet component
>> will
>> not allow custom HttpBinding when used in REST DSL.
>> Here is my scenario:
>> 1. Servlet component explicitly defined in Spring context, where we set
>> the
>> http binding:
>>     &lt;bean id=&quot;servlet&quot;
>> class=&quot;org.apache.camel.component.servlet.ServletComponent&quot;&gt;
>> &lt;property name=&quot;httpBinding&quot;&gt;            &lt;bean
>> class=&quot;my.custom.HttpBinding&quot;/&gt;        &lt;/property&gt;
>> &lt;/bean&gt;
>> 2. DSL REST config:
>>         restConfiguration()                .component("servlet")  &lt;-
>> use
>> the `servlet` component we defined above
>> .bindingMode(RestBindingMode.auto);        rest("/my-path")
>> .consumes(MediaType.APPLICATION_XML)
>> .produces(MediaType.APPLICATION_XML)
>> .post().type(MyXMLMappedDataClass.class)                .route()
>> .routeId("My-Route")                            .to(....)                    
>>           
>> ....                            ....
>>         Then, on Spring/Camel startup, the following calls are executed
>> in this
>> order:
>> 1) component.createEndpoint(..) in DefaultCamelContext.java:525 results
>> in
>> endpoint.setBinding(binding) (on ServletComponent.java:96), which
>> *correctly* sets my custom binding instance, however the next step
>> 2) factory.createConsumer(..) RestEndpoint.java:167 results in
>> endpoint.setBinding(new ServletRestHttpBinding()) (on
>> ServletComponent.java:208), which overwrites the instance previously set
>> I can understand the rationale behind enforcing ServletRestHttpBinding,
>> however it will be good if the option to extend this class and configure
>> it
>> as a custom binding still exists.
>> Thanks
>> Pav
>>
>>
>>
>> --
>> View this message in context:
>> http://camel.465427.n5.nabble.com/Impossible-to-configure-HttpBinding-for-ServletComponent-tp5759473p5759528.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
> 
> 
> 
> -- 
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> Email: 

> cibsen@

> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
> hawtio: http://hawt.io/
> fabric8: http://fabric8.io/





--
View this message in context: 
http://camel.465427.n5.nabble.com/Impossible-to-configure-HttpBinding-for-ServletComponent-tp5759473p5759530.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to