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.