I think it should work, it may be a class loader issue.
I think you have two solutions overall:
  * either you create you own jetty server using camel-jetty and you
set up the jetty server yourself
  * you can use a wab packaging
  * or you want to reuse the osgi http service and you need to set up
a servlet and configure the security on the servlet
For the later, the packaging does not have to be a war, but if you
don't use a war, you'll have to write the code that will do the
security and will register the servlet in the osgi http service.
I think the easiest is using a wab, you just need to make sure you
don't include the camel-servlet component or any camel jar into the
war.
Actually, if should start with an exploded war and a simple web.xml to
make sure you don't include any code in the war itself.  I guess the
trick is to expose the component so that other camel will find it.  It
can be done by registering a ComponentResolver with a property
(component=servlet) that would always register the same servlet
component instance.

On Mon, Jan 3, 2011 at 17:01, Charles Moulliard <[email protected]> wrote:
> I don't think that packaging camel-servlet in a war will work. Even if
> we create a jar (=WAB, WAB) containing a web.xml with description of
> servlet
>
>    <servlet>
>        <servlet-name>CamelServlet</servlet-name>
>        <display-name>Camel Http Transport Servlet</display-name>
>        <servlet-class>
>            org.apache.camel.component.servlet.CamelHttpTransportServlet
>        </servlet-class>
>        <init-param>
>          <param-name>matchOnUriPrefix</param-name>
>          <param-value>true</param-value>
>        </init-param>
>        <load-on-startup>1</load-on-startup>
>
>    </servlet>
>
> Caused by: java.lang.IllegalArgumentException: Cannot find the
> deployed servlet, please configure the ServletComponent or configure a
> org.apache.camel.component.servlet.CamelHttpTransportServlet servlet
> in web.xml
>        at 
> org.apache.camel.component.servlet.ServletComponent.getCamelServlet(ServletComponent.java:55)
>        at 
> org.apache.camel.component.servlet.ServletComponent.connect(ServletComponent.java:109)
>        at 
> org.apache.camel.component.http.HttpEndpoint.connect(HttpEndpoint.java:148)
>        at 
> org.apache.camel.component.http.HttpConsumer.doStart(HttpConsumer.java:52)
>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:65)
>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:52)
>        at 
> org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
>        at 
> org.apache.camel.impl.DefaultCamelContext.startServices(DefaultCamelContext.java:1484)
>        at 
> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRouteConsumers(DefaultCamelContext.java:1750)
>        at 
> org.apache.camel.impl.DefaultCamelContext.doStartRouteConsumers(DefaultCamelContext.java:1703)
>        at 
> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:1629)
>        at 
> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:1419)
>        at 
> org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1314)
>        at 
> org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1213)
>        at 
> org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:164)
>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:65)
>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:52)
>        at 
> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1191)
>        at 
> org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:203)
>        at 
> org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:101)
>
>
> it will not be possible for camel to find the CamelHttpServlet
>
> Regards,
>
> Charles Moulliard
>
> Sr. Principal Solution Architect - FuseSource
> Apache Committer
>
> Blog : http://cmoulliard.blogspot.com
> Twitter : http://twitter.com/cmoulliard
> Linkedin : http://www.linkedin.com/in/charlesmoulliard
> Skype: cmoulliard
>
>
>
> On Mon, Dec 20, 2010 at 3:06 PM, Achim Nierbeck <[email protected]> 
> wrote:
>> Just one more comment from me, a OSGi-War (aka wab) can also be used :)
>> Totally forgot to mention that when Charles asked me directly, and I didn't
>> have a real good answer ;)
>>
>> 2010/12/20 Guillaume Nodet <[email protected]>
>>
>>> On Mon, Dec 20, 2010 at 14:42, Charles Moulliard <[email protected]>
>>> wrote:
>>> > Hi,
>>> >
>>> > I would like to start a discussion around the following point as it does
>>> not
>>> > seem obvious to find an answer. To authenticate a HTTP user with camel on
>>> > Karaf we can use the component camel-jetty and camel-servlet. Jetty +
>>> JAAS +
>>> > camel can be easily configured using Spring beans + securityHandler with
>>> > camel but this does not seem the case with camel-servlet.
>>> >
>>> > The component camel-servlet does not accept as parameter a handler(s) for
>>> > Jetty. This is normal as camel can be deployed in different Application
>>> > Servers which are not build with Jetty. So what alternative(s) exist to
>>> > configure camel-servlet with Jetty + JAAS on Karaf ? Using jetty.xml (in
>>> etc
>>> > folder) but how to link camel servlet with jetty security handler ?
>>> >
>>>
>>> Unless I'm wrong, when you use camel-servlet, you're responsible for
>>> setting up the CamelHttpTransportServlet servlet.
>>> In OSGi, it could be done either using a standard web application
>>> (deployed using the war support), or directly using the OSGi HTTP
>>> service.  In the former case, you'd have to configure the web.xml for
>>> security.  In the latter case, you need to use the OSGi HTTP service
>>> api to properly configure the security bits (by implementing
>>> org.osgi.service.http.HttpContext interface).
>>>
>>> I agree we could have an example of showing the last way in camel .
>>> Configuring the war for security isn't specific to OSGi or Camel fwiw.
>>>
>>> > Regards,
>>> >
>>> > Charles
>>> >
>>>
>>>
>>>
>>> --
>>> Cheers,
>>> Guillaume Nodet
>>> ------------------------
>>> Blog: http://gnodet.blogspot.com/
>>> ------------------------
>>> Open Source SOA
>>> http://fusesource.com
>>>
>>
>



-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com

Reply via email to