Hi Claus,

Thanks for your reply. Currently I don't explicitly instantiate the 
ServletComponent either by DSL or code but have been relying on 'Camel Magic' 
to do this for me, is it recommended that I explicitly create the component?

I also discovered this solution to my problem. Use this:

<restConfiguration component="servlet" bindingMode="json"
contextPath="/camel-example-servlet-rest-blueprint/rest"
                           port="8181">
            <endpointProperty key="servletName" value="timeServlet" />
            <dataFormatProperty key="prettyPrint" value="true"/>
</restConfiguration>

Instead of this:

<restConfiguration component="servlet" bindingMode="json"
contextPath="/camel-example-servlet-rest-blueprint/rest"
                           port="8181">
            <dataFormatProperty key="prettyPrint" value="true"/>
            <endpointProperty key="servletName" value="timeServlet" />
</restConfiguration>


The crucial difference being the placement of <endpointProperty> before the 
<dataFormatProperty> tag.

Kerry

On 13/11/17 07:35, Claus Ibsen wrote:
Hi

Configure it as a <bean id="servlet" class="...ServletComponent">
where you can set the servlet name as a property

On Sun, Nov 12, 2017 at 8:58 PM, JT <karaf-u...@avionicengineers.com> wrote:
Hi,

I am trying to create two independent Camel Contexts with Camel blueprint
(as two separate bundles) that will be deployed into the same OSGi
container, exactly the same as described here:

https://stackoverflow.com/questions/40271292/duplicate-servletname-detected-in-apache-camel-blueprint-based-osgi-bundles

I also have encountered the same issue as described in that question, namely
that the two CamelHttpTransportServlet instances are created with the same
default name of 'CamelServlet'. The obvious solution is to set the
servletName as a property to OsgiServletRegisterer however this then results
in a HTTP 404 error when one of the URLs is called.

I've traced it down to the ServletComponent class. It has a 'servletName'
property that is set to 'CamelServlet' by default thus is registered in
HttpRegistry under a different name to that specified to the
OsgiServletRegisterer. I've verified this by debugging around the creation
of Servletcomponent and manually setting the same setting name - I no longer
get the 404 error.

The solution seems to therefore be to configure the servletName on the
ServletComponent but I cannot find anyway to do this. I've referred to:

http://camel.apache.org/servlet.html

where it describes a 'servletName' option but cannot specify this in my
blueprint XML file, eg the '<restConfiguation>' tag doesn't take such an
attribute nor can I specify it as a property.

Is there a way, using the blueprint XML I can specify the 'servletName'?

Thanks, Kerry




Reply via email to