Hi,

the functionality should be working, as the samples provided by the pax-web
project are also used for the integration tests, which do work ...  at
least the last time I tested :D
for details about how it works, please take a look at the pax-web project
:)

regards, Achim


Am Fr., 31. Jan. 2020 um 19:30 Uhr schrieb Alex Soto <alex.s...@envieta.com
>:

> This seems to work for me, but I have my doubts.   Following the example
> here:
> https://github.com/ops4j/org.ops4j.pax.web/tree/master/samples/whiteboard-extended
> I made the following changes.
>
> In my blueprint:
>
> <service interface=
> "org.ops4j.pax.web.service.whiteboard.HttpContextMapping">
> <service-properties>
> <entry key="httpContext.id">
>           <value>externalAPIContext</value>
>       </entry>
> </service-properties>
>
>
> <bean class=
> "org.ops4j.pax.web.extender.whiteboard.runtime.DefaultHttpContextMapping">
> <property name="httpContextId" value="externalAPIContext" />
> <property name="path" value="#{context.path}#{api.root.path}" />
> <property name="parameters">
> <map>
> <entry key="httpContext.virtualhosts" value="127.0.0.1"/>
> <entry key="httpContext.connectors" value="externalAPIConnector"/>
> </map>
> </property>
> </bean>
> </service>
>
>
> <bean id="camelServlet" class=
> "org.apache.camel.component.servlet.CamelHttpTransportServlet"/>
>
>
> <reference id="httpService" interface="org.osgi.service.http.HttpService"
> />
> <bean class=
> "org.apache.camel.component.servlet.osgi.OsgiServletRegisterer"
> init-method="register"
> destroy-method="unregister">
>
>
> <property name="alias" value="#{context.path}#{api.root.path}" />
> <property name="httpService" ref="httpService" />
> <property name="servlet" ref="camelServlet" />
> <property name="servletName" value="ResponderRestApiServlet"/>
> <property name="matchOnUriPrefix" value="true"/>
> </bean>
>
>
> In my jetty.xml:
>
> <Call name="addConnector">
> <Arg>
> <New class="org.eclipse.jetty.server.ServerConnector">
> <Arg name="server">
> <Ref refid="Server" />
> </Arg>
> <Arg name="factories">
> <Array type="org.eclipse.jetty.server.ConnectionFactory">
> <Item>
> <New class="org.eclipse.jetty.server.HttpConnectionFactory">
> <Arg name="config">
> <Ref refid="httpConfig" />
> </Arg>
> </New>
> </Item>
> </Array>
> </Arg>
> <Set name="host">
> <Property name="jetty.host" default="127.0.0.1" />
> </Set>
> <Set name="port">
> <Property name="jetty.port" default="8285" />
> </Set>
> <Set name="idleTimeout">
> <Property name="http.timeout" default="30000" />
> </Set>
> <Set name="name">externalAPIConnector</Set>
> </New>
> </Arg>
> </Call>
>
>
> In my Camel Context:
>
> <restConfiguration
> component="servlet"
> bindingMode="xml"
> contextPath="{{context.path}}{{api.root.path}}"
> port="{{port}}"
> enableCORS="false"
> clientRequestValidation="true">
>
> <componentProperty key="matchOnUriPrefix" value="true"/>
> <endpointProperty key="servletName" value="ResponderRestApiServlet"/>
> </restConfiguration>
>
>
> But,  I am wondering if this correct, because in the example the Servlet
> is registered with service property *httpContext.id
> <http://httpContext.id>*, which I am not setting anywhere. The Jetty
> Connector name is configured in the
> *org.ops4j.pax.web.service.whiteboard.HttpContextMapping*,  but I don’t
> see how it is matched to my Camel Servlet. Notice that the
> *org.apache.camel.component.servlet.osgi.OsgiServletRegisterer *bean is
> the one registering the servlet with the OSGi HTTP Service, but there is no
> way to specify the *httpContext.id <http://httpContext.id> *property*.  *Is
> this property required to match the HttpContextMapping to the Servlet?
>
> Any insight is appreciated.
>
> Best regards,
> Alex soto
>
>
>
>
> On Jan 31, 2020, at 9:29 AM, Alex Soto <alex.s...@envieta.com> wrote:
>
> Thanks JB and Markus,
>
> This is very close to what I am looking for (I still need to read more the
> examples) but in my particular case, I am using Camel Rest DSL (with
> servlet component) connecting it to the OSGi managed 
> *org.osgi.service.http.HttpService.
>  *In other words, I am not using the Camel Jetty component for my rest
> services.  This is how I am setting up Camel to use the OSGi HTTP Service:
>
> <reference id="httpService" interface="org.osgi.service.http.HttpService"
> />
> <bean id="camelServlet" class=
> "org.apache.camel.component.servlet.CamelHttpTransportServlet"/>
> <bean class=“
> org.apache.camel.component.servlet.osgi.OsgiServletRegisterer" init-method
> ="register" destroy-method="unregister”>
> <property name="alias" value="#{context.path}#{api.root.path}" />
> <property name="httpService" ref="httpService" />
> <property name="servlet" ref="camelServlet" />
> <property name="servletName" value="RestApiServlet"/>
> <property name="matchOnUriPrefix" value="true"/>
> </bean>
>
> <restConfiguration component=“servlet" bindingMode="xml" contextPath=
> "{{context.path}}{{api.root.path}}"
> port="{{port}}"
> enableCORS="false"
> clientRequestValidation="true">
> <componentProperty key="matchOnUriPrefix" value="true"/>
> <endpointProperty key="servletName" value="RestApiServlet”/>
> ...
>
>
> So, the question is how do I bind the Camel servlet to a specific Jetty
> connection?
> Would the MANIFEST headers do it?  If so, then that applies to the entire
> bundle.
>
> Best regards,
> Alex soto
>
>
>
>
> On Jan 31, 2020, at 9:06 AM, Markus Rathgeb <maggu2...@gmail.com> wrote:
>
> Hi JB,
>
> as I comment that link already in the first thread and also answered
> to your link in the second thread:
>
> Isn't this similar to this thread (at least after some comments):
>
> https://lists.apache.org/thread.html/69182ee8feef88896f840efde48146053997119e820ef037853c1c9b@%3Cuser.karaf.apache.org%3E
> You also referenced to http://blog.nanthrax.net/?p=352
> My observations has been that it should work for "Web Bundles" and I
> did not found (that time) a way to get it working for servlets.
>
>
> May I ask you if you already checked that this is really still working
> for servlets?
>
>
>
>

-- 

Apache Member
Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer &
Project Lead
blog <http://notizblog.nierbeck.de/>
Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>

Reply via email to