No worries,  I really appreciate it. 
Just need some clarity on how to setup separate Pax-Web to expose Web and Rest 
interfaces on different ports.

Best regards,
Alex soto




> On Feb 13, 2020, at 1:51 AM, Jean-Baptiste Onofre <[email protected]> wrote:
> 
> Hi Alex,
> 
> I’m very sorry, I completely forgot :/
> 
> I’m working on it today and tomorrow.
> 
> Sorry again :/
> 
> Regards
> JB
> 
>> Le 12 févr. 2020 à 18:09, Alex Soto <[email protected] 
>> <mailto:[email protected]>> a écrit :
>> 
>> I’m sorry to ask, JB, I know you are busy, but did you have time for this 
>> example?
>> 
>> Best regards,
>> Alex soto
>> 
>> 
>> 
>> 
>>> On Feb 5, 2020, at 3:09 PM, Jean-Baptiste Onofre <[email protected] 
>>> <mailto:[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?
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to