Thank you JB! Best regards, Alex soto
> On Feb 5, 2020, at 3:09 PM, Jean-Baptiste Onofre <[email protected]> wrote: > > Hi Alex, > > I will add a full example tomorrow. I’m fully busy today. > > Regards > JB > >> Le 5 févr. 2020 à 19:23, Alex Soto <[email protected] >> <mailto:[email protected]>> a écrit : >> >> Anybody can validate this approach? >> As I said, it appears to work, except in my case I don’t see how to specify >> the context.id <http://context.id/> property in the Camel Servlet. >> JB? >> >> >> >>> On Jan 31, 2020, at 1:30 PM, Alex Soto <[email protected] >>> <mailto:[email protected]>> wrote: >>> >>> 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 >>> >>> <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 <http://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 <[email protected] >>>> <mailto:[email protected]>> 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 <[email protected] >>>>> <mailto:[email protected]>> 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 >>>>>> >>>>>> <https://lists.apache.org/thread.html/69182ee8feef88896f840efde48146053997119e820ef037853c1c9b@%3Cuser.karaf.apache.org%3E> >>>>>> You also referenced to http://blog.nanthrax.net/?p=352 >>>>>> <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? >>>> >>> >> >
