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? >>>>>> >>>>> >>>> >>> >> >
