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
