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.