You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Daniel Langevin <da...@shq.gouv.qc.ca> on 2020/08/17 15:44:02 UTC

Rép. : Camel REST DSL with servlet - API URL?

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 <ca...@mailbox.org>
À :	"users@camel.apache.org" <us...@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.

Re: Rép. : Camel REST DSL with servlet - API URL?

Posted by Gerald Kallas <ca...@mailbox.org>.
A servlet runs with a context (path).

As we'll define and deploy the Blueprint files/bundles independently they should nevertheless share the same servlet context to avoid the unique context path for every HTTP consumer.

Best
Gerald

> Alex Soto <al...@envieta.com> hat am 19.08.2020 19:19 geschrieben:
> 
>  
> 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 <ca...@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 <al...@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 <ca...@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 <da...@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 <ca...@mailbox.org>	
> >>>> À :	<us...@camel.apache.org>, Daniel Langevin <da...@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 <ca...@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 <da...@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="catshout@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 <ca...@mailbox.org>
> >>>>>> À : <us...@camel.apache.org>, Daniel Langevin <da...@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 <da...@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 <ca...@mailbox.org>
> >>>>>>> À : "users@camel.apache.org" <us...@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.

Re: Rép. : Camel REST DSL with servlet - API URL?

Posted by Alex Soto <al...@envieta.com>.
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 <ca...@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 <al...@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 <ca...@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 <da...@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 <ca...@mailbox.org>	
>>>> À :	<us...@camel.apache.org>, Daniel Langevin <da...@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 <ca...@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 <da...@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="catshout@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 <ca...@mailbox.org>
>>>>>> À : <us...@camel.apache.org>, Daniel Langevin <da...@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 <da...@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 <ca...@mailbox.org>
>>>>>>> À : "users@camel.apache.org" <us...@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.


Re: Rép. : Camel REST DSL with servlet - API URL?

Posted by Gerald Kallas <ca...@mailbox.org>.
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 <al...@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 <ca...@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 <da...@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 <ca...@mailbox.org>	
> >> À :	<us...@camel.apache.org>, Daniel Langevin <da...@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 <ca...@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 <da...@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="catshout@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 <ca...@mailbox.org>
> >>>> À : <us...@camel.apache.org>, Daniel Langevin <da...@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 <da...@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 <ca...@mailbox.org>
> >>>>> À : "users@camel.apache.org" <us...@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.

Re: Rép. : Camel REST DSL with servlet - API URL?

Posted by Alex Soto <al...@envieta.com>.
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 <ca...@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 <da...@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 <ca...@mailbox.org>	
>> À :	<us...@camel.apache.org>, Daniel Langevin <da...@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 <ca...@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 <da...@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="catshout@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 <ca...@mailbox.org>
>>>> À : <us...@camel.apache.org>, Daniel Langevin <da...@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 <da...@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 <ca...@mailbox.org>
>>>>> À : "users@camel.apache.org" <us...@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.


Re: Rép. : Camel REST DSL with servlet - API URL?

Posted by Daniel Langevin <da...@shq.gouv.qc.ca>.
Hi,

i don't think is possible, because only one consumer at a time. until the message is delivered

May be this aproach help you.


1st Blueprint Context named: WEB2FSO, can  have the definition of all your Rest Definitions.

<rest path="/API001">
 <get uri="/">
      <to pattern="InOut" uri="direct-vm:API001-WEB2FSO"/>
 </get>
</rest>

<rest path="/API002">
 <get uri="/">
      <to pattern="InOut" uri="direct-vm:API002-WEB2FSO"/>
 </get>
</rest>

..
..


2nd Blueprint Context named API001
<route ...
  <from uri="direct-vm:API001 ...


3rd Blueprint Context named API002
<route ...
  <from uri="direct-vm:API002 ...





Daniel

>>> 
De : 	Gerald Kallas <ca...@mailbox.org>
À :	<us...@camel.apache.org>
Date : 	2020-08-19 08:00
Objet : 	Re: Rép. : Camel REST DSL with servlet - API URL?

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 <da...@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 <ca...@mailbox.org>	
> À :	<us...@camel.apache.org>, Daniel Langevin <da...@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 <ca...@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 <da...@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="catshout@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 <ca...@mailbox.org>
> > > À : <us...@camel.apache.org>, Daniel Langevin <da...@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 <da...@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 <ca...@mailbox.org>
> > > > À : "users@camel.apache.org" <us...@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.

Re: Rép. : Camel REST DSL with servlet - API URL?

Posted by Gerald Kallas <ca...@mailbox.org>.
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 <da...@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 <ca...@mailbox.org>	
> À :	<us...@camel.apache.org>, Daniel Langevin <da...@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 <ca...@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 <da...@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="catshout@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 <ca...@mailbox.org>
> > > À : <us...@camel.apache.org>, Daniel Langevin <da...@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 <da...@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 <ca...@mailbox.org>
> > > > À : "users@camel.apache.org" <us...@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.

Re: Rép. : Camel REST DSL with servlet - API URL?

Posted by Daniel Langevin <da...@shq.gouv.qc.ca>.
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 <ca...@mailbox.org>
À :<us...@camel.apache.org>, Daniel Langevin <da...@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 <ca...@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 <da...@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="catshout@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 <ca...@mailbox.org>
> > À :	<us...@camel.apache.org>, Daniel Langevin <da...@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"
( '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 <da...@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 <ca...@mailbox.org>
> > > À :	"users@camel.apache.org" <us...@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"
( '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"
( '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.

Re: Rép. : Camel REST DSL with servlet - API URL?

Posted by Gerald Kallas <ca...@mailbox.org>.
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 <ca...@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 <da...@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="catshout@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 <ca...@mailbox.org>
> > À :	<us...@camel.apache.org>, Daniel Langevin <da...@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 <da...@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 <ca...@mailbox.org>
> > > À :	"users@camel.apache.org" <us...@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.

Re: Rép. : Camel REST DSL with servlet - API URL?

Posted by Gerald Kallas <ca...@mailbox.org>.
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 <da...@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="catshout@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 <ca...@mailbox.org>
> À :	<us...@camel.apache.org>, Daniel Langevin <da...@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 <da...@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 <ca...@mailbox.org>
> > À :	"users@camel.apache.org" <us...@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.

Re: Rép. : Camel REST DSL with servlet - API URL?

Posted by Daniel Langevin <da...@shq.gouv.qc.ca>.
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="catshout@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 <ca...@mailbox.org>
À :	<us...@camel.apache.org>, Daniel Langevin <da...@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 <da...@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 <ca...@mailbox.org>
> À :	"users@camel.apache.org" <us...@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.

Re: Rép. : Camel REST DSL with servlet - API URL?

Posted by "Gerald Kallas - mailbox.org" <ca...@mailbox.org>.
This did the trick. Many thanks, Alex :)

Sent by my mobile device
- Gerald Kallas

> Am 18.08.2020 um 18:48 schrieb Alex Soto <al...@envieta.com>:
> 
> I think you are missing:
> 
> 
>    <endpointProperty key="servletName" value="APIISP001”/>
> 
> 
> In the <restConfiguration> 
> 
> Best regards,
> Alex soto
> 
> 
> 
> 
>> On Aug 18, 2020, at 3:32 AM, Gerald Kallas <ca...@mailbox.org> wrote:
>> 
>> 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 <da...@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 <ca...@mailbox.org>
>>> À :    "users@camel.apache.org" <us...@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.
> 


Re: Rép. : Camel REST DSL with servlet - API URL?

Posted by Alex Soto <al...@envieta.com>.
I think you are missing:


	<endpointProperty key="servletName" value="APIISP001”/>


In the <restConfiguration> 

Best regards,
Alex soto




> On Aug 18, 2020, at 3:32 AM, Gerald Kallas <ca...@mailbox.org> wrote:
> 
> 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 <da...@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 <ca...@mailbox.org>
>> À :	"users@camel.apache.org" <us...@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.


Re: Rép. : Camel REST DSL with servlet - API URL?

Posted by Gerald Kallas <ca...@mailbox.org>.
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 <da...@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 <ca...@mailbox.org>
> À :	"users@camel.apache.org" <us...@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.