Maybe I'm wrong, but the camelHttpTransportServlet and servlet look generic,
so maybe they can be done by the component itself when deployed in osgi ?

On Tue, Jan 11, 2011 at 16:40, Willem Jiang <[email protected]> wrote:

> It's hard to determine what kind of HttpContext and servlet name, alien can
> be used for the CamelServlet.
> So I did some work on the CAMEL-3485 to help user to bind the Servlet with
> CamelServlet by looking the CamelServletService from the service registry
> like this.
>
>     <osgi:reference id="camelHttpTransportServlet"
> interface="org.apache.camel.component.servlet.CamelServletService"/>
>
>   <bean id="servlet"
> class="org.apache.camel.component.servlet.ServletComponent">
>      <property name = "camelServletService" ref="camelHttpTransportServlet"
> />
>   </bean>
>
>   <bean id="servletProcessor"
> class="org.apache.camel.itest.osgi.servlet.ServletProcessor" />
>
>   <camelContext xmlns="http://camel.apache.org/schema/spring";>
>     <camel:route>
>       <camel:from uri="servlet:///hello"/>
>       <camel:process ref="servletProcessor"/>
>     </camel:route>
>   </camelContext>
>
> Willem
>
> Guillaume Nodet wrote:
> Just raised https://issues.apache.org/jira/browse/CAMEL-3490 for that
>
> On Mon, Jan 3, 2011 at 18:22, Guillaume Nodet <[email protected]> wrote:
> > On Mon, Jan 3, 2011 at 17:55, Charles Moulliard <[email protected]>
> wrote:
> >> What you suggest (component=servlet) is by example what has been done in
> >> this project of camel --> org.apache.camel.component.paxlogging ?
> >
> > Yes, the same way as for paxlogging camel component.
> >
> >> Question:  Is there a way to check that pax-web has well registered the
> >> servlet defined in the web.xml file and deployed as a jar in hot deploy
> >> directory ?
> >
> > If we were to rely on the osgi http service instead of pax-web, it
> > would be a bit more portable.
> > Just adding an osgi activator to camel-servlet would work fine for
> > that imho, as the activator could register both the servlet in the
> > osgi http service and the component resolver.
> >
> > Btw, this discussion is much more related to camel than karaf ;-)
> >
> >> On 03/01/11 17:33, Guillaume Nodet wrote:
> >>>
> >>> 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
> >
>
> --
> Willem
> ----------------------------------
> FuseSource
> Web: http://www.fusesource.com
> Blog:    http://willemjiang.blogspot.com (English)
>         http://jnn.javaeye.com (Chinese)
> Twitter: willemjiang
>



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

Reply via email to