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&amp;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.

Reply via email to