I am not sure you can do that but can try. Also, I don’t understand why you would want to share a servlet across bundles.
Best regards, Alex soto > On Aug 19, 2020, at 12:02 PM, Gerald Kallas <catsh...@mailbox.org> wrote: > > Thanks Alex. > > That seems to be a problem as I'll have every Blueprint file is being > deployed separately and resides so far in a dedicated bundle. > > I wonder if I could access the servlet in the registry anyway from a > dedicated bundle/Blueprint file as it is registered with > > org.apache.camel.component.osgi.OsgiServletRegisterer > > Best > Gerald > >> Alex Soto <alex.s...@envieta.com> hat am 19.08.2020 15:33 geschrieben: >> >> >> Hi Gerald, >> >> All Blueprint files in the same bundle share the same namespace/context, so >> yes, a bean defined in one file is visible in another, as long as it is the >> same bundle. I usually have one file “beans.xml” where all beans are >> declared, and a separate file “camel-context.xml” defining the camel >> context. Furthermore, you can move routes to separate files by using >> “routeContextRef”, for example: >> >> >> <camelContext xmlns="http://camel.apache.org/schema/blueprint" >> id=“my-context"> >> <routeContextRef ref="common-routes”/> >> . . . >> >> Then, in a separate file: >> >> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> xsi:schemaLocation=" >> http://www.osgi.org/xmlns/blueprint/v1.0.0 >> https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> >> >> <routeContext id="common-routes" >> xmlns="http://camel.apache.org/schema/blueprint”> >> <route id=“sample"> >> <from uri=“direct:sample”/> >> . . . >> </route> >> </routeContext> >> >> Again, all files need to be in the same bundle. >> >> Best regards, >> Alex soto >> >> >> >> >>> On Aug 19, 2020, at 7:59 AM, Gerald Kallas <catsh...@mailbox.org> wrote: >>> >>> Thanks Daniel. >>> >>> Not sure if I did explain right. >>> >>> I want to define >>> >>> <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.osgi.OsgiServletRegisterer" >>> init-method="register" >>> destroy-method="unregister"> >>> <property name="servletName" value="WEB2SFO" /> >>> <property name="alias" value="/web2sfo" /> >>> <property name="httpService" ref="httpService" /> >>> <property name="servlet" ref="camelServlet" /> >>> </bean> >>> >>> in one common Blueprint file and refer in an other blueprint file to the >>> registered servlet above like >>> >>> <from uri="servlet://get?servletName=WEB2SFO" /> >>> >>> Is there a way in the second Blueprint to get a reference to the servlet >>> defined in the first one? >>> >>> Best >>> Gerald >>> >>>> Daniel Langevin <daniel.lange...@shq.gouv.qc.ca> hat am 19.08.2020 13:48 >>>> geschrieben: >>>> >>>> >>>> Hi Gerald, >>>> >>>> the only way i know to do that is to refer this way. >>>> >>>> uri="direct-vm:xxxxxxxxxxxxxx?block=true&timeout=300000" >>>> >>>> >>>> >>>> >>>> hope this help! >>>> >>>> >>>> >>>> Daniel >>>>>>> >>>> De : Gerald Kallas <catsh...@mailbox.org> >>>> À : <users@camel.apache.org>, Daniel Langevin >>>> <daniel.lange...@shq.gouv.qc.ca> >>>> Date : 2020-08-19 00:15 >>>> Objet : Re: Rép. : Camel REST DSL with servlet - API URL? >>>> The idea is to define a servlet once and to re-use it with it's context in >>>> multiple routes in different Blueprint files. >>>> >>>> Best >>>> Gerald >>>> >>>>> Gerald Kallas <catsh...@mailbox.org> hat am 18.08.2020 22:35 geschrieben: >>>>> >>>>> >>>>> Thanks a lot, Daniel. It works. >>>>> >>>>> Is it possible to refer to a servlet that has been defined in another >>>>> Blueprint file? >>>>> >>>>> Best >>>>> Gerald >>>>> >>>>>> Daniel Langevin <daniel.lange...@shq.gouv.qc.ca> hat am 18.08.2020 14:29 >>>>>> geschrieben: >>>>>> >>>>>> >>>>>> Try this it's work for me. >>>>>> >>>>>> >>>>>> >>>>>> <restConfiguration component="servlet" contextPath="/apiisp001" >>>>>> bindingMode="json" scheme="https" port="8443" >>>>>> apiContextPath="/api-doc" apiContextListing="false" enableCORS="true"> >>>>>> <!-- >>>>>> Add apiContextpath to give the possibility to list all service on >>>>>> apiisp001 Context with Camel Swagger >>>>>> with that request: https://localhost:8443/apiisp001/api-doc >>>> >>>>>> --> >>>>>> >>>>>> <!-- Add this line to create a independant servlet prevent Conflict with >>>>>> a previous declare in other CamelContext --> >>>>>> <endpointProperty key="servletName" value="apiisp001CamelServlet" /> >>>>>> >>>>>> <dataFormatProperty key="prettyPrint" value="true" /> >>>>>> <apiProperty key="base.path" value="/apiisp001" /> >>>>>> <apiProperty key="api.description" value="APIISP001 - Test API" /> >>>>>> <apiProperty key="api.title" value="APIISP001" /> >>>>>> <apiProperty key="api.version" value="1.0.0" /> >>>>>> <apiProperty key="api.contact.name" value="Gerald Kallas"/> >>>>>> <apiProperty key="api.contact.email" value="catsh...@mailbox.org"/> >>>>>> <apiProperty key="api.termsOfService" value="(C) xxxxxxxxxxxx 2020"/> >>>>>> >>>>>> </restConfiguration> >>>>>> >>>>>> <!-- >>>>>> Add this little URI to test connectivity of you rest API >>>>>> with that request: https://localhost:8443/apiisp001/echo/ping >>>> >>>>>> --> >>>>>> >>>>>> <rest path="/echo" consumes="text/html" produces="text/html"> >>>>>> <description>apiisp001 - Echo rest service</description> >>>>>> <get uri="ping"> >>>>>> <description>APIISP001 - Connectivity test </description> >>>>>> <route id="rte.APIISP001.rest.echo"> >>>>>> <transform> >>>>>> <constant>/APIISP001/echo PONG.</constant> >>>>>> </transform> >>>>>> </route> >>>>>> </get> >>>>>> </rest> >>>>>> >>>>>> Daniel Langevin >>>>>> Direction de l’assistance et des technologies >>>>>> Direction des ressources informationnelles >>>>>> >>>>>> Société d’habitation du Québec >>>>>> Édifice Marie-Guyart >>>>>> 1054, rue Louis-Alexandre-Taschereau >>>>>> Aile Jacques-Parizeau, 1er étage >>>>>> Québec (Québec) G1R 5E7 >>>>>> Téléphone : 418 643-4035, poste 1191 >>>>>> Sans frais : 1 800 463-4315 >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>>>> >>>>>> De : Gerald Kallas <catsh...@mailbox.org> >>>>>> À : <users@camel.apache.org>, Daniel Langevin >>>>>> <daniel.lange...@shq.gouv.qc.ca> >>>>>> Date : 2020-08-18 03:33 >>>>>> Objet : Re: Rép. : Camel REST DSL with servlet - API URL? >>>>>> >>>>>> Thanks for the hint. But it doesn't work either. I modified my Blueprint >>>>>> as following >>>>>> >>>>>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" >>>>>> xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0" >>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>>>> xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 >>>>>> https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> >>>> >>>>>> >>>>>> <camelContext id="isp.api.APIISP001" >>>>>> xmlns="http://camel.apache.org/schema/blueprint" streamCache="true" >>>>>> useBreadcrumb="true"> >>>>>> >>>>>> <!--********************************************************************************--> >>>>>> <!-- REST API --> >>>>>> <!--********************************************************************************--> >>>>>> >>>>>> <restConfiguration component="servlet" contextPath="/apiisp001" >>>>>> bindingMode="json" scheme="https" port="8443"> >>>>>> <dataFormatProperty key="prettyPrint" value="true" /> >>>>>> <apiProperty key="base.path" value="/apiisp001" /> >>>>>> <apiProperty key="api.description" value="APIISP001 - Test API" /> >>>>>> <apiProperty key="api.title" value="APIISP001" /> >>>>>> <apiProperty key="api.version" value="1.0.0" /> >>>>>> </restConfiguration> >>>>>> >>>>>> <!-- REST endpoints --> >>>>>> <rest path="/base"> >>>>>> <get uri="/1" id="isp.api.APIISP001.get.1"> >>>>>> <route> >>>>>> <!-- send the chunk to direct --> >>>>>> <to uri="direct-vm:APIISP001.1"/> >>>>>> </route> >>>>>> </get> >>>>>> </rest> >>>>>> >>>>>> </camelContext> >>>>>> >>>>>> </blueprint> >>>>>> >>>>>> The (untertow) web server runs with HTTPS on port 8443, other servlets >>>>>> are working. I tried >>>>>> >>>>>> https://localhost:8443/apiisp001/base/1 >>>> >>>>>> >>>>>> where I'd expect the response but did get a HTTP 404 error. >>>>>> >>>>>> Any hints are appreciated. >>>>>> >>>>>> See also the log for deployment >>>>>> >>>>>> 2020-08-18T07:31:28,421 | INFO | >>>>>> fileinstall-/opt/apache-karaf-4.2.9/deploy | BlueprintContainerImpl | >>>>>> 105 - org.apache.aries.blueprint.core - 1.10.2 | Blueprint bundle >>>>>> isp.api.APIISP001.xml/0.0.0 has been started >>>>>> 2020-08-18T07:31:28,432 | INFO | Blueprint Event Dispatcher: 1 | >>>>>> BlueprintCamelContext | 169 - org.apache.camel.karaf.camel-blueprint - >>>>>> 3.4.2 | Attempting to start CamelContext: isp.api.APIISP001 >>>>>> 2020-08-18T07:31:28,437 | INFO | Blueprint Event Dispatcher: 1 | >>>>>> JmxManagementStrategy | 144 - org.apache.camel.camel-management - 3.4.2 >>>>>> | JMX is enabled >>>>>> 2020-08-18T07:31:28,484 | INFO | Blueprint Event Dispatcher: 1 | >>>>>> AbstractCamelContext | 115 - org.apache.camel.camel-base - 3.4.2 | >>>>>> Apache Camel 3.4.2 (isp.api.APIISP001) is starting >>>>>> 2020-08-18T07:31:28,484 | INFO | Blueprint Event Dispatcher: 1 | >>>>>> AbstractCamelContext | 115 - org.apache.camel.camel-base - 3.4.2 | >>>>>> StreamCaching is enabled on CamelContext: isp.api.APIISP001 >>>>>> 2020-08-18T07:31:28,546 | INFO | Blueprint Event Dispatcher: 1 | >>>>>> AbstractCamelContext | 115 - org.apache.camel.camel-base - 3.4.2 | Using >>>>>> HealthCheck: camel-health >>>>>> 2020-08-18T07:31:28,592 | INFO | Blueprint Event Dispatcher: 1 | >>>>>> DefaultStreamCachingStrategy | 115 - org.apache.camel.camel-base - 3.4.2 >>>>>> | StreamCaching in use with spool directory: >>>>>> /opt/apache-karaf/data/tmp/camel/camel-tmp-ID-43c92ad4274c-1597499175862-121-1 >>>>>> and rules: [Spool > 128K body size] >>>>>> 2020-08-18T07:31:28,593 | INFO | Blueprint Event Dispatcher: 1 | >>>>>> JacksonDataFormat | 137 - org.apache.camel.camel-jackson - 3.4.2 | The >>>>>> option autoDiscoverObjectMapper is set to false, Camel won't search in >>>>>> the registry >>>>>> 2020-08-18T07:31:28,594 | INFO | Blueprint Event Dispatcher: 1 | >>>>>> JacksonDataFormat | 137 - org.apache.camel.camel-jackson - 3.4.2 | The >>>>>> option autoDiscoverObjectMapper is set to false, Camel won't search in >>>>>> the registry >>>>>> 2020-08-18T07:31:28,625 | INFO | Blueprint Event Dispatcher: 1 | >>>>>> InternalRouteStartupManager | 115 - org.apache.camel.camel-base - 3.4.2 >>>>>> | Route: isp.api.APIISP001.get.1 started and consuming from: >>>>>> servlet:/apiisp001/1 >>>>>> 2020-08-18T07:31:28,626 | INFO | Blueprint Event Dispatcher: 1 | >>>>>> AbstractCamelContext | 115 - org.apache.camel.camel-base - 3.4.2 | Total >>>>>> 1 routes, of which 1 are started >>>>>> 2020-08-18T07:31:28,626 | INFO | Blueprint Event Dispatcher: 1 | >>>>>> AbstractCamelContext | 115 - org.apache.camel.camel-base - 3.4.2 | >>>>>> Apache Camel 3.4.2 (isp.api.APIISP001) started in 0.142 seconds >>>>>> 2020-08-18T07:31:28,643 | INFO | >>>>>> fileinstall-/opt/apache-karaf-4.2.9/deploy | fileinstall | 10 - >>>>>> org.apache.felix.fileinstall - 3.6.6 | Started bundle: >>>>>> blueprint:file:/opt/apache-karaf-4.2.9/deploy/isp.api.APIISP001.xml >>>>>> >>>>>> Best >>>>>> Gerald >>>>>> >>>>>>> Daniel Langevin <daniel.lange...@shq.gouv.qc.ca> hat am 17.08.2020 >>>>>>> 17:44 geschrieben: >>>>>>> >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> you have to specify the default http port number : 8181 for CamelServlet >>>>>>> >>>>>>> like this: >>>>>>> >>>>>>> http://servername.org:8181/apiisp001/1 >>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> Daniel Langevin >>>>>>> Direction de l’assistance et des technologies >>>>>>> Direction des ressources informationnelles >>>>>>> >>>>>>> Société d’habitation du Québec >>>>>>> Édifice Marie-Guyart >>>>>>> 1054, rue Louis-Alexandre-Taschereau >>>>>>> Aile Jacques-Parizeau, 1er étage >>>>>>> Québec (Québec) G1R 5E7 >>>>>>> Téléphone : 418 643-4035, poste 1191 >>>>>>> Sans frais : 1 800 463-4315 >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>>>> >>>>>>> De : Gerald Kallas <catsh...@mailbox.org> >>>>>>> À : "users@camel.apache.org" <users@camel.apache.org> >>>>>>> Date : 2020-08-17 11:22 >>>>>>> Objet : Camel REST DSL with servlet - API URL? >>>>>>> >>>>>>> Dear all, >>>>>>> >>>>>>> I'm going to configure a REST API similar to a (working) HTTP consumer. >>>>>>> I tried several URLs to call the API operation but get always a HTTP >>>>>>> 404. >>>>>>> >>>>>>> Do I miss someting (e.g. the reference to the servletName)? Can someone >>>>>>> point me out which is the API URL for the get operation in my case? >>>>>>> >>>>>>> Thanks in advance >>>>>>> Gerald >>>>>>> >>>>>>> >>>>>>> My Blueprint DSL see below .. >>>>>>> >>>>>>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" >>>>>>> xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0" >>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>>>>> xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 >>>>>>> https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> >>>> >>>>>>> >>>>>>> <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.osgi.OsgiServletRegisterer" >>>>>>> init-method="register" >>>>>>> destroy-method="unregister"> >>>>>>> <property name="servletName" value="APIISP001" /> >>>>>>> <property name="alias" value="/apiisp001" /> >>>>>>> <property name="httpService" ref="httpService" /> >>>>>>> <property name="servlet" ref="camelServlet" /> >>>>>>> </bean> >>>>>>> >>>>>>> <bean id="servlet" >>>>>>> class="org.apache.camel.component.servlet.ServletComponent" /> >>>>>>> >>>>>>> <camelContext id="isp.api.APIISP001" >>>>>>> xmlns="http://camel.apache.org/schema/blueprint" streamCache="true" >>>>>>> useBreadcrumb="true"> >>>>>>> >>>>>>> <!--********************************************************************************--> >>>>>>> <!-- REST API --> >>>>>>> <!--********************************************************************************--> >>>>>>> >>>>>>> <restConfiguration component="servlet" contextPath="/apiisp001" >>>>>>> bindingMode="json"> >>>>>>> <dataFormatProperty key="prettyPrint" value="true" /> >>>>>>> <apiProperty key="base.path" value="/apiisp001" /> >>>>>>> <apiProperty key="api.description" value="APIISP001 - Test API" /> >>>>>>> <apiProperty key="api.title" value="APIISP001" /> >>>>>>> <apiProperty key="api.version" value="1.0.0" /> >>>>>>> </restConfiguration> >>>>>>> >>>>>>> <!-- REST endpoints --> >>>>>>> <rest path="/apiisp001"> >>>>>>> <get uri="/1" id="isp.api.APIISP001.get.1"> >>>>>>> <route> >>>>>>> <!-- send the chunk to direct --> >>>>>>> <to uri="direct-vm:APIISP001.1"/> >>>>>>> </route> >>>>>>> </get> >>>>>>> </rest> >>>>>>> >>>>>>> </camelContext> >>>>>>> >>>>>>> </blueprint> >>>>>>> >>>>>>> One example for a working HTTP consumer find below >>>>>>> >>>>>>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" >>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>>>>> xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 >>>>>>> https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> >>>> >>>>>>> >>>>>>> <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.osgi.OsgiServletRegisterer" >>>>>>> init-method="register" >>>>>>> destroy-method="unregister"> >>>>>>> <property name="servletName" value="WEB2SFO" /> >>>>>>> <property name="alias" value="/web2sfo" /> >>>>>>> <property name="httpService" ref="httpService" /> >>>>>>> <property name="servlet" ref="camelServlet" /> >>>>>>> </bean> >>>>>>> >>>>>>> <bean id="servlet" >>>>>>> class="org.apache.camel.component.servlet.ServletComponent" /> >>>>>>> >>>>>>> <camelContext xmlns="http://camel.apache.org/schema/blueprint"> >>>>>>> <route> >>>>>>> <from uri="servlet://get?servletName=WEB2SFO" /> >>>>>>> <setBody> >>>>>>> <constant>execution of /web2sfo/get</constant> >>>>>>> </setBody> >>>>>>> </route> >>>>>>> </camelContext> >>>>>>> >>>>>>> </blueprint> >>>>>>> >>>>>>> Here I could later on add a security definition that works well.